2017-01-26 165 views
3

使用使用GraphViz創建的Digraph,如何找到可以說'A'和'H'之間的最短路徑? 我知道Dijkstra算法,我知道GraphViz提供了一個允許使用它的工具,但我不確定它是否存在於python庫中。GraphViz,找到兩個節點之間的最短路徑

我想改變屬於該最短路徑的節點和邊的前景顏色。 (.. in blue:p)

from graphviz import Digraph 

f = Digraph('Test', filename='fsm.gv') 
f.body.extend(['rankdir=LR', 'size="8,5"']) 

f.edge('A', 'C') 
f.edge('A', 'B') 
f.edge('B', 'D') 
f.edge('C', 'F') 
f.edge('C', 'E') 
f.edge('C', 'I') 
f.edge('E', 'G') 
f.edge('F', 'E') 
f.edge('G', 'H') 
f.edge('G', 'E') 
f.edge('H', 'F') 
f.edge('H', 'E') 

f.view() 
+1

檢索文檔我沒有[找到任何參考](http://graphviz.readthedocs.io/en/latest/search.html?q=dijkstra&check_keywords=yes&area=default)到「Dijkstra」,所以它確實似乎不在圖書館裏。這是否回答你的問題? – usr2564301

+0

@RadLexus一半?如果這裏的某個人已經用Python中的GraphViz編寫了一個Dijkstra算法,我想知道他是如何做到的 –

回答

0

GraphViz是一個圖形可視化工具。在內部,它可能有多種算法,但這些算法可能無法從包裝器訪問,因爲這些算法僅供內部使用。如果您需要在您的圖表上執行其他操作,我推薦Networkx,它提供了幾種圖形算法,包括shortest_paths,然後可以輸出到dot進行可視化。

相關問題