【问题标题】:How to efficiently construct a connected graph?如何高效地构建连通图?
【发布时间】:2010-11-20 03:38:39
【问题描述】:

为了好玩,我正在学习图论,我遇到了这个问题。给定一组顶点 V,一组边 E,以及 E 中每条边的权重,我如何有效地构造一个图 G,使得:

  • G 已连接(所有顶点都通过某个路径连接)
  • 边的权重之和被最小化

E 中的边是有向的,当 E 中的所有边都存在时,可以有循环。

【问题讨论】:

    标签: algorithm graph-theory


    【解决方案1】:

    参见Minimum Spanning Tree 算法。

    【讨论】:

      【解决方案2】:

      好的...我能知道 MrDatabase 是什么吗? SSSP 算法(dijkstra、Bellman-Ford)是刚才提到的 MST 的变体。 Dijkstra 没有解决负重量循环问题,而 Bellman-Ford 解决了。

      【讨论】:

      • MSP 并不总是提供与 SSSP 相同的解决方案。负权重循环在 MSP 中不是问题,因为我们只是最小化边缘权重的总和。
      • “编辑:E 中的边是有向的,当 E 中的所有边都存在时,可能会有循环”问题中提到。 MST 用于非循环图,我们不能使用 MST、Prim's、Kruskel 或其他 MST 算法来解决这个问题。我们可以将 Bellman-Ford 用于负循环,将 Dijkstra 用于正循环。是的,SSSP 可以从特定节点开始,但告诉我一些可以允许循环的 MST 算法?
      【解决方案3】:

      添加到 ars 的答案中,如果您的图形包含负权重的边,那么问题会变得更加困难(如果您有负权重循环,则可能没有解决方案)。

      【讨论】:

        【解决方案4】:

        阅读贝尔曼-福特算法。它支持负重量循环。 Dijkstra 的算法更有效,但它不支持负权重循环。

        【讨论】:

        • 那些是单源最短路径算法——不是 OP 所追求的。
        • 他追求什么?你能告诉我某些 MST 算法是否允许循环吗?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-16
        • 1970-01-01
        • 2011-10-10
        • 1970-01-01
        • 2020-12-19
        • 2014-09-08
        相关资源
        最近更新 更多