2009-07-04 11 views
9

アルゴリズム入門のbreadth-first searchアルゴリズムを読んだだけで、紙にアルゴリズムをシミュレートしました。私が今やりたいことは、余分な練習のためにコードに実装することです。グラフ理論アルゴリズムを効率的に実行する

私は最初からすべてのデータ構造を実装しようと考えていましたが(adjacency list、 "color"、 "distance"、 "parent"配列)、グラフのライブラリは現在Boostライブラリといくつかの他のgraph APIs Pythonで。 私はまた、UVASphere Judge OnlineのいくつかのBFS関連の問題を探してみましたが、どの問題にBFSソリューションが必要かはわかりません。

私の質問は、これらのグラフアルゴリズム(だけBFSに限定されるものではなく、私はDFSDijkstraFloyd-Warshallなどを実装したい場合にも便利に来るではない)を練習する最も痛みのない方法だろうものです。練習問題のあるサイトは歓迎されます。

答えて

9

私は個人的には、それらを理解する最善の方法は、自分自身をゼロからグラフ表現を実装することだと思います。

一方、実際の実装上の注意点が表示されます。特定のアルゴリズムが面白い/良い/効率的な/何であってもよい理由は何ですか。一方、ボトムアップのアプローチでは、その意味(再帰、パフォーマンス/スケーラビリティ、アプリケーション、代替案など)を含むグラフの理解とその実際の使用を簡単に理解できると思います。

しかし、それは私だけです。上記は非常に個人的な味です。

1

私はあなたの質問を興味深いと思った、私は少しグーグルと私はJGraphEdを見つけた。

すべてのグラフアルゴリズムをカバーするわけではありませんが、実験のための良いツールのようです。

1

私はbalphaに同意します。アルゴリズムを実際に学び理解するための最良の方法は、実装を行うことです。アルゴリズムを選択して実装するだけです。あなたが立ち往生しているか不明な点に到達したら、いくつかの既存の例を見てください。あなたは、提供されているものを単に受け入れるのではなく、理解の立場から自分の考えを他の人のものと比較することができます。

あなたがしたいことを学んだら、あなたの理解を固める最善の方法は、他の人にそれを教えるか説明することです。あなたは喜んで聞いてくれる人がいるかもしれません。あるいは、ちょうどあなたがちょうど勉強したアルゴリズムに新しい人のためのブログエントリを書くことができます。

しかし、あなたは「無痛」を探しているなら、多分あなたはACM problemset上のあらゆる問題の説明を持っている。ここ;-)

+0

ちょうどレコードに対して、引用が前後になるはずです」ほとんどの無痛 " – Steve

+0

私は訂正した。多くの謝罪。 – user108687

0

This site could help you

完全なアルゴリズムを明確に滞在する必要があります。あなたはそれぞれの問題のカテゴリを見ることができ、それを解決するためのヒントがあります。グラフ関連の問題をブラウズするだけです。良いアドバイスは、自分で問題を解決しようとした場合にのみ、それらのヒントを使用することです。

関連する問題