如何访问图形工具边缘?为什么图形工具边缘没有 ID?

How to access graph-tool edges? Why graph-tool edges don't have ids?

我正在尝试访问图形工具边缘。示例:假设下图。

from graph_tool.all import *

g = Graph()

eprop = g.new_edge_property("int")
g.edge_properties["distance"] = eprop

v0 = g.add_vertex()
v1 = g.add_vertex()
v2 = g.add_vertex()
v3 = g.add_vertex()
v4 = g.add_vertex()

e0 = g.add_edge(v0, v1) 
g.ep.distance[e0] = 1
e1 = g.add_edge(v1, v2)
g.ep.distance[e1] = 1
e2 = g.add_edge(v2, v3)
g.ep.distance[e2] = 1
e3 = g.add_edge(v3, v4)
g.ep.distance[e3] = 1
e4 = g.add_edge(v0, v4)
g.ep.distance[e4] = 1
e5 = g.add_edge(v0, v4)
g.ep.distance[e5] = 2

graph_draw(g, vertex_text=g.vertex_index, vertex_font_size=18, output_size=(200, 200), output="Test.png")

Image

从顶点 0 到顶点 4 有两条边,一条的长度为 1,一条的长度为 2。

我现在的问题是如何select 知道边索引的特定边。 遗憾的是,图形工具文档现在指出:“......无法通过其索引直接获得边,但如果给定边的源顶点和目标顶点已知,则可以使用 edge() 方法获得......”

但是在保存和加载图表后,变量 v0、v1、...以及 e0、e1、...不再可用。尝试访问图中的边,如文档所述:

e = g.edge(0,4)
print(g.edge_index[e])
# > Returns 4

只是returns从顶点0到顶点4的一条边。如何访问另一条边?知道边缘索引是4和5.

提前感谢您的帮助!

您可以获得节点 u 和 v 之间的所有平行边:

g.edge(u, v, all_edges=True)

您可以使用以下方法遍历所有边:

for e in g.edges():
    print(e)

您可以通过以下方式搜索具有特定索引的边:

find_edge(g, g.edge_index, 33)