4

私は効率を求めており、効率 (=0.9*速度 + 0.1*その他) が高ければ、自分でコードを書いても構わないと思っています。LEDA グラフと Boost グラフのどちらかを選択する場合、どちらを選択する必要がありますか?

私のアルゴリズムは時間がかかります (時間的に非多項式のものもあります)。これは大きなグラフで機能します。

4

3 に答える 3

6

Boost は一般的に優れたライブラリですが、いくつかの理由から Boost グラフはお勧めしません。

BGL のドキュメントは実行可能であり、簡単に理解できるユーザー ガイドはありません。私自身の問題に関連するプロパティを持つグラフを定義しようとするのは非常に難しいことがわかりました。

テンプレート内のテンプレート内のテンプレートを表示する巨大なコンパイラ エラーが頻繁に発生します...何が起こっているのかを確認することはほぼ不可能です。

私が見つけた唯一の解決策は、Boost Graph に付属する些細な例から始めて、それが私が望むようになるまでそれを適応させることでした。

これらの理由で Boost Graph を捨てた、多くの聡明で有能な人々を私は知っています。そのすべての下に非常に効率的なアルゴリズムがあるため、悲しい. 私にとって、BGL はテンプレートの乱用の教科書的な例です。ブースト グラフは、要点を完全に見落として失敗する素晴らしいアイデアです。コードは、読み取り、保守、拡張、またはデバッグができない場合、価値がありません。

LEDA/Boost 実装の代替手段があります。この似たような投稿を調査するよりも悪いことができます: https://stackoverflow.com/questions/510758/can-you-suggest-a-good-book-on-graphs-and-graph-algorithms(リンクは無効になりました)

于 2012-07-07T16:36:04.057 に答える
2

ブーストグラフアルゴリズムは、LEDAやスタンフォードグラフベースグラフでも機能するように作成できますが、その逆はできません。 http://www.boost.org/doc/libs/1_46_1/libs/graph/doc/leda_conversion.html

ブーストグラフを使用することをお勧めします。これは最先端の技術です。

マイク

于 2012-04-14T09:22:39.260 に答える