【问题标题】:Finding all possible paths between all vertices of a graph查找图的所有顶点之间的所有可能路径
【发布时间】:2015-06-03 13:58:16
【问题描述】:

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

【问题讨论】:

    标签: path wolfram-mathematica


    【解决方案1】:

    主要是您不知道将函数映射到二维数组或三角形上的原语。在 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) 。对上面的代码进行简单修改即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-12
      • 1970-01-01
      • 2012-03-21
      • 2012-06-05
      相关资源
      最近更新 更多