证明找到最小生成树的新算法的最优性

时间:2014-11-25 05:54:57

标签: algorithm graph graph-theory discrete-mathematics minimum-spanning-tree

下面是一个查找最小生成树的算法:

MSTNew(G, w)
   Z ← empty array
   for each edge e in E, taken in random order do
       Z ← Z ∪ e
       if Z has a cycle c then
           let e be a maximum-weight edge on c
           Z ← Z − e
   return (Z)

此算法是否始终返回最佳MST解决方案?


我会说是的。它有点像伪装的Kruskals算法 - 排序。

作为图论的新手,我真的没有太多的想法。有人会有任何想法或建议吗?

1 个答案:

答案 0 :(得分:1)

是的,IMO算法输出最小生成树。

非正式证明

在每次迭代中,我们只删除那个循环中最昂贵边缘的边。这样的边缘永远不能包含在MST中(通过交换参数)。因此,我们总是排除那些永远不能成为MST一部分的边缘。

此外,算法的输出始终是生成树,因为我们只在新边缘导致循环时才删除边缘。

但请注意,此算法的效率非常低,因为在每次迭代时,您不仅要检查周期(如Kruskal中),还要搜索周期中的最大成本优势。