【问题标题】:A two way minimum spanning tree of a directed graph有向图的双向最小生成树
【发布时间】:2011-02-17 13:05:52
【问题描述】:

给定一个带有加权边的有向图,什么算法可以用来给出一个权重最小的子图,但允许从图中的任何顶点移动到任何其他顶点(假设任意两个顶点之间的路径永远存在)。

这样的算法存在吗?

【问题讨论】:

    标签: algorithm language-agnostic graph-theory minimum minimum-spanning-tree


    【解决方案1】:

    尽管他们自己并不正确,但花时间关注 Vitalii 的 Wikipedia 链接很快发现了这个算法:

    http://en.wikipedia.org/wiki/Chu%E2%80%93Liu/Edmonds_algorithm

    【讨论】:

    • Edmond 的算法只保证图中的每个节点都可以从根访问,而不是每个节点都可以从其他节点访问。
    • 我的链接的 NP 分类与它与原始问题的相关性有什么关系?
    • “这是 NP-Hard”,我的意思是原始问题。您的算法是针对不同问题的多时间算法。
    • 感谢您的澄清。
    【解决方案2】:

    这看起来是 NP-Hard:最小权重强连接跨越子图问题。

    我相信哈密顿循环问题可以简化为:给定一个图 G(V,E),构造一个有向图 DG,其中出现的边的权重为 1,不出现的边的权重为 100 (|V|+1)吨。 DG 有一个最小权重的强连接跨越子图,正好 |V|当且仅当 G 具有哈密顿循环。

    这里的论文有一个近似算法:http://portal.acm.org/citation.cfm?id=844363

    【讨论】:

      【解决方案3】:

      将图中的每个节点拆分为两个节点。一个节点将接受原始节点的所有传入边,而另一个节点将拥有所有传出边。然后,将方向放在所有边上,因此图是无向的。然后您可以在图上运行标准的 MST 算法(Prim's、Kruskal's),您将确保每个原始节点都可以被其他每个原始节点传送到。

      【讨论】:

      • 不幸的是,这不起作用,因为它会在最终图形中添加不必要的边。至少一个节点将附加一条额外的边,即使它不需要具有该边。例如,在具有顶点 A、B、C 和边 AB、BA、BC、CB、AC、CA 的图中,图的最小跨度可能只是边 AB、BC、CA。但是使用您的方法,这 3 条边不会相互连接,需要添加额外的边才能完成 MST。
      【解决方案4】:

      这是一个有向施泰纳树问题。作为 Steiner 树,它是 NP-Hard。

      你可以在这里找到一些近似算法:

      http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.38.8774&rep=rep1&type=ps

      【讨论】:

      • 但是定向的施泰纳树需要一个根,不是吗?
      • 算法可以找到最佳的根顶点,但您可以指定一个根和一组顶点。
      【解决方案5】:

      选择任意一个节点并返回它。

      您的意思是要找到最大的强连接子图(可能删除的节点数量最少),还是最小权重跨越子图(不删除节点允许)?

      【讨论】:

      • 标题是“生成树”,所以我认为是后者。
      • @Moron:啊,我错过了 :) 在这种情况下,你的答案是正确的。
      猜你喜欢
      • 2016-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多