【问题标题】:GraphViz, find the shortest path between two nodesGraphViz,找到两个节点之间的最短路径
【发布时间】:2017-01-26 22:58:24
【问题描述】:

使用使用 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()

【问题讨论】:

  • 搜索我不find any reference 到“Dijkstra”的文档,所以它似乎不存在于库中。这能回答你的问题吗?
  • @RadLexus 一半?如果这里有人已经用 Python 中的 GraphViz 编写了 Dijkstra 算法,我很想知道他是如何做到的

标签: python graphviz dijkstra


【解决方案1】:

GraphViz 是一个图形可视化工具。在内部,它可能有多种算法,但这些算法可能无法从包装器中访问,因为它们是供内部使用的。如果你需要对你的图执行其他操作,我推荐Networkx,它提供了包括shortest_paths在内的多种图算法,然后可以输出到dot进行可视化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-04
    • 2023-01-15
    • 1970-01-01
    • 2021-12-18
    • 2021-05-25
    • 2017-04-18
    • 2016-03-06
    相关资源
    最近更新 更多