2

現在、Boost Graph Library を使用しています。一意のエッジと頂点が必要です。残念ながら、ブースト グラフにはこの機能がありません。そのため、エッジまたは頂点を挿入する前に毎回マニュアルを確認する必要があります。

今、私はこれを見つけました: http://www.boost.org/doc/libs/1_49_0/boost/graph/named_graph.hpp これが私を助けるかどうか疑問に思っていますか? ドキュメントにはnamed_graphについて何も書かれていないので、使い方がわかりません。たぶん、ちょっとした例や説明をしてくれる人が周りにいるのではないでしょうか? これは私を大いに助けるでしょう。

前もって感謝します。

4

1 に答える 1

3

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

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

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

バッキングされたコンテナーを std::set に変更した場合の結果について考える必要があります。たとえば、多くのアルゴリズムのパフォーマンスが変わります。どのコンテナーを使用するのが最適かという簡単な答えはありません。

于 2012-05-18T13:13:58.570 に答える