Algorithm 一种求解矛盾生成树的新算法的最优性证明

Algorithm 一种求解矛盾生成树的新算法的最优性证明,algorithm,graph,graph-theory,discrete-mathematics,minimum-spanning-tree,Algorithm,Graph,Graph Theory,Discrete Mathematics,Minimum Spanning Tree,下面是一个查找生成树的算法: STNew(G, w) Z ← empty array for each edge e in E, taken in random order do Z ← Z ∪ e if Z has a cycle c then let e' be a maximum-weight edge on c Z ← Z − e' return (Z) 这个算法总是返回生成树吗 我会说是的。它

下面是一个查找生成树的算法:

STNew(G, w)
   Z ← empty array
   for each edge e in E, taken in random order do
       Z ← Z ∪ e
       if Z has a cycle c then
           let e' be a maximum-weight edge on c
           Z ← Z − e'
   return (Z)
这个算法总是返回生成树吗


我会说是的。它看起来有点像乔装的Kruskals算法

我试图用矛盾来证明这一点。见下文

假设Z不是生成树。这意味着图表中存在循环或断开连接。由于算法的第4行,因此不能有循环

但现在,我如何证明没有断开连接


作为一个对图论相当陌生的人,除此之外,我真的没有什么别的想法。有人会有什么想法或建议吗?

是的,算法总是会找到生成树(如果存在这种树,即图形有一个源)。但不确定是否找到了最小生成树。您已经证明结果图中没有循环,因此我们只需要显示连接性

证明结果图是连通的:

假设不是,并且有(至少)2个连接的组件U1、U2。
原始图形是连接的,因此有一些边连接
U1
,而
U2
,让它成为
e
。检查选择了
e
并将其添加到
Z
的点。
现在,由于
U1
U2
未连接,因此有一点
e
已被删除(否则它们已连接)。当我们迭代某个边
e'
时,就让它这样吧。所涉及的循环包含
e
(因为它已被移除),因此它包含
u1
中的节点
u1
,以及
u2
中的节点
u2
,从而
e=(u1,u2)
。W.L.O,让循环为
u1-v1-v2-…-vk-u2-u1
。但请注意,在删除
e
后,仍然有一个路径
u1-v1-v2-…-vk-u2
连接
u1
u2
,因此组件仍然是连接的。这对于将来的任何迭代都是正确的,这意味着组件
U1
U2
在结果图中是连接的。
矛盾


QED

我们讨论的是有向图还是无向图?该算法不适用于有向图。这将适用于无向图。Thansk但是,嗯,我发现这个证明有点难理解。@britney它有点长,因为它非常简化为小步骤。通读一遍,如果你有误解的具体步骤,请告诉我。另外一件事:我们是否应该证明它也包含G的所有顶点?我们是否假设U1和U2没有连接?@britney顶点在那里,我们正在创建的树默认具有所有顶点,并设置了结果边。假设U1和U2不连通是因为图本身不连通,所以必须有两个不连通的分量。