我正在读自己关于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
问题
authore在不变量中的意思是“A”是某些最小值的子集 生长树?这句话中的“一些”是什么?我教过只有一个MST。
在上面的伪代码中,作者的意思是“A不是生成树”? 即,循环退出的方式和时间?
在伪代码中,“some”最小生成树,这里我的下划线只有一个。 我是对的吗?
任何人都可以用小例解释一下吗?
谢谢!
答案 0 :(得分:4)
1。绝对不是。 MST不一定是唯一的。例如:
所有边缘都具有相同的重量。
u --- v
| |
| |
w --- x
上图有4个MST,删除任何边。
2。 T = (V,e)
中的生成树G = (V,E)
就是|e| = |V|-1
3。否。
答案 1 :(得分:0)
答案 2 :(得分:0)
根据@davin
该算法维护您拥有林的不变量,但在添加足够的边之前,林不会跨越图形。因此,您必须不断添加边缘,直到它们都不安全(此时循环中断)。
见1.
答案 3 :(得分:0)
这是假的。即使只有两条边相等,图形也可能有很多MST。
A 不是最小生成树,因为:
2.1首先 A 不是树 - 它已断开连接。
2.2它没有跨越图表
当满足上述条件时,循环将退出
说它在某些 MST中是正确的,因为它有很多。