使用索引增加图形边缘

时间:2011-07-24 11:25:40

标签: c++ boost-graph

我试图用一组pair(int,int)边(其中每个int表示一个顶点索引)定义一个带有无向边的图。每个这样的边缘都有自己的索引。

问题在于我希望图的内部顶点索引与原始顶点索引一致。我也希望能够从边缘描述符中提取原始边缘索引。

http://www.boost.org/doc/libs/1_47_0/libs/graph/doc/using_property_maps.html外部属性部分)我知道我应该使用以下图表类型:

typedef adjacency_list<vecS, vecS, udirectedS, 
no_property, property<edge_index_t, std::size_t> > Graph;

不幸的是,没有关于如何使用edge_index_t属性的解释。

很明显我可以使用地图(pair(int,int),int)但我正在寻找一种更优雅的面向升级的解决方案。

谢谢你, 基里尔

1 个答案:

答案 0 :(得分:4)

由于使用向量来定义顶点集合,因此顶点索引和顶点描述符之间存在一对一的对应关系。您只需要按如下方式定义图形对象:

Graph g(N);

其中N是顶点数。这分配了N个顶点,每个顶点描述符是一个从0到N-1的数字。

要从边缘描述符获取边缘索引,可以使用get函数: get(edge_index, g, edge_descriptor);。您可以从adjacent_vertices(v, g)函数返回的迭代器中获取边缘描述符。

希望你的意思。