我试图从一组(int,int)边缘(每个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),但我正在寻找一种更优雅的方向解决方案。

谢谢,基里尔

有帮助吗?

解决方案

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

Graph g(N);

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

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

希望你的意思。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top