我有一个有13个顶点的有向图,想要检查所有长度的所有可能的简单路径(max = 12)。我尝试了FindPath [Graph,Vertex1,Vertex2,12,All]公式,但由于我不知道如何以更快更简单的方式提取路径,因此必须输入此函数13 * 12次。有没有办法只用一个公式而不是156个公式提取所有路径(从每个顶点到每个其他顶点)? 我也可以访问Adjacency-Matrix,它可能暗示另一种可能的方式,但我不知道如何从邻接矩阵中提取路径。 我知道有很多关于如何在两个顶点之间找到所有可能路径的问题,但我需要一个更大的图像。
答案 0 :(得分: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]
假设您在顶点列表中放置了顶点的标识。如果这些只是从1到13的整数,你可以把我放在vertexlist [[i]]等的位置。
您将获得两个不同顶点之间的n *(n-1)/ 2个路径列表,按起始点排序。如果您的图表是面向的,您可能需要整个n *(n-1)。对上面代码的简单修改就可以实现。