BFSを使用してサイクルを見つけるための擬似コードを与えてください。私はこのタイプの他の質問があることを知っていますが、NONEはコードを与えません。広範な最初の検索を使用してグラフ内のサイクルを見つけるための擬似コード
答えて
DFSは、タスクにはるかに適しており、さらに有向グラフではより適しています。既に知っていたら、これを無視してください。
擬似コードに関しては、無向グラフでは、これは以前に訪問済みとしてマークされたノードに到達したときに見つかったサイクルを中止し報告する従来のBFSです。あなたはBFS hereの擬似コードを見つけることができます。
有向グラフでは、ノードに到達したときにどの方向に歩いていたのかを覚えておく必要があり、DFSより空間的に複雑な欠点がさらに悪化します。
編集:ああ、私はサイクルのグラフをテストすることについて話していましたが、実際にサイクルを見つけることはありませんでした。 DFSのサイクルを見つけることは簡単なことではありませんが、BFSのサイクルを見つけることは実際のアルゴリズムの複雑さとコードの複雑さの両方ではるかに複雑です。そのため、擬似コードが見つからないのです。
を投票することを忘れないならば、私はウルソリューションが間違っていると思います。次のことを考慮してください:o ---- o – Programmer
あなたはK2を意味しますか?問題が表示されない= S – slezica
無向グラフのサイクルを検出する方法については、2 ---- 1と考えてください。私がBFSを1から始めると、私はそれを訪問先としてマークし、それをキューに追加することから始めます。それから、whileループで、私はそれを待ち行列から取り出し、未訪問の頂点を訪問したものとしてマークし、待ち行列に追加します。つまり、私はキューに2を追加します。今、私はキューから2を取得すると、私は再びすべての隣接する頂点を検討します。そうしているうちに、私は既に訪問された1も考慮する。しかし、これはサイクルを示すものではありません。 – Programmer
おそらくDFSを意味していますが、これはサイクル検出ではるかに一般的です。間違えたと思います。 BFSへの変更はかなり簡単ですが、コアの考え方は変わりません。
func detectCycle()
for node in graph:
visited = bool[N]
set all visited to false
detectCycle(n, n, visited)
func detectCycle(n, origin, visited)
for neighbour in graph[n]
if neighbour == origin
cycle detected
if not visited[neighbour]
visited[neighbour] = true
detectCycle(neighbour, visited)
visited[neighbour] = false
私はBFSについて話していました:) – Programmer
だから、あなたはBFSの疑似コードを持っていますか? – Programmer
@Programmer:check CLRS – phoxis
- 1. グラフの閉じたパスを見つけるための擬似コード
- 2. CSSを使用して擬似クラス:最初の子
- 3. リスト内に複数回出現する数字を見つけるための擬似コード
- 4. 広範囲の最初の検索で迷路を解決する
- 5. SQL Serverデータベース内のすべての擬似関連データを検索する
- 6. 範囲内の最初の要素を持つすべてのタプルを見つけるSTLアルゴリズム
- 7. 擬似コードを使用して選択ソート選択の一種
- 8. 私はそれをGoogleで検索し、コード見つけた
- 9. Vim:TextMateに類似したバッファ内の機能を見つける
- 10. 最大数を見つけます。グラフ内のエッジの数
- 11. Javaを使用して範囲内の使用可能なワイヤレスネットワークをすべて見つけてください
- 12. jqueryが擬似セレクタを含むソースを見つける
- 13. Java Breadth Queueを使用した最初の検索
- 14. braedth最初の検索アルゴリズムのグラフを作成する方法
- 15. グラフでサイクルを検出するための条件
- 16. Excel疑似コード擬似コード
- 17. td内の最初のdivを見つける
- 18. いくつかの擬似コードを翻訳しています
- 19. コード内のすべてのメソッドを見つけるための正規表現
- 20. Pythonの継続部分の最初のn + 1項を使って 'e'の近似を見つける
- 21. 効率的なアルゴリズムとC++の文字列でサイクルを見つけるためのコード?
- 22. long doubleの(擬似)乱数ジェネレータのためのブーストの使用
- 23. C#コントロールコレクションの幅広い最初の検索
- 24. このアルゴリズムの擬似コード
- 25. java:広範な迷路のバックトラッキングの最初のトラバーサル
- 26. XSLT - 特定のタグを検索して見つける
- 27. クラス変数にアクセスするための擬似コード
- 28. MATLABを使用してベクトルの最大値を見つける
- 29. 2つの配列内で類似した要素を見つける
- 30. lucene.netの検索用語のオフセットを見つける、C#
@ppl:あなたは私の質問を表示し、それのように、サイクルが存在するかどうかをテストするために、無向グラフの:) – Programmer