【问题标题】:Boost Graph edges with indexes使用索引提升图边
【发布时间】:2011-10-11 23:58:37
【问题描述】:

我正在尝试从一组 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 属性的说明。

很明显,我可以只使用 map(pair(int,int),int) 但我正在寻找一个更优雅的面向提升的解决方案。

谢谢你, 基里尔

【问题讨论】:

    标签: c++ boost-graph


    【解决方案1】:

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

    Graph g(N);
    

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

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

    希望它是你的意思。

    【讨论】:

    • v 中的adjacent_vertices(v, g) 是否代表顶点的索引?
    • @Daniel 是的,在这种情况下它代表顶点索引
    猜你喜欢
    • 1970-01-01
    • 2020-09-15
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-25
    相关资源
    最近更新 更多