0

ペア(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)を使用できることは明らかですが、よりエレガントなブースト指向のソリューションを探しています。

ありがとう、キリル

4

1 に答える 1

5

ベクトルを使用して頂点のコレクションを定義するため、頂点インデックスと頂点記述子の間には1対1の対応があります。グラフオブジェクトを次のように定義する必要があります。

Graph g(N);

ここで、Nは頂点の数です。これにより、N個の頂点が割り当てられます。各頂点記述子は、0からN-1までの数値です。

エッジ記述子からエッジインデックスを取得するには、get関数を使用できます get(edge_index, g, edge_descriptor);adjacent_vertices(v, g)関数によって返されるイテレータから取得できるエッジ記述子。

あなたが意味したことを願っています。

于 2011-07-24T11:50:01.683 に答える