【问题标题】:Finding all independent connections in graph在图中查找所有独立连接
【发布时间】:2017-03-11 20:31:55
【问题描述】:

我有一个无向图。有没有关于如何找到两个节点之间所有独立连接的有效算法?所谓独立,我的意思是这些连接可以有公共节点但不能有公共边。

在此示例中,从 0 到 8(0-2-3-4-8 或 0-5-6-7-8)有 2 个独立连接。我尝试连续使用广度优先搜索算法,同时“伪擦除”我已经看到的边缘。问题是我可以通过这种方式浏览图表:0-5-4-8 这是不正确的,因为我无法制作任何其他路径。

感谢您的帮助!

【问题讨论】:

  • 尝试深度优先搜索并收集 path[] 中的路径,然后选择具有共同对的路径之一..
  • 你的意思是所有独立的路径集?这些数量通常在图形大小中呈指数级增长。如果你想要一个特定的集合满足一个有趣的最优性标准,找到它可能是 NP 困难的。如果你只想要任何一个,那么使用 DFS 而不是 BFS 的擦除。
  • @AnkurJyotiPhukan “有共同对的人之一”?你什么意思?
  • @Gene 不,我想获得最大数量的路径,以便没有任何边缘包含在其他路径中。
  • 尝试标准 DFS 也行不通。第一个创建的路径是 (0-2-3-4-5-6-7-8),所以我不能添加更多路径 (0-5-X)。

标签: algorithm graph-theory graph-algorithm breadth-first-search


【解决方案1】:

您感兴趣的是解决源和汇之间的最小割问题(您感兴趣的第一个节点是源,第二个是汇)。

Here您可以阅读有关此任务的方法。基本上我链接到一个定理,证明源和汇之间的最大流量等于最小切割。您对最小切割感兴趣,因为这正是为了使您的源和接收器断开连接而需要移除的最小边数。

如果您运行Ford Fulkerson max flow algorithm,您可以重构从源到汇的不同路径,考虑在算法完成后哪些反向边缘具有容量。最后一点 - 福特富尔克森经典地用有向图描述。为了使它适用于您的无向情况,将每条边表示为两个独立的有向边,面向相反的方向。你所有的初始容量都应该等于 1。

【讨论】:

    猜你喜欢
    • 2019-09-27
    • 1970-01-01
    • 2010-11-23
    • 1970-01-01
    • 2011-11-24
    • 2018-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多