2012-05-10 7 views
1

私は現在Boost Graph Libraryを使って作業しています。ユニークなエッジと頂点が必要です。残念なことに、ブーストグラフはこの機能を提供しません。だから私はエッジや頂点を挿入する前に毎回マニュアルをチェックする必要があります。Boost Graph Libraryでnamed_graphを作成するには?

私はこれを発見しました:http://www.boost.org/doc/libs/1_49_0/boost/graph/named_graph.hpp これが私に役立つのだろうか?ドキュメントではnamed_graphについての言葉がないので、私はそれをどのように使用するのか分かりません。たぶん私は少しの例やexplenationを与えることができる周りに誰かがいる?これは私をたくさん助けます。

ありがとうございます。

答えて

3

ブーストグラフライブラリは非常に柔軟で、頂点とエッジの内部表現を選択できます。 std :: setなどのコンテナを選択すると、一意の頂点とエッジを直接適用できます。詳細は次のとおりです。Using Adjacency List

named_graph型では、自分で選択できるプロパティ(たとえば、名前を表す "文字列")で頂点をインデックスできます。これは、キーを名前付きプロパティとし、その値がノードであるマップに標準のadjacency_listを効果的にラップします。ブーストソースnamed_vertices_test.cppでそれを使用する良い例があります。

あなたは何をしようとしているのかよく分かりませんが、std :: map/std ::を使用して、独自のプロパティからadjacency_listのノードにマップすることができます。グラフを作成するときにグラフに固有のノード/エッジがあることを確認する必要がある場合は、このアプローチは簡単で簡単ですが、通常は最善の方法です。

バックアップされたコンテナをstd :: setに変更すると、多くのアルゴリズムのパフォーマンスが変化するなどの影響が考えられます。使用するのに最適なコンテナには簡単な答えはありません。

関連する問題