Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm kruskal算法生成的MST性质的若干问题_Algorithm - Fatal编程技术网

Algorithm kruskal算法生成的MST性质的若干问题

Algorithm kruskal算法生成的MST性质的若干问题,algorithm,Algorithm,证明了kruskal算法生成的ST是一个MST。我们可以称之为ST1。 现在的问题是:证明没有其他ST,其最大加权边小于ST1中的最大加权边。矛盾证明可能有助于证明这一主张 在由N节点组成的MST中,每个(N-1)边用于连接两个子树。假设存在两个子树A和B,它们之间的边E在ST1中的权重最大。此边E非常重要,因为它连接了子树A和B。没有E,我们无法连接A和B。(除非存在另一条可以这样做的边) 现在,为了试图找到与您的主张相矛盾的地方,让我们假设在子树a和B之间存在另一条边F,假设F的权重较小。然

证明了kruskal算法生成的ST是一个MST。我们可以称之为ST1。
现在的问题是:证明没有其他ST,其最大加权边小于ST1中的最大加权边。

矛盾证明可能有助于证明这一主张

在由
N
节点组成的MST中,每个
(N-1)
边用于连接两个子树。假设存在两个子树
A
B
,它们之间的边
E
在ST1中的权重最大。此边
E
非常重要,因为它连接了子树
A
B
。没有
E
,我们无法连接
A
B
。(除非存在另一条可以这样做的边)

现在,为了试图找到与您的主张相矛盾的地方,让我们假设在子树
a
B
之间存在另一条边
F
,假设
F
的权重较小。然后,我们就不需要使用
E
,我们可以以较小的成本连接
A
B


然而,如果我们确实有这样一条边
F
,那么在Kruskal算法中使用的边优先级队列将在
E
弹出之前弹出该边
F
。(即,边将存储在一个最小堆中,并将按重量的递增顺序弹出),因为
e
a
B
中包含的节点之间弹出的第一条边(即,第一条能够连接子树
a
B
)我们可以声明不存在这样的边
F
,而
E
是具有最小权重的边,可以连接子树
A
B
。无论您如何构造生成树,当您尝试连接子树
a
B
时,没有任何权重较小的边
F
。所以,要有一个生成树,它必须包含所有的
N
节点,你必须使用这个边
E

这是你的问题:“证明没有其他ST,它的最大加权边比ST1中的最大加权边小。”?是的,这就是我的意思……我为我的拙劣描述感到抱歉。我根据你的评论发表了一个答案,但是你应该考虑重新措辞你的问题有一个清晰的问题陈述。就目前的情况而言,许多用户可能很难理解你的确切问题。好的,我现在会仔细阅读你的答案并重新表述我的陈述。这是我第一次在这个在线社区上提问。衷心感谢你的帮助!!