指向グラフ内のサイクルを検出するためのコードを書き込んで、サイクルがない場合は同じの位相順を返していました。
私はそれを探していましたが、DFSのような異なるテクニックと、指向グラフのサイクルを検出するためのトポロジカルソーティングに遭遇しました。
これら2つの間に違いはありますか?
トポロジーソートは次のようにしてDFSを使用します。
実行時:O(V + E)
本質的に、トポロジのソートアルゴリズムはDAG上でDFSを使用します。返されたリストが正しいトポロジーの順序で表示されるように、DFSプロパティは重要です。ただし、上記の答えに見られるように、はいDFSを使用せずに順序付けできません。例は Kahnのアルゴリズム と並列の並べ替えです。
明確なアイデアを得たい場合は、次の問題を試すことができます。
まず、あなたは簡単なDFSを飛び越えるかもしれませんが、それは場合によっては失敗します。
例:次のテストケースではDFSが失敗します。
5 4(それぞれ頂点とエッジのもの)
(エッジの説明)
1 2
2 3
1 4
4 3