通用最小生成树

时间:2011-11-16 11:42:28

标签: algorithm tree minimum-spanning-tree

我正在读自己关于Cormen的最小生成树等。以下是 通用最小生成树。

  

假设我们有一个连通的,无向图G =(V,E)有一个权重   函数w:E-> R,我们希望找到G的最小生成树。   在这里,我们使用贪婪的方法。这种贪婪的策略被俘获了   遵循“通用”算法,增长最小生成树   一次一个边缘。该算法管理一组边A,   保持以下循环不变。

     

在每次迭代之前,A是某个最小生成树的子集。

GENERIC-MST(G,w) 
A = NULL
while A is not a spanning tree 
  do find an edge (u, v) that is safe for A 
  A = A ∪ {(u, v)}
end while

return A

问题

  1. authore在不变量中的意思是“A”是某些最小值的子集 生长树?这句话中的“一些”是什么?我教过只有一个MST。

  2. 在上面的伪代码中,作者的意思是“A不是生成树”? 即,循环退出的方式和时间?

  3. 在伪代码中,“some”最小生成树,这里我的下划线只有一个。 我是对的吗?

  4. 任何人都可以用小例解释一下吗?

    谢谢!

4 个答案:

答案 0 :(得分:4)

1。绝对不是。 MST不一定是唯一的。例如:

所有边缘都具有相同的重量。

u --- v
|     |
|     |
w --- x

上图有4个MST,删除任何边。

2。 T = (V,e)中的生成树G = (V,E)就是|e| = |V|-1

3。否。

答案 1 :(得分:0)

  1. 当您说图表的生成树是唯一的时,您是正确的。但是当图的所有边长都不同时就是这种情况。如上面的答案所解释的,具有相等边长的图可以具有许多不同的生成树(当然它们都具有相同的总重量)。
  2. 当您在生成树中包含图形的所有顶点时,存在while循环。为此,您可以在while循环中添加一个检查。

答案 2 :(得分:0)

  1. 根据@davin

  2. 不正确
  3. 该算法维护您拥有林的不变量,但在添加足够的边之前,林不会跨越图形。因此,您必须不断添加边缘,直到它们都不安全(此时循环中断)。

  4. 见1.

答案 3 :(得分:0)

  1. 这是假的。即使只有两条边相等,图形也可能有很多MST。

  2. A 不是最小生成树,因为:

    2.1首先 A 不是树 - 它已断开连接。

    2.2它没有跨越图表

    当满足上述条件时,循环将退出

  3. 说它在某些 MST中是正确的,因为它有很多。