2011-07-24 77 views
0

我想从一组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),但我正在寻找一个更加优雅的以boost为导向的解决方案。

谢谢 基里尔·

回答

4

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

Graph g(N); 

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

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

希望它是你的意思。

+0

是的,它有帮助,谢谢! – kirilsolo