igraph:select 边中的意外行为基于无向图中的 source/target

igraph: unexpected behavior in select edge based on source/target in an undirected graph

我在 python 中使用 igraph。我想使用源顶点和目标顶点在无向图中找到一条边。我正在使用以下代码:

g = Graph() # or g = Graph(directed=True)
g.add_vertices(4)
g.add_edges([(0,1),(1,2),(2,3)])
print len(g.es.select(_source=0, _target=1))
print len(g.es.select(_source=1, _target=0))

在有向图的情况下,它按我的预期工作,输出为 1 和 0。 但是在无向图的情况下,我预计两个打印语句都会 return 1,但它与之前的情况相同。

在源和目标之间找到边的正确方法是什么(对有向图和无向图都适用)?

从源顶点和目标顶点获取边的规范方法是使用 get_eid 方法。

get_eid(v1, v2, directed=True, error=True)

无向图忽略有向图。 error 参数控制是否引发异常是边缘不存在。如果error=False它returns-1.

g = igraph.Graph(directed=False)
g.add_vertices(4)
g.add_edges([(0,1),(1,2),(2,3)])
print 'Edge id: {0}'.format(g.get_eid(1,0))
print 'Edge id: {0}'.format(g.get_eid(0,1))

输出:

Edge id: 0
Edge id: 0

完整的文档在这里。