【问题标题】:Finding starts, ends, and loops with pydot使用 pydot 查找开始、结束和循环
【发布时间】:2011-08-01 13:45:18
【问题描述】:

有没有办法在 pydot 中实现这一点?

举个例子:

[输出点文件]

strict graph g{
"A" -> "B";
"B" -> "C";
"C" -> "D";
"D" -> "E";
}

[Python]

print(num.start)
>>> A
print(num.steps)
>>> ["a,b","b,c","c,d","d,e"]
print(num.end)
>>> E

或以下情况:

[输出点文件]

strict graph g{
"A" -> "B";
"B" -> "C";
"C" -> "A";
}

[Python]

if num["A"] == num.loop:
print("[%s] loop detected")%(num["A"])

【问题讨论】:

    标签: python graphviz pydot


    【解决方案1】:

    Pydot 可以写点文件,但不能用于分析图。

    你想要NetworkX。可以read and write dot filesfind circles,找到可达节点,做拓扑排序。

    在 wikipedia 上查找图表术语,剩下的工作由 NetworkX 完成。

    【讨论】:

    • 为了将来参考,我有一个使用 networkx 来识别点图中的循环的 python 脚本示例:blog.jasonantman.com/2012/03/… 感谢 Jochen 给我提供脚本的链接。
    • 您的链接早已失效。
    【解决方案2】:

    你有整个图结构,通过graph.get_edge_list(),你可以实现标准深度优先搜索来找到节点之间的最短路径。查找循环同样使用standard graph algorithms。有关如何在两个节点之间做最短路径的源代码,请参阅Graph implementations in Python 上的这篇文章。

    如果您正在寻找 pydot 库,请为您执行此操作,您可能不走运。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-18
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 2018-04-13
      • 2023-03-30
      • 1970-01-01
      相关资源
      最近更新 更多