0

ウィキペディアやブログへのリンクを私の顔に投げ始める前に、私に聞いてください。

依存関係の並べ替えを行うのに最適なアルゴリズム/関数を見つけようとしています... 各アイテムには、依存関係のリストがあります。

イテレータベースのものが欲しいのですが、それはそれほど重要ではありません。

重要なのは、アルゴリズムがどのアイテムが依存関係サイクルの一部であるかを正確に指摘することです。この場合の詳細なエラー情報を提供したいと思います。

実際には、仕事を遂行するために必要なブール値/関数を持つ「依存関係ノード」クラスからアイテムをサブクラス化することを考えています。かっこいい(しかし説明的な)名前は大歓迎です:)

4

2 に答える 2

2

通常、トポロジカルソートと呼ばれます。ほとんどの書籍/論文/トポロジカル ソーティングをカバーするものは何でも、当然のことながらサイクル検出もカバーします。

于 2011-04-21T21:02:13.247 に答える
1

依存関係サイクルがある場合、それを見つけるのがなぜそれほど難しいのか、正確にはわかりません! すべての依存関係を見つけるために bfs アルゴリズムを適用しているときに、既に渡されたノードがあるかどうかを確認するだけです。ある場合は、下に来た方法をロールバックして、ノードをずっと上に再アクセスし、指定されたノードで最初にアクセスするまですべてのノードをマークします。パス内のすべてのものがサイクルとしてマークされます。(コメントを残してください。必要に応じて、そのためのコードを提供します)

于 2011-04-21T23:21:53.347 に答える