質問

ペア(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プロパティの使用方法については説明がありません。

マップ(ペア(int、int)、int)を使用できることは明らかですが、よりエレガントなブースト志向のソリューションを探しています。

ありがとう、キリル

役に立ちましたか?

解決

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

Graph g(N);

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

Edge Descriptorからエッジインデックスを取得するには、get関数を使用できます。get(edge_index, g, edge_descriptor);. 。あなたが返す反復因子から得ることができるエッジ記述子 adjacent_vertices(v, g) 関数。

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top