2015-06-03 63 views
2

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

回答

0

最主要的是你不知道在二维数组或三角形上映射函数的基元。在Mathematica文档中查找Map,Outer,Table,Scan,MapThread等。做

一种方式是(适用于您的情况):

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

假设你把你的VertexList时顶点的标识。如果这些只是从1到13的整数,您可以将我替换为vertexlist [[i]]等。

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

相关问题