私は二部グラフで最大の重量/最小コストマッチングを求めるPythonコードを探しています。私はNetworkXで一般的なケースの最大重量マッチングコードを使用してきましたが、それは私の必要性には遅すぎます。これは、一般的なアルゴリズムが遅いという事実と、NetworkXのソリューションが完全にPythonで実装されていることの両方が原因と考えられます。理想的には、私はいくつかのC/C++コードをラップする二部的なマッチング問題のためのPythonコードを探したいと思いますが、今はNetworkXの実装より速いものが役に立ちます。最大重量/最小コストPythonでの2者一致コード
答えて
さらにいくつかの調査の後、私は(http://pypi.python.org/pypi/pyLAPJV/0.3とhttp://pypi.python.org/pypi/hungarian)特に参考に二つのモジュールを見つけました。どちらもPythonバインディングを使用してC++で実装されたアルゴリズムであり、NetworkXマッチングの実装よりもはるかに高速に動作します。しかし、pyLAPJVの実装は、私のニーズにとってはあまりにも揺らめくようで、同じ重み付きエッジを適切に処理できません。ハンガリーのモジュール(おそらくpyLAPJVアルゴリズムよりも遅いですが)は、私が現在扱っているデータサイズでNetworkXの実装より約3桁高速です。 kunigamiが提案したコードをもう一度見てみましょう。私は、Shedskinをかなり簡単に実行して、合理的に速い実装を行うことができると信じています。
これはあなたが探しているものですが、それはホップクロフト・カープ二部グラフマッチングアルゴリズムのPython実装であれば、あまりにもわかりません。もしそうでなければ、おそらくあなたのための良い出発地になるかもしれません。
リンクNicoをありがとう。しかし、最大のマッチング問題は、最大のマッチング問題よりも問題があります。それは関与する頂点の最大数を見つけることに関係していますが、勘は重要ではありません。 – nomad
はあなたにもMunkresまたはクーン-Munkresアルゴリズムとして知られ、ハンガリーのアルゴリズムのscipyのダウンロードの実装を試してみましたか?
- 1. 最小一致
- 2. Pythonコードの最大値と最小値が正しくない
- 3. 最小化/最大化コードVisual Studio(C#)
- 4. リミット最大重量カートにOpencart 2.0.3.1
- 5. Pythonの最長一致
- 6. 2-4ツリー最大/最小ノード数
- 7. Pythonの大NumPy配列の最小、最大、平均
- 8. 最大流量
- 9. Androidのレイアウト重量(最小サイズと最大でいくつかといくつかのオブジェクトを混ぜる)
- 10. 文字列の最大一致数
- 11. Pythonで多次元の最小/最大を返しますか?
- 12. CoreGraphicsで2次ベジェの最小/最大を求める
- 13. ジオメトリフィールドから最大Lat、最小Lat、最小Long、最小Long
- 14. 最小最大ヒープでの最大操作の削除
- 15. Pythonで最小値と最大値を見つける
- 16. Linuxのread()最小データ量
- 17. .NET最大から最小
- 18. 最大値と最小値?
- 19. ダーツリスト最小値/最大値
- 20. CSharpCodeProvider.CompileAssemblyFromFileのエラーの最大量
- 21. 最小xと最大x値の抽出Python
- 22. 最大量の行に
- 23. 最小最大ヒープの最大要素の削除
- 24. 最小幅、最大幅のCSS最小幅を使用
- 25. 最小コストで建物の一般的な高さを見つける
- 26. 最大SharePointコンテンツDB容量
- 27. 入力最大音量チェック
- 28. 選択ソート - 最小/最大のインデックス
- 29. 配列の最大値と最小値
- 30. 最小値と最大値の確認
あなたが心の中で、特定の擬似コードをお持ちですか?あなたはPythonの入出力の例を提供できますか? – kevpie
類似した質問http://stackoverflow.com/questions/4075669/hungarian-algorithm-in-python – Ante
@Kevpie私はほぼすべてのインターフェイスを開いています。最大の重み問題は、それ自体がよく定義されています(たとえば、Wikipedia http://en.wikipedia.org/wiki/Matching_(graph_theory)#Maximum_matchings_in_bipartite_graphs)。私はそれを再定義するスペースを無駄にしたくありませんでした。入力はグラフでも重み行列でも、出力は二部頂点間のマッチングです。 – nomad