prims 和 boruvka 算法的区别

问题描述

我正在研究 MST 算法。我很想找到 prims 和 boruvka 算法之间的主要区别,但是除了它们的实现和算法之外,在线资源对它们没有太多可说的。如果有人可以解释,那将是很大的帮助。谢谢!

解决方法

两种算法都使用以下事实

  • 对于每个顶点 v,都存在一个最小生成树 T,使得与 v 相关的最便宜的边属于 T。

  • 对于每条边 e,包含 e 的(最小)生成树与 e 收缩的图的(最小)生成树自然一一对应。

Prim 和 Borůvka 以不同的方式利用这些事实。 Prim 选择一个根顶点 r 并反复收缩与 r 相关的最便宜的边(通常的描述是避免图收缩但与此等效),直到只剩下 r 为止。 Borůvka 重复地“并行”收缩所有最便宜的事件边,直到只剩下一个顶点。

您可以通过混合和匹配收缩策略来创建各种最小生成树算法。