抽象的な言葉での質問:
クエリ時に排他的な頂点のサブセットを含む有向非巡回グラフ (DAG) があります (サブセットごとに 1 つのアイテムのみがクエリの結果に存在する必要があります)。グラフ構造を照会するとき、グラフ内の頂点の既知のサブセットから単一のアイテムのみを選択しながら、特定の頂点から流れる頂点のセットを取得したいと考えています。
具体的な質問:
アセンブリ (頂点) とその依存関係 (エッジ) を格納する DAG があります。アセンブリまたはアセンブリのセットを指定すると、関連するすべてのアセンブリとその依存関係のセットを取得するためにクエリを実行する必要があります。難しいのは、各アセンブリには複数のバージョンがあり、アセンブリの 1 つのインスタンスしかプロセスにロードできないことです。特定のアセンブリの依存関係は、アセンブリのさまざまなバージョン間で異なります。
この問題または一連の問題に名前はありますか? 解決策を見つけるために調査できる標準アルゴリズムは?
考えられるソリューション分野:
推移閉包は良い解決策に近いように見えますが、サブセット (アセンブリ バージョン) から選択されたアイテムは、グラフを通過するパスに応じて変化します。おそらく複数の分岐を通過するため、グラフを通過するパスをトレースして生成する必要があります。推移閉包。
グラフデータベースはかなり役立つかもしれませんが、絶対に必要でない限り、今はその道をたどりたくありません。