Search code examples
pythongraphigraphedgesvertices

Check if two vertices are connected in iGraph


Is there a very short expression in iGraph 0.6 for python 2.7 to see if two vertices specified by index are connected by an edge or not?

I found somewhere:

are_connected(v1, v2)  

but in python I would get an error message: "NameError: global name 'are_connected' is not defined"

The above expression could be for R or just totally wrong. I don't know. R is not enough for what I'm trying to do with my project.

My graph is undirected and has many sequences of vertices and edges (vs and es) described in this tutorial: http://hal.elte.hu/~nepusz/development/igraph/tutorial/tutorial.html

Update: I've found http://packages.python.org/python-igraph/igraph.GraphBase-class.html#is_multiple is_multiple and is_mutual and I think each of them could do the trick, yet I still get the error: "NameError: global name 'are_mutual' is not defined".

On the internet I couldn't find an example of how to implement it correctly. I'm still looking.


Solution

  • GraphBase class has function get_eid(v1, v2, directed=True, error=True) that returns arbitrary edge between vertices specified by their indices. In you call it like this:

    g.get_eid(v1, v2, directed=False, error=False)
    

    it will return -1 if the vertices are disconnected, and some edge otherwise.