Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.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 生长在克鲁斯卡尔的边缘组';s算法_Algorithm_Graph Algorithm_Minimum Spanning Tree_Kruskals Algorithm - Fatal编程技术网

Algorithm 生长在克鲁斯卡尔的边缘组';s算法

Algorithm 生长在克鲁斯卡尔的边缘组';s算法,algorithm,graph-algorithm,minimum-spanning-tree,kruskals-algorithm,Algorithm,Graph Algorithm,Minimum Spanning Tree,Kruskals Algorithm,设G=(V,E)是一个加权连通无向图。设T为在Kruskal算法中生长的边集,在k次迭代后停止(因此T可能包含少于| E |-1条边)。设W(T)为该集合的加权和。 设T'是一个酰基边集,使得| T |=| T'|。证明W(T) 设T'为边集,使|T |=|T'|。证明了W(T)1顶点和T是G的最小生成树。让e成为T中的一条边。 然后通过识别e的两个端点a和b,将T\{e}投影到从G获得的图G'的最小生成树。相反,如果T'是G的一组边,这些边投影到G'的最小生成树,则T'∪ {e} 是G的最小生

设G=(V,E)是一个加权连通无向图。设T为在Kruskal算法中生长的边集,在k次迭代后停止(因此T可能包含少于| E |-1条边)。设W(T)为该集合的加权和。 设T'是一个酰基边集,使得| T |=| T'|。证明W(T) 设
T'
为边集,使
|T |=|T'|
。证明了
W(T)1
顶点和
T
G
的最小生成树。让
e
成为
T
中的一条边。 然后通过识别
e
的两个端点
a
b
,将
T\{e}
投影到从
G
获得的图
G'
的最小生成树。相反,如果
T'
G
的一组边,这些边投影到
G'
的最小生成树,则
T'∪ {e} 
G
的最小生成树

证明:让
p:G->G'
作为标识
a
b
的投影

然后
p(T\{e})
没有循环

假设
p(T\{e}
包含一个循环
C
。然后
p^(-1)(C)
必须是连接
a
b
的路径。但是
T
将包含循环
p^(-1)(C)∪ {e} 
,与
T
是树的前提相矛盾

因此
p(T\{e}
G'
的边的无圈集,基数
N-2
,这意味着(见上文)它是一个生成树

T'
G'
S=p^(-1)(T')
的最小生成树

然后
S∪ {e} 
没有循环

如果在
S
中有一个循环,它将投射到
T'
中的一个循环,因此
S中的每个循环∪ {e} 
必须包含
e
。假设
C
S中的一个循环∪ {e} 
。然后
C\{e}
是连接
a
b
的路径,因此
C\{e}
投影到
G'
中的一个循环,因为
a
b
投影到
G'
的同一顶点。这与
T'
是树的前提相矛盾

所以
S∪ {e} 
是基数
N-1
的边集,没有圈,因此(见上文)是
G
的生成树

然后
W(T)G'
投影

T
成为算法选择的边集

然后
p(T\{e})
是Kruskal算法在
G'
上选择的边集。因此,通过上面的引理,
T
G
的最小生成树

(好吧,也许维基百科中的证明更简单,但我想制作一个不同的证明。)

T'
为边集,使
|T |=|T'|
。证明了
W(T)1
顶点和
T
G
的最小生成树。让
e
成为
T
中的一条边。 然后通过识别
e
的两个端点
a
b
,将
T\{e}
投影到从
G
获得的图
G'
的最小生成树。相反,如果
T'
G
的一组边,这些边投影到
G'
的最小生成树,则
T'∪ {e} 
G
的最小生成树

证明:让
p:G->G'
作为标识
a
b
的投影

然后
p(T\{e})
没有循环

假设
p(T\{e}
包含一个循环
C
。然后
p^(-1)(C)
必须是连接
a
b
的路径。但是
T
将包含循环
p^(-1)(C)∪ {e} 
,与
T
是树的前提相矛盾

因此
p(T\{e}
G'
的边的无圈集,基数
N-2
,这意味着(见上文)它是一个生成树

T'
G'
S=p^(-1)(T')
的最小生成树

然后
S∪ {e} 
没有循环

如果在
S
中有一个循环,它将投射到
T'
中的一个循环,因此
S中的每个循环∪ {e} 
必须包含
e
。假设
C
S中的一个循环∪ {e} 
。然后
C\{e}
是连接
a
b
的路径,因此
C\{e}
投影到
G'
中的一个循环,因为
a
b
投影到
G'
的同一顶点。这与
T'
是树的前提相矛盾

所以
S∪ {e} 
是基数
N-1
的边集,没有圈,因此(见上文)是
G
的生成树

然后
W(T)G'
投影

T
成为算法选择的边集

然后
p(T\{e})
是Kruskal算法在
G'
上选择的边集。因此,通过上面的引理,
T
G
的最小生成树


(好的,也许维基百科中的证明更简单,但我想制作一个不同的证明。)

谢谢!你说得对。我忘了提到T'Updated中没有循环。在这里移植正确性证明有什么意义吗?是的,我仍然不知道如何证明它…请注意,我们不知道t'是否连接抱歉,不干净!你说得对。我忘了提到T'Updated中没有循环。在这里移植正确性证明有什么意义吗?是的,我仍然不知道如何证明它…请注意,我们不知道t'是否连接抱歉,不清楚
   1
 A---B
2 \ / 3
   C
   | 4
   D
W(T') = 6 < W(T) = 7
V = |T'| + k
V = |T| + 1 = |T'| + 1
W(p(T \ {e})) = W(T \ {e}) <= W(S) = W(T'')