当前位置: 首页 > 知识库问答 >
问题:

查找无向图上的所有路径

阚吕恭
2023-03-14

我有一个无向图,我想从一个起始节点列出所有可能的路径。2个节点之间的每个连接在列出的路径中是唯一的,例如,给出以下图表示:

{A: [B, C, D],
 B: [A, C, D],
 C: [A, B, D],
 D: [A, B, C]}
A, B, C, D, A, C  in this path we have a connection between
A and B but we can't have a connection between B and A 

我无法使用现有的算法来完成它,我知道像DFS。任何帮助都将非常感谢。

共有1个答案

充星腾
2023-03-14

最简单的方法是递归地尝试每个邻居并组合所有结果。

这假设没有循环--如果您允许循环(如您的示例),那么将有无限多的路径。在这种情况下,您可以通过限制要检查的路径长度,然后循环所有可能的路径长度来生成路径生成器。

 类似资料:
  • 给定一个有向图,什么是只访问图的每个顶点一次的算法。这和哈密顿循环不同,我不要求路径在同一个顶点开始和结束。 回溯算法脑海中浮现的一种算法是回溯,使用递归实现,在每一步中,您都会探索所有可能的连接/路径,并保留一个布尔访问数组,以确保没有顶点被多次访问。当向后回溯时,该布尔值将设置为false(回溯中的关键步骤)。基本情况是比较访问的顶点数,并查看它是否与图中的节点数匹配,在这种情况下,它将返回t

  • 是否有任何标准算法可以在有向无环图中找到所有可能的路径。如果没有,我如何在BFS / Dijkstra /任何其他算法中进行更改以枚举DAG中的所有路径

  • 问题内容: 早上好! 我正在开发一种算法,以查找无向图而不是加权图中的所有路径。我目前正在使用具有回溯功能的DFS算法来尝试执行此操作。这是我当前的代码: 该程序在其输入上接收整数。第一个是节点数,第二个是链接数,第三个是开始节点和结束音,它们是相同的。之后的所有整数表示节点之间的连接。 问题在于,该算法仅查找一次访问单个节点的所有路径。我想要的是仅查找一次访问每个连接的所有路径的算法。关于我该怎

  • 在OSMnx中,街道的定向是为了保持单向性,因此,当我尝试使用Networkx查找最短路径时,我得到NetworkXNoPath:No path to(osmid)。如何解决此问题?我需要在具有单向街道的网络中找到最短路径。 见下面的代码:

  • 我正在研究一个优化问题,需要列出一个无向图的所有可能割集。具体来说,我感兴趣的是在两个顶点子集中找到所有断开图的边子集。 详细地: 在无向图G(V,E)中,V是顶点集,E是边集。割形成两个顶点子集a和B,这样: A联合B=V 和 A交叉点B=空集 A和B建立C(E的子集),使得C中的每条边连接两个顶点,一个在A中,一个在B中。我感兴趣的是找到所有可能的子集C,这样:对于每一个C,它是一个图的割,没