在样本问题中,我给出了加权图G =(V,E)的MST T.问题是,如果要将新的顶点v及其所有边添加到图中,那么用什么o(| V | log | V |)算法来计算这个新G *的新MST =(VU v, E *)。
到目前为止我唯一的想法是:
add min( out(v) ) to T
for each edge e in out(v) do
let u be the other vertex of e
if there exists a lower weight path from v to u then
remove all edges in that path from T
add e to T
两个问题:
我该怎么做?
答案 0 :(得分:2)
您也可以在线性时间内完成(如果新边数(比如k)与n相比要少得多)。我们知道新的MST应该覆盖新的顶点。因此必须添加至少一个新边。因此必须将具有最小值的边添加到MST(您可以证明这一点);可能会发生多个新边缘的变化。 因此,按升序排序新边 将第一个添加到图表中;现在我们有了一个新的周期。执行图遍历查找循环并删除此循环中具有最大值的边。 现在添加其他新边缘并重复该过程。
复杂度是新添加边数(大致线性)的(n + m)倍。
答案 1 :(得分:0)
最后看到你知道你的MST将在MST的边缘之中并添加了新边
因此,添加所有新边将得到图形。做任何正常的MST算法(Boruvka,Kruskal,Prims)就可以得到你的解决方案。
由于这里的边是=(V-2)最初(V-1)加上= 2V-1,算法将达到你需要的时间限制。