
On Fri, 1 Apr 2011, Andrew Sutton wrote:
The edge function is replaced by get_edge, with adjacency matrices (eventually) supporting m(u, v).
Not sure what you mean here - just a rename?
More or less. It also allows us to syntactically differentiate adjacency matrices from other graph models, which means you can write a type trait for it. is_adjacency_matrix is (will be) true when m(u, v) is a valid expression for the types of m, u, and v. This further means that we can use enable_if to select algorithms based on that property.
AdjacencyGraph is probably going to go away since adjacency is just an abstraction over incidence.
I still have to look up the difference between adjacency list and incidence list, every time; not sure why those always sound like the same thing.
But you're talking about AdjacencyGraph - yeah, I never saw the point of iterating over adjacent vertices instead of the edges that lead there.
An IncidenceGraph gives you out_edges(g). An AdjacencyGraph gives you adjacenct_vertices(g). This function is almost universally (within the BGL) implemented using an iterator adaptor over an out edge iterator. Our view is that adjacency is exactly that: an adapted view of incidence.
I will make one correction on that -- the compressed_sparse_row_graph has a custom implementation of adjacent_vertices() that is much simpler than the adaptor approach. I believe grid_graph might have something similar. -- Jeremiah Willcock