[英]Generic 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
问题
作者在不变量中表示“ A”是某个最小生成树的子集是什么意思? 这句话中的“一些”是什么? 我教过只有一个MST。
在上面的伪代码中,作者所说的“ A不是生成树”是什么意思? 即,while循环如何以及何时退出?
在“一些”最小生成树的伪代码中,这里我的理解只是一个。 我对吗?
有人可以用一个小例子来解释吗?
谢谢!
1.绝对不会。 MST不一定是唯一的。 例如:
所有边缘的重量均相等。
u --- v
| |
| |
w --- x
上图通过删除任何边具有4个MST。
2. G = (V,E)
的生成树T = (V,e)
使得|e| = |V|-1
|e| = |V|-1
3.没有
根据@davin错误
该算法将保持您拥有森林的不变性,但是在您添加足够的边缘之前,森林不会跨越图形。 因此,您必须继续添加边,直到没有一个边安全为止(这时循环中断)。
见1。
这是错误的。 即使只有两个边相等,图也可能具有许多MST。
A不是最小生成树,原因是:
2.1首先, A不是树-它是断开连接的。
2.2不跨越图形
满足以上条件时,循环将退出
正确地说,它存在于某些 MST中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.