【问题标题】:MST with modification修改后的 MST
【发布时间】:2012-05-13 19:10:01
【问题描述】:

谁能想出一种方法来修改 Kruskal 的最小生成树算法,使其必须包含某个边 (u,v)?

【问题讨论】:

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


    【解决方案1】:

    我可能会感到困惑,但据我记得,kruskal 可以处理负权重,所以你可以给这个优势-infinity 权重。

    • 当然不是-infinity,而是一个足够小的数字 足够重要以至于不能被忽略,例如 -1 * sigma(|weight(e)|) 用于 E 中的每个 e。

    【讨论】:

    • 你是对的; Kruskal 的算法根本不关心权重的值,只关心它们的相对顺序。权重仅用于对边进行排序,边按顺序添加,创建循环的除外。
    【解决方案2】:

    如果您可以修改图结构,您可以删除顶点uv,并将它们替换为具有边 u 和 v 的新顶点 w。在重复边的情况下,选择权重最小的。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-03
        • 1970-01-01
        • 1970-01-01
        • 2020-03-24
        • 2020-04-07
        • 1970-01-01
        • 1970-01-01
        • 2019-07-06
        相关资源
        最近更新 更多