この依存関係グラフを考えると、下から上に反復するための「良い」アプローチは何ですか?
各「サイクル」の期待される結果は次のとおりです。
Iteration step "1": Project B, Project D, Project Z, Project O
Iteration step "2": Project C, Project W, Project V, Project Q
Iteration step "3": Project A, Project M
Iteration step "4": Start X // End
ブレーンストーミング
// PSEUDO CODE: Find and return "next projects fixes" to perform.
// -> All projects with no or already fixed dependencies.
FUNC FindNextDependciesToFix ( NODE StartNode, BYREF LIST<NODE> RefNextProjectsToFix )
{
... // Algorithm ?
}
「深さ優先検索」が機能しない理由:
DO
{
FindNextDependciesToFix (StartX, FixNextList);
CallASYNCAndWaitForEndOfFix (FixNextList);
// <- Wait till end of project fix (async...)
} WHILE ( FixNextList.IsEmpty() );
アルゴリズム
私は本当に車輪の再発明をしたくありません.この問題を解決するアルゴリズムはすでにありますか、それとも「賢い」アプローチを持っている人はいますか?