私はそれがトポロジカルソートを使ってO(V + E)で実行できることを知っています。しかし、私はBFSを使って同じ複雑さでやり遂げることもできると思います。重み付けされた有向非循環グラフのソースノードから他のすべてのノードまでの最短経路を見つけるのに、最適な方法でBFSを使用できますか?
答えて
トポロジカルな並べ替えは、1つのDFS実行であること以外は何もありません。次に各頂点が完成すると、リンクされたリストの前面に配置されます。実行時間はO(V + E)です。私が前に言ったように、私はここでは「BFSを使ってトポロジカルな並べ替えをすることができますか?これはすでに尋ねられ、答えられています。
あなたが意味するものが単なるBFSであれば、私はいいえと言います。これを見てくださいexample。トポロジカルソートは、グラフGにエッジ(u、v)が含まれている場合、uが順序付けの前にvのように表示されるように、すべての頂点の線形順序付けです。この例では、cからdのエッジがありますが、cの前にdが表示されています。トポロジカルなソートを見つけるためにBFSを更新できると思いますが、DFSを実行するのと同じ複雑さがあります。私はあなたにこのポストを見ることをお勧めしますUsing BFS for topological sort
しばらくトポロジカルソートを忘れてみましょう。ソースノードsから始まるDAGの幅優先横断探索を使用すると、遠隔配列(無限に初期化された)を維持してO(V + E)時間内に他のすべてのノードまでの最短距離を見つけることができます。ノードに現在格納されている値よりも小さい値が得られます。だから私の元の質問に戻って、最短パスを見つけるためにDAGのノードを横断するためのトポロジカルな順序を使用するのと同じ複雑さのこのアプローチではありませんか? –
- 1. 重み付けされていないグラフの最短経路
- 2. 有向非循環グラフから最大点を見つける方法は?
- 3. 双方向A *最短経路を見つけられない
- 4. Dijkstra'sを使用して重み付き有向グラフで最も重みの低いサイクルを見つける
- 5. 指定された頂点を通過する有向グラフの最短経路を見つける
- 6. 有向巡回グラフのすべてのノードをカバーする最短経路を見つけるにはどうすればよいですか?
- 7. ArangoDB:すべての最短経路を見つける
- 8. 迷路での最短経路を見つける、SQL
- 9. Cの迷路で最短経路を見つける
- 10. three.jsメッシュの最短経路を見つけますか?
- 11. 義務的なノードを通過させた有向グラフの最短経路
- 12. グラフとプリントルーティングテーブルの最短経路を見つける
- 13. 色付きエッジを持つ重み付きグラフの最短経路
- 14. 使用座標から最短経路を見つける方法 - Matlab
- 15. 行列の最短経路を見つける方法
- 16. 非バイナリツリーのルートからリーフまでのすべてのパスを見つける最適化された方法
- 17. 環状の2つの所与のノード間の最短経路は、環状の2つの所与のノード間の最短経路を取得するためにどのように重み付けグラフ
- 18. 迷路で最短経路を見つける
- 19. 最短経路を見つけるためのダイクストラのアルゴリズム?
- 20. bfsを使用するすべての頂点間の最短経路
- 21. ユニエイト有向グラフを表現し、最短経路を見つける方法は? Java
- 22. ゲームの経路探索:重み付けされたサーフェスを持つ2点間の最短経路を見つける
- 23. サイクル指向の最短経路グラフ
- 24. Neo4jすべてのノードでフィルタを使って最短経路を見つけよう
- 25. Tinkerpop 3.1の2つのノード間の最短経路を見つける最良の方法
- 26. 最小重み無向グラフのBFSグラフスパン
- 27. Neo4jの最小ホップ数で最短経路を見つけるには?
- 28. ConwayのGame of Lifeとの最短経路を見つけますか?
- 29. 重み付け有向グラフの幅広い最初の検索
- 30. GraphViz、2つのノード間の最短経路を見つけよう
あなたは(最も最適な方法で)何を意味するのですか?もしあなたが意味するものが複雑ならば、はい。トポロジカルな並べ替えはDFSのアプリケーションであり、その理由はO(V + E)の複雑さです。 「私たちはBFSを使ってトポロジカルなソートを行うことができますか?」と問いかけるのは自然です。この質問は既に尋ねられています。 – Abdulhakeem
私は、ノードをトポロジカルな順序で訪問するのではなく、単にBFSを使うことができたことを意味しました。 –