2011-09-15 8 views
3

私はアプリケーションのリストを持っています。私はそれらを特定の方法で注文し、その順序でインストールする必要があります。このリストを注文するには?

考慮すべき事項:

一部のアプリケーションには、別のアプリケーションが必要です。

次のアプリケーションをインストールする前に再起動が必要なアプリケーションもありますが、このアプリケーションをリストの最後に置いておきたい場合がありますが、その中には再起動を必要としないアプリケーションが必要な場合があります。再起動も、再起動が必要なアプリケーションの実行も必要ありません。

例:

P1 (Reboot) 
P2 (Needs P3) 
P3 
P4 (Needs P1) 
P5 (Reboot and needs P3) 
P6 (Reboot) 
P7 

そこで、我々はそのためにアプリを持っている場合:

P1 - P2 - P3 - P4 - P5 - P6 - P7 

を正しい順序は、(例えば)以下のようになります。

P3 - P7 - P2 - P1 - P4 - P5 - P6 

の場合再起動が必要なアプリを必要とする非再起動アプリ(P4のような)は、他のアプリよりリストの上にいれば良いでしょう再起動アプリ(P5 - P6)

+1

あなたの質問が閉鎖されるのを避けるためには、要件の説明をトーンダウンし、*実際に質問しているテキストの量を増やすことを検討する必要があります*。 –

答えて

3

topological sortingアルゴリズムが必要です。

+0

この並べ替えでこの最後の慎重な記述があるかどうかわかりません(reebotを必要とせずにreebotを置き換えます)。たぶんソートの2つのタイプを結合することが解決策になります。私は見てみましょう、ありがとう – Deitools

+2

これは確かにグラフの問題です。 IMOのアプリケーションは、接続されたコンポーネントを検出することで最初にグループ化する必要があります。http://en.wikipedia.org/wiki/Connected_component_%28graph_theory%29 –

関連する問題