相关疑难解决方法(0)

图算法查找两个任意顶点之间的所有连接

我正在尝试确定完成下述任务的最佳时间效率算法.

我有一套记录.对于这组记录,我有连接数据,表明该组中的记录对如何相互连接.这基本上代表一个无向图,其中记录是顶点,连接数据是边.

集合中的所有记录都有连接信息(即不存在孤立记录;集合中的每个记录都连接到集合中的一个或多个其他记录).

我想从集合中选择任意两条记录,并能够显示所选记录之间的所有简单路径."简单路径"是指路径中没有重复记录的路径(即仅限于有限路径).

注意:两个选择的记录将始终不同(即开始和结束顶点永远不会相同;没有循环).

例如:

    If I have the following records:
        A, B, C, D, E

    and the following represents the connections: 
        (A,B),(A,C),(B,A),(B,D),(B,E),(B,F),(C,A),(C,E),
        (C,F),(D,B),(E,C),(E,F),(F,B),(F,C),(F,E)

        [where (A,B) means record A connects to record B]

如果我选择B作为我的起始记录而E作为我的结束记录,我希望找到通过记录连接将记录B连接到记录E的所有简单路径.

   All paths connecting B to E:
      B->E
      B->F->E
      B->F->C->E
      B->A->C->E
      B->A->C->F->E

这是一个例子,实际上我可能有包含数十万条记录的集合.

language-agnostic algorithm graph-theory

116
推荐指数
5
解决办法
9万
查看次数

如何找到两个图节点之间的所有路径

如何找到两个图节点之间的所有路径,如下图所示?我尝试了广度优先搜索(BFS)算法,但是虽然它可以找到所有点,但无法找到从(S)tart到(E)nd的所有路径。我还尝试了深度优先搜索(DFS),它更接近。然而,当应用该策略时,因为有一个封闭列表,所以它只会找到一条路径,可能是红线,并且由于紫色和绿色在该区域穿过封闭列表,因此这些路径将被忽略。

我想知道如何获得从 (S)tart 到 (E)nd 的所有路径。在下面的情况下:

  1. D1、C1、B1、B2、A2、A1(红线路径)
  2. D1、C1、C2、B2、A2、A1(紫线路径)
  3. D1、D2、C2、B2、A2、A1(绿线路径)
  4. D1、D2、C2、C1、B1、B2、A2、A1(黄线路径)

在此输入图像描述

algorithm search path

5
推荐指数
1
解决办法
8922
查看次数