它是最小生成树问题的正确解决方案吗?
Is it right solution for minimum spanning tree question?
我有一道考试题,我想知道我的方法是否适合这个题。
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我有这个问题的答案只是想知道我的方法是否正确)
或者可能是另一种方式,使用 Prim
或 Kruskal
的算法,但首先将 edge e
添加到图中(因为它必须在树中)然后通过常规算法步骤从优先级队列中弹出(例如fibonacci heap
),以权重值递增的顺序继续添加边,算法本身将确保没有循环并且树跨越图(那么您不需要额外的步骤来遍历循环并删除与 e
).
不同的 max-weight 边
我有一道考试题,我想知道我的方法是否适合这个题。
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我有这个问题的答案只是想知道我的方法是否正确)
或者可能是另一种方式,使用 Prim
或 Kruskal
的算法,但首先将 edge e
添加到图中(因为它必须在树中)然后通过常规算法步骤从优先级队列中弹出(例如fibonacci heap
),以权重值递增的顺序继续添加边,算法本身将确保没有循环并且树跨越图(那么您不需要额外的步骤来遍历循环并删除与 e
).