下面是一个查找最小生成树的算法:
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算法 - 排序。
作为图论的新手,我真的没有太多的想法。有人会有任何想法或建议吗?
答案 0 :(得分:1)
是的,IMO算法输出最小生成树。
非正式证明:
在每次迭代中,我们只删除那个循环中最昂贵边缘的边。这样的边缘永远不能包含在MST中(通过交换参数)。因此,我们总是排除那些永远不能成为MST一部分的边缘。
此外,算法的输出始终是生成树,因为我们只在新边缘导致循环时才删除边缘。
但请注意,此算法的效率非常低,因为在每次迭代时,您不仅要检查周期(如Kruskal中),还要搜索周期中的最大成本优势。