2015-06-03 158 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)。上面的代碼的簡單修改會給你。

相關問題