igraph:基于无向图中的源/目标的选择边缘中的意外行为

时间:2015-07-27 01:54:23

标签: python graph igraph

我在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。 但是在无向图的情况下,我预计两个print语句都将返回1,但它与之前的情况相同。

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

1 个答案:

答案 0 :(得分:3)

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

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

对于无向图,将忽略定向。 error参数控制是否引发异常是边缘不存在。如果error=False它返回-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

完整的文档就在这里。

相关问题