Boost logo

Boost Users :

Subject: Re: [Boost-users] How to find edge between two vertices of undirected graph?
From: Cedric Laczny (cedric.laczny_at_[hidden])
Date: 2010-06-10 03:46:05


Hi,

when I look at the error, I see that it complains about remove_edge().
However, I don't see any call of this in your example code. So I would suggest
that you either post a complete and short "working" example, or more carefully
select the lines that you post.

Concerning the question in the title of your post, one way to check if there
is an edge between two vertices could be to get the adjacent vertices of
Vertex b and check if Vertex d is among them, or even to check if Vertex b has
any adjacent vertices at all. I know, this is probably not the nicest solution
but unless you don't use an AdjacencyMatrix graph, I don't know if this would
even be possible in a nicer way, so to say in O(1).

Best,

Cedric

On Thursday, 10. June 2010 06:59:24 Eric Fowler wrote:
> This should be easy ....
>
> typedef adjacency_list<vecS, vecS, undirectedS, POS<position_type>,
> LEN<position_type> > DG;
> typedef graph_traits<DG>::vertex_descriptor Vertex;
> typedef graph_traits<DG>::edge_descriptor Edge;
>
> ...
> Vertex b, d;
> ...populate b and ....
>
> bool bRet;
> Edge e;
>
> tie(e,bRet) = edge(b,d,*this);
>
> This earns me a lengthy error message from g++ (following).
>
> I notice that there is no function described for looking up an edge on an
> IncidenceGraph or an AdjacencyGraph ... hmm .... this puzzles me.
>
> What am I missing?
>
> Eric
>
> ../shuttle/trunk/DelaunayGraph.h:273: error: no matching function for call
> to ‘DelaunayGraph<int>::remove_edge(Edge&, DelaunayGraph<int>&)’
> /usr/include/boost/graph/detail/adjacency_list.hpp:848: note: candidates
> are: void boost::undirected_graph_helper<Config>::remove_edge(typename
> Config::edge_descriptor) [with Config =
> boost::detail::adj_list_gen<boost::adjacency_list<boost::vecS, boost::vecS,
> boost::undirectedS, POS<int>, LEN<int>, boost::no_property, boost::listS>,
> boost::vecS, boost::vecS, boost::undirectedS,
> boost::property<boost::vertex_bundle_t, POS<int>, boost::no_property>,
> boost::property<boost::edge_bundle_t, LEN<int>, boost::no_property>,
> boost::no_property, boost::listS>::config]
> /usr/include/boost/graph/detail/adjacency_list.hpp:859: note:
> void boost::undirected_graph_helper<Config>::remove_edge(typename
> Config::out_edge_iterator) [with Config =
> boost::detail::adj_list_gen<boost::adjacency_list<boost::vecS, boost::vecS,
> boost::undirectedS, POS<int>, LEN<int>, boost::no_property, boost::listS>,
> boost::vecS, boost::vecS, boost::undirectedS,
> boost::property<boost::vertex_bundle_t, POS<int>, boost::no_property>,
> boost::property<boost::edge_bundle_t, LEN<int>, boost::no_property>,
> boost::no_property, boost::listS>::config]
> make: *** [MyDialog.o] Error 1


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net