有人能想出一种方法来修改Kruskal算法的最小生成树,以便它必须包含某个边(u,v)吗?
答案 0 :(得分:5)
我可能会感到困惑,但据我记忆,kruskal可以处理负重,因此你可以给这条边-infinity
重量。
-infinity
,而是一个足够低的数字
足够重要,以至于它不能被忽略,例如对于E中的每个e都有-1 * sigma(|weight(e)|)
。答案 1 :(得分:1)
如果您可以修改图形结构,则可以删除顶点u
和v
,并将其替换为具有边缘u和v的新顶点w。如果是重复边缘,请选择重量最小的边缘。
答案 2 :(得分:0)
如果我们知道(u,v)的边权重,我们也可以简单地将它添加到我们排序的边权重列表的前面(因为Kruskal按递增顺序对边权重进行排序)。在这种情况下,边(u,v)将是我们树中包含的第一条边,Kruskal将正常运行,用(u,v)找到最小权重的生成树。