查找图的所有顶点之间的所有可能路径

Finding all possible paths between all vertices of a graph

我有一个包含 13 个顶点的有向图,我想检查所有可能的所有长度的简单路径(最大值 = 12)。我尝试了 FindPath[Graph,Vertex1,Vertex2,12,All] 公式,但由于我不知道如何以更快更简单的方式提取路径,因此不得不输入此函数 13*12 次。有没有办法只用一个公式而不是 156 个公式来提取所有路径(从每个顶点到每个其他顶点)? 我也可以访问邻接矩阵,这可能暗示另一种可能的方式,但我不知道如何从邻接矩阵中提取路径。 我知道有很多关于如何找到两个顶点之间的所有可能路径的问题,但我需要一个更大的图像。

主要是你不知道在二维数组或三角形上映射函数的原语。在 Mathematica 文档中查找 MapOuterTableScanMapThread 等。

一种方法是(适应您的情况):

Flatten[ Table[ Table[ 
  FindPath[ mygraph, vertexlist[[i]],  vertexlist[[j]], 12, All ],
    {j,i+1, Length[vertexlist] }], {i, 1, Length[vertexlist]-1 }], 1]

假设您将顶点的标识放入顶点列表中。如果这些只是从 1 到 13 的整数,你可以只用 i 代替 vertexlist[[i]] 等

您将获得 n*(n-1)/2 个两个不同顶点之间的路径列表,按起始顶点排序。如果您的图表是有方向的,您可能需要整个 n*(n-1) 。上面代码的简单修改会给你。