1

ビルドスクリプトでは、アプリケーションをコンポーネントに分割しています。コンポーネント間の依存関係を見つけるために使用するアルゴリズムはどれですか?

シナリオは次のようになります。

いずれかのコンポーネントは、1つ以上のコンポーネントによって異なる場合があります。

例:私たちはコンポーネント1〜コンポーネント12を持っています。

コンポーネント1はコンポーネント2とコンポーネント3に依存します。

コンポーネント4は

私はそれがこの順COMPONENT2、component3、コンポーネント1、component6とcomponent4に構築する必要があり、依存関係を持つコンポーネント1とcomponent4を構築するためにスクリプトで指定した場合はコンポーネント2とcomponent6に依存します。

依存関係をよりよく見つけて、コンポーネントを2回実行する必要がないことを確認するのに役立つアルゴリズムはどれですか。

答えて

3

依存関係グラフを作成し、topological sortingを使用してコンパイル順序を決定できます。

+2

これは尋ねられたことを行います。サイクリック依存関係に終わると、http://en.wikipedia.org/wiki/Strongly_connected_componentからリンクされたアルゴリズムの1つは、サイクリック依存関係が何であるかを少し詳しく説明します。 – mcdowella

1

横断検索を使用してグラフを横断し、すべての新しいノードをリストに追加するだけです。現在のノードがすでにリストに入っている場合は、そのブランチを中止します。最後に、リストから逆の順序でコンポーネントをビルドします。

編集:適切にカフェインされていません。ソウルチェックが示唆しているようにトポロジカルソートを使用する。私の解決策はうまくいかないかもしれません。

関連する問題