[BGL] Iterate through neighbour vertices
Hi, I have a directed graph (vecS, vecS, bidirectionalS) and I'm trying to iterate through the neighbour vertices of a vertex u. When using for (tie(ai0,ai0_end) = adjacent_vertices(u,g); ai0 != ai0_end; ++ai0) the code goes only through the out vertices of u. Is there a way to iterate through all the neighbouring vertices in one loop (i.e. through both the out and in vertices of u)? Thanks, Rui
On May 9, 2005, at 5:54 AM, Rui Carvalho wrote:
Hi,
I have a directed graph (vecS, vecS, bidirectionalS) and I'm trying to iterate through the neighbour vertices of a vertex u. When using
for (tie(ai0,ai0_end) = adjacent_vertices(u,g); ai0 != ai0_end; ++ai0)
the code goes only through the out vertices of u. Is there a way to iterate through all the neighbouring vertices in one loop (i.e. through both the out and in vertices of u)?
I don't know of a good way to do this with the BGL. You'll need to either build some kind of smart iterator adaptor that traverses out_edges then in_edges, or have two separate loops. Doug
Thanks for the suggestions -I think I can build a simple iterator because the vertex list is vecS. BTW, what I'm trying to do is calculate the clustering coefficient (Watts & Strogatz) of each vertex in a directed network -feel free to point my stupidity if I'm missing something obvious. All the best, Rui
-----Original Message----- From: Doug Gregor [mailto:dgregor@cs.indiana.edu] Sent: 09 May 2005 15:10 To: boost-users@lists.boost.org Subject: Re: [Boost-users] [BGL] Iterate through neighbour vertices
On May 9, 2005, at 5:54 AM, Rui Carvalho wrote:
Hi,
I have a directed graph (vecS, vecS, bidirectionalS) and I'm trying to iterate through the neighbour vertices of a vertex u. When using
for (tie(ai0,ai0_end) = adjacent_vertices(u,g); ai0 != ai0_end; ++ai0)
the code goes only through the out vertices of u. Is there a way to iterate through all the neighbouring vertices in one loop (i.e. through both the out and in vertices of u)?
I don't know of a good way to do this with the BGL. You'll need to either build some kind of smart iterator adaptor that traverses out_edges then in_edges, or have two separate loops.
Doug
On May 9, 2005, at 3:59 PM, Rui Carvalho wrote:
Thanks for the suggestions -I think I can build a simple iterator because the vertex list is vecS.
BTW, what I'm trying to do is calculate the clustering coefficient (Watts & Strogatz) of each vertex in a directed network -feel free to point my stupidity if I'm missing something obvious.
I don't have any suggestions for you (because I don't know the algorithm), but if you happen to come up with a good implementation, we'd love to include it in the BGL. Doug
participants (2)
-
Doug Gregor
-
Rui Carvalho