【发布时间】: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