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

时间:2015-06-03 13:58:16

标签: path wolfram-mathematica

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

1 个答案:

答案 0 :(得分:0)

主要的是你不知道在二维数组或三角形上映射函数的基元。在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的整数,你可以把我放在vertexlist [[i]]等的位置。

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