确定是否存在包含2个不同边集的边的MST

时间:2013-04-27 11:23:28

标签: algorithm graph-algorithm minimum-spanning-tree kruskals-algorithm

设G =(V,E)是加权,连通和无向图。设T1和T2为2个不同的MST。假设我们可以写出E =(A1 U B U A2),使得:
B是T1和T2的边缘的交点,并且
A1 = T1 - B
A2 = T2 - B

假设G中的每个MST T都包含B的所有边,找到一个算法,该算法决定是否存在一个MST T,其中包含A1中的至少一个边和A2中的至少一个边。

编辑:我放弃了这里的部分。我认为它弊大于利。

1 个答案:

答案 0 :(得分:1)

你应该对你的边缘进行排序,使红色边缘偏向蓝色边缘以供选择。然后你就可以使用任何与Prim算法相同的MST算法:

  

如果图表为空,则立即完成。因此,我们假设   除此以外。该算法以包含单个树的树开始   顶点,并且一次一个边缘不断增大其大小,直到   它跨越所有顶点。输入:非空连接加权图   顶点V和边E(权重可以是负数)。初始化:   Vnew = {x},其中x是来自V,Enew的任意节点(起始点)   = {}重复直到Vnew = V:选择具有最小权重的边{u,v},使得u处于Vnew而v不是(如果有多个边   相同的重量,可以挑选任何一个)添加v到Vnew,{u,v}   Enew输出:Vnew和Enew描述最小生成树