私は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. パスの下で正規表現を検索する方法は?
- 3. Pythonのサブクラスでメソッドのオーバーロードを検出する方法は?
- 4. キーボードの表示と非表示を検出する方法
- 5. ウェブサイト上のアドレスを検出する方法/どの正規表現ですか?
- 6. Python:デバッグインタプリタの検出方法
- 7. PYTHONプロセスが終了したときを検出する方法
- 8. jQueryで現在のページのメディアタイプを検出する方法
- 9. WebBrowserコントロールでナビゲートする方法を検出する方法
- 10. 正規表現を検証する方法は?
- 11. Protege:not hasNextを表現する方法は?
- 12. iPhoneでドットシンボルを表現する方法
- 13. バイナリで-0を表現する方法
- 14. C++でグラフを表現する方法
- 15. PythonでFTPサーバーのタイムアウトを検出する方法
- 16. アプリケーションクラッシュを検出する方法は?
- 17. JARファイルを検出する方法は?
- 18. は、メソッドを振っ検出xcode4で検出揺れ方法を検出する方法xcode4
- 19. 正規表現で住所を抽出する方法
- 20. イオンアプリでマルチフィンガータッチを検出する方法
- 21. Javaでファイルカテゴリを検出する方法
- 22. ホストでアクセスファイルを検出する方法
- 23. asp.netでウェブカメラを検出する方法
- 24. NSTextFieldでスペースキーを検出する方法
- 25. PHPでドメインを検出する方法
- 26. tbbmallocでメモリリークを検出する方法
- 27. Pythonでユーザーエイリアスを表示する方法
- 28. 現在のオーディオデバイスのボリュームを検出する方法
- 29. 指示内の現在の状態を検出する方法
- 30. Pythonの正規表現でメタキャラクタを使用する方法と無視する方法を切り替える簡単な方法はありますか?
配列の辞書は、リストの辞書を意味しますか? –
@バニーウサギerm ..はい。申し訳ありませんが、名前を誤って使用しました> –