MST经过修改

时间:2012-05-13 19:10:02

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

有人能想出一种方法来修改Kruskal算法的最小生成树,以便它必须包含某个边(u,v)吗?

3 个答案:

答案 0 :(得分:5)

我可能会感到困惑,但据我记忆,kruskal可以处理负重,因此你可以给这条边-infinity重量。

  • 当然它实际上不是-infinity,而是一个足够低的数字 足够重要,以至于它不能被忽略,例如对于E中的每个e都有-1 * sigma(|weight(e)|)

答案 1 :(得分:1)

如果您可以修改图形结构,则可以删除顶点uv,并将其替换为具有边缘u和v的新顶点w。如果是重复边缘,请选择重量最小的边缘。

答案 2 :(得分:0)

如果我们知道(u,v)的边权重,我们也可以简单地将它添加到我们排序的边权重列表的前面(因为Kruskal按递增顺序对边权重进行排序)。在这种情况下,边(u,v)将是我们树中包含的第一条边,Kruskal将正常运行,用(u,v)找到最小权重的生成树。