From: boost-users-bounces@lists.boost.org [mailto:boost-users-bounces@lists.boost.org] On Behalf Of Andrew Sutton
Sent: Sunday, February 08, 2009 7:06 PM
To: boost-users@lists.boost.org
Subject: Re: [Boost-users] [Graph] is it possible to define my ownedge_descriptor

 

I have a graph which corresponds to an n by m grid of vertices. Edges in this graph are only allowed to point from one vertex to an adjacent vertex. In this situation, it would be wonderful if I could define an edge, so that its target is not a vertex_descriptor but some other construct which would allow me to store the target in just one byte or less instead of the full unsigned int which I use to describe my vertices. That is, the edge could go from vertex 102 to a descriptor in the range [0,8] which would give you enough information to compute which vertex you're talking about.

The graph I'm working with is rather large. It could have millions of vertices and saving this kind of space would be fantastic.

If you're defining your own graph type, you can define your descriptors however you want. The CSR-graph does something similar, IIRC. That's probably not a very helpful comment. If you can post some code, I might be able to give a better answer.

Andrew Sutton
andrew.n.sutton@gmail.com

 

Actually, I wasn’t defining my own graph type. I’ve been using the CSR template class which was definitely an improvement over the adjacency list in terms of memory usage. I definitely have no use for adding and removing vertices on the fly. However, I am willing to look into defining my own graph. Do you think it’s not beyond someone who is only a mediocre C++ programmer? I’ve been reading the doc site, but I haven’t found any information about how to create my own graph. Could you please tell me where to look?

 

George Slavov