igraph-help
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [igraph] Non-Backtracking Matrix


From: Tamás Nepusz
Subject: Re: [igraph] Non-Backtracking Matrix
Date: Thu, 30 Jan 2014 16:43:21 +0100

Hello,  

> As I understood it, the node labels in the line-graph are the edge numbers in 
> the edgelist of the original graph. And when making a directed graph of an 
> originally undirected one, the new edges are stacked in the same order as the 
> original ones at the end of the edgelist.
Yes, that’s true, it works this way at the moment, but it is not guaranteed in 
general. We might change it in a later version of igraph and then your code 
would break, but it’s unlikely that we’ll do this. Anyway, probably a better 
way would be to find the mutual edge pairs in the directed graph (using 
is.mutual) and for every mutual edge pair (i, j), you should remove (i, j) and 
(j, i) from the line graph. I’m not sure how to do that efficiently in R. 
get.edgelist(graph)[is.mutual(graph), ] gives you the edges that exist in both 
directions, so that could be a good starting point, but I don’t see immediately 
what would be the most efficient way to proceed; maybe Gabor can comment on 
that.

An alternative way is to do the same thing what line.graph does while also 
filtering the backtracking paths at the same time. Essentially, line.graph 
iterates over the vertices, and for each vertex, it takes the incoming edges 
and the outgoing edges and creates every possible pair between an incoming edge 
and an outgoing edge. Constructing these edge pairs manually and excluding 
backtracking pairs before they are added to the line graph (or its edge list) 
is also an option. You could use get.adjedgelist(mode=“in”) to get a list of 
incoming edge indices for each vertex, and get.adjedgelist(mode=“out”) to get a 
list of outgoing edge indices for each vertex, and then it’s only a matter of 
looping and constructing the edge list of the line graph.

All the best,
T.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]