【发布时间】:2012-05-13 19:10:01
【问题描述】:
谁能想出一种方法来修改 Kruskal 的最小生成树算法,使其必须包含某个边 (u,v)?
【问题讨论】:
标签: algorithm graph-algorithm minimum-spanning-tree kruskals-algorithm
谁能想出一种方法来修改 Kruskal 的最小生成树算法,使其必须包含某个边 (u,v)?
【问题讨论】:
标签: algorithm graph-algorithm minimum-spanning-tree kruskals-algorithm
我可能会感到困惑,但据我记得,kruskal 可以处理负权重,所以你可以给这个优势-infinity 权重。
-infinity,而是一个足够小的数字
足够重要以至于不能被忽略,例如 -1 * sigma(|weight(e)|) 用于 E 中的每个 e。【讨论】:
如果您可以修改图结构,您可以删除顶点u 和v,并将它们替换为具有边 u 和 v 的新顶点 w。在重复边的情况下,选择权重最小的。
【讨论】:
如果我们知道 (u,v) 的边权重,我们也可以简单地将其添加到边权重排序列表的前面(因为 Kruskal 以升序对边权重进行排序)。在这种情况下,边 (u,v) 将是我们树中包含的第一条边,Kruskal 将正常运行,找到具有 (u,v) 的最小权重的生成树。
【讨论】: