GraphViz,找到两个节点之间的最短路径
GraphViz, find the shortest path between two nodes
使用 GraphViz 创建的有向图,我怎样才能找到让我们说 'A' 和 'H' 之间的最短路径?
我知道 Dijkstra 算法,我知道 GraphViz 提供了一个允许使用它的工具,但我不确定它是否存在于 python 库中。
我还想更改作为最短路径一部分的节点和边的前景颜色。 (.. 蓝色 :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()
GraphViz 是一种图形可视化工具。在内部它可能有多种算法,但这些算法可能无法从包装器中访问,因为它们是供内部使用的。如果您需要对图表执行其他操作,我建议使用 Networkx, which offers several graph algorithms including shortest_paths and can then output to dot 进行可视化。
使用 GraphViz 创建的有向图,我怎样才能找到让我们说 'A' 和 'H' 之间的最短路径? 我知道 Dijkstra 算法,我知道 GraphViz 提供了一个允许使用它的工具,但我不确定它是否存在于 python 库中。
我还想更改作为最短路径一部分的节点和边的前景颜色。 (.. 蓝色 :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()
GraphViz 是一种图形可视化工具。在内部它可能有多种算法,但这些算法可能无法从包装器中访问,因为它们是供内部使用的。如果您需要对图表执行其他操作,我建议使用 Networkx, which offers several graph algorithms including shortest_paths and can then output to dot 进行可视化。