树中的最小成本边删除以分隔树中的所有叶

时间:2012-10-06 18:57:23

标签: algorithm graph tree

这是一个更大的问题,我已经归结为以下问题。给定具有正边缘权重的加权树,并且具有k个叶子。叶子是在树中具有恰好一个相邻节点的节点。我需要从树中删除一些边缘,以便树分割成k个组件,每个组件只包含原始树中的一个叶节点。换句话说,我需要删除边缘,以便原始树中的所有叶子与原始树的每个其他叶子分离/断开。

我需要这样做,以便最小化删除边的权重(成本)之和。显示需要删除k-1边缘是微不足道的。所以我需要最小化这些k-1边的权重之和。

这样做的最佳方法是什么?任何提示将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:1)

我认为贪婪算法可以在这里工作。

即。删除生成新组件的最低权重边,并重复k-1次。

请注意,您必须小心使用以下图表:

d< -A-> B-&以及c

如果您首先删除B-> C,则删除A-> B不会生成新组件,因为B不是叶子,因此不需要分开。

换句话说,在选择最低权重边时,不要包含任何仍然不会通向叶节点的边。