私はpythonでkruskalのアルゴリズムを実装したいのですが、どのようにツリー/グラフを表現することができますか、サイクルを検出するためにはどのようなアプローチが必要ですか?Pythonでグラフ/ツリーを表現する方法とサイクルを検出する方法は?
9
A
答えて
11
(私の意見では)それを表現する最も簡単な方法は、配列リストの辞書を使用することです:
graph = {}
graph[node_id] = [other_node_id for other_node_id in neighbors(node_id)]
サイクルを見つける簡単な方法は、BFまたはDFの検索を使用することです:
def df(node):
if visited(node):
pass # found a cycle here, do something with it
visit(node)
[df(node_id) for node_id in graph[node]]
免責事項:これは実際のスケッチです。 neighbors()
、visited()
およびvisit()
は、アルゴリズムの外観を表すための単なるダミーです。
4
Python Graph APIは、開始するのに適しています。
たとえば、NetworkXには、最小スパニングツリーを検出するKruskalのアルゴリズム実装があります。
ホイールを再発明して自分でやりたければ、それも可能です。
+3
はい私はこの最初のホイールを少なくとも再発明しようとしています。 –
関連する問題
- 1. 正規表現で星印 "*"を検出する方法は?
- 2. NDependで名前空間のサイクル検出をカスタマイズする方法
- 3. 現在のキーボードの言語をPythonで検出する方法
- 4. 反復DFSで有向グラフのサイクルを検出する方法は?
- 5. 特定の単語の出現回数をPythonで検出する方法
- 6. 巣の鳥の出現を検出する方法は?
- 7. PHPで現在のブートストラップクラス名を検出する方法は?
- 8. パスの下で正規表現を検索する方法は?
- 9. 正規表現でメールアドレスを検証する方法は?
- 10. javascriptで正規表現を検証する方法は?
- 11. Pythonでマルチキュービットシステムを視覚的に表現する方法は?
- 12. キーボードの表示と非表示を検出する方法
- 13. 現在のマウスカーソルタイプをbashまたはpythonから検出する方法
- 14. ウェブサイト上のアドレスを検出する方法/どの正規表現ですか?
- 15. Pythonのサブクラスでメソッドのオーバーロードを検出する方法は?
- 16. OpenCV Pythonでフルカラーのカラー画像を検出する方法は?
- 17. pythonでアプリケーションからオーディオを検出する方法は?
- 18. Androidでスクロールの表示方向を検出する方法
- 19. グラフ:DFSを使用してundirectdグラフのサイクルを検出する方法
- 20. jQueryで現在のページのメディアタイプを検出する方法
- 21. Pythonで "±"を表示する方法は?
- 22. WebBrowserコントロールでナビゲートする方法を検出する方法
- 23. 正規表現を検証する方法は?
- 24. PYTHONプロセスが終了したときを検出する方法
- 25. Protege:not hasNextを表現する方法は?
- 26. すべての出現をPythonで置き換える方法
- 27. Python:デバッグインタプリタの検出方法
- 28. C++でグラフを表現する方法
- 29. iPhoneでドットシンボルを表現する方法
- 30. バイナリで-0を表現する方法
配列の辞書は、リストの辞書を意味しますか? –
@バニーウサギerm ..はい。申し訳ありませんが、名前を誤って使用しました> –