[英]Min cost edge deletions in tree to separate all leaves in a tree
这是一个更大的问题,我已经归结为以下问题。 给定具有正边缘权重的加权树,并且具有k个叶子。 叶子是在树中具有恰好一个相邻节点的节点。 我需要从树中删除一些边缘,以便树分割成k个组件,每个组件只包含原始树中的一个叶节点。 换句话说,我需要删除边缘,以便原始树中的所有叶子与原始树的每个其他叶子分离/断开。
我需要这样做,以便删除边缘的权重(成本)总和最小化。 显示需要删除k-1边缘是微不足道的。 所以我需要最小化这些k-1边缘的权重之和。
这样做的最佳方法是什么? 任何提示将不胜感激。 谢谢!
我认为贪婪的算法在这里工作。
即删除生成新组件的最低权重边缘并重复k-1次。
请注意,您必须小心图形,例如:
d <-A-> B->Ç
如果首先删除B-> C,则删除A-> B不会生成新组件,因为B不是叶子,因此不需要分开。
换句话说,当选择最低权重边缘时,不要包括任何仍未通向叶节点的边缘。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.