是最小生成树问题的正确解决方案吗?

时间:2017-01-21 15:55:01

标签: algorithm minimum-spanning-tree

我从考试中得到一个问题,我想知道我的方法是否适合这个问题。

Input: graph G(V,E),weight function f:E->R and edge e=(u,v).
output: algorithm that finds a minimum spanning tree with edge e in it.

我的解决方案是运行kruskal的算法,然后添加边e,如果它不存在,它应该做一个圆,因为树是n-1边,所以我们通过圆并删除最大的边(不是e)存在于那个圈子里。

是我的解决方案吗?怎么证明它是否存在,如果没有,你能告诉我为什么吗?

(P.S我有这个问题的解决方案,只想知道我的方法是否正确)

1 个答案:

答案 0 :(得分:4)

或者可能是另一种方式,使用PrimKruskal的算法,但首先将edge e添加到图表中(因为它必须在树中),然后通过使用常规算法步骤从优先级队列(例如,fibonacci heap)弹出,继续以增加的权重值顺序添加边缘,算法本身将确保没有循环并且树跨越图形(然后您不需要额外的步骤来遍历循环并移除与e不同的最大权重边缘。