使用pydot查找开始,结束和循环

时间:2011-04-08 14:18:27

标签: python graphviz pydot

有没有办法在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"])

2 个答案:

答案 0 :(得分:1)

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

如果你正在寻找pydot库,请为你做这件事,你可能会运气不好。

答案 1 :(得分:0)

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

您想要NetworkX。它可以read and write dot filesfind circles找到可到达的节点并进行拓扑排序。

在维基百科上查找图表的术语,NetworkX可以完成剩下的工作。