【问题标题】:Proving optimality for a new algorithm that finds minimum spanning tree证明找到最小生成树的新算法的最优性
【发布时间】:2025-11-28 05:05:01
【问题描述】:

下面是找到最小生成树的算法:

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 算法 - 有点。

作为图论的新手,除此之外我真的没有太多想法。有人有什么想法或建议吗?

【问题讨论】:

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


【解决方案1】:

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

非正式证明

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

此外,算法的输出始终是生成树,因为只有当新边产生循环时我们才会删除边。

但是,请注意,此算法效率极低,因为在每次迭代中,您不仅要检查循环(如在 Kruskal 中),还要搜索循环中的最大成本边。

【讨论】:

  • 嘿,谢谢!我不明白以下内容:we always exclude those edges which can never be a part of the MST.。 “交换论点”如何实现这一点?
  • @britney 检查此链接(浏览到循环属性)。 cs.umd.edu/class/sum2005/cmsc451/mst.pdf