【问题标题】:Ideal algorithm for finding all paths in a graph [duplicate]查找图中所有路径的理想算法[重复]
【发布时间】:2013-09-23 07:09:38
【问题描述】:

我们以这张图为例:

现在假设我从顶点 3 开始,想要找到顶点 7。 深度优先搜索(取决于实现)将首先查看孩子。现在,在我们的示例中,为了论证,我从顶点 2 开始,然后到顶点 4 和顶点 2,返回顶点并到达顶点 7,问题解决了。

我想要什么:我想要获得所有可能的路径,让我从 x 到 y(例如 3 到 7:3,1,4,7 - 3,5,7 - 3,4 ,7 - 3,5,6,9,7)。我不是从深度优先搜索中得到的。

你建议的算法是什么?

谢谢!

【问题讨论】:

  • 如果您只是在第一个可接受的解决方案处不停止搜索,您确实可以从 DFS 获得。因此,与其说“问题已解决”,不如写下解决方案并继续。
  • 这个问题似乎跑题了,因为它属于computer science

标签: algorithm depth-first-search


【解决方案1】:

您应该使用修改后的 BFS 算法 (http://en.wikipedia.org/wiki/Breadth-first_search)。在每个顶点上,您应该保存通向此顶点(前驱)的邻居列表,而不是只有 1 个通向此顶点的邻居。

当您想从中找到所有路径时,您只需从您的结束节点开始并在每个顶点处分支您的路径,这些顶点有多个前驱,并按照每个顶点中的前驱创建的方式进行,直到您到达使用您拥有的所有分支启动节点。

编辑: 您可以使用 DSF 算法代替 BFS 并以相同的方式对其进行修改。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-21
    • 1970-01-01
    • 2011-02-12
    • 1970-01-01
    • 2017-05-06
    • 1970-01-01
    相关资源
    最近更新 更多