最小生成树算法

时间:2017-12-05 23:04:13

标签: algorithm graph tree minimum-spanning-tree

您好我是Algorithms的新手,并尝试了解最小生成树。

我研究了Cormen,Leiserson,Rivest和Stein的“算法导论”一书。我在理解句子方面遇到了一个难题。“如果A中没有边缘穿过切口,那么切割尊重一组边缘。”

让我通过放置给定示例中的图片来清楚我的理解。 A minimum spanning tree for a connected graph.

1 way of viewing a cut (S,V-S) of the previous graph.

所以我的问题是当我们切割图形时,如第二个图所示,我们也不应该遮盖边缘(d,e),因为它不会越过切口?

如果你为我澄清这一点,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

我认为这是kruskal的MST算法。从其余的子树中剪切每个子树的分区。我们需要使用切割的想法,因为当我们连接两个子树时,我们不需要循环,也不需要这两个子树之间的最小成本边缘。

在您的图片中,(d,e)的费用为 9 ,因此它不是子树。您可以将其视为未评估的边缘。您的子树是(a,b)和(i,c,f,g,h),因此剪切必须将这些子树与其他边缘区分开来。

阴影边缘意味着它们在MST中肯定是因为它们具有最低成本。

以下是您算法的彩绘图片:

在第一次迭代中,您首先剪切黑色,因为边缘(g,h)具有最低成本。然后你得到红色切割,因为在(g,h) gf具有最低成本并且因为这两个子树彼此连接之后我们使用一个切割。等等...我希望你能进一步执行它。你可以在这里看到Kruskal's算法的工作原理。

enter image description here