5

アセンブリ参照が有向非巡回グラフである必要があるアプリケーションを分析しようとしていますが、そうではありません。サブアセンブリが 1 つのサブサブアセンブリの異なるバージョンを参照するという関連する問題もあります (エッシャーを考えてください... ) 。

私がやりたいのは、アセンブリとサブアセンブリの各ペアを分析し、どこが間違っているかを把握することです。

これに適したデータ構造とは何かについてのガイダンスが必要です。不変のものを構築できるかどうかはあまりわかりませんが、内部で変更可能にしてから、最後に不変に変換してもかまいません。

問題のもう 1 つの部分は、データ構造を埋めるためにどのようなアルゴリズムを使用する必要があるか、またその後で問題を「分析」するために使用する必要があるということです。

4

3 に答える 3

3

NDependを使用するだけで、アセンブリを分析し、依存関係のサイクルを検出します。

本当にこれを自分でやりたい場合は、QuickGraphを使用して依存関係グラフをモデル化します。トポロジカル ソートなどのグラフ アルゴリズムも含まれています。

于 2010-06-24T13:14:42.220 に答える
2

内部で変更可能にして、最後に不変に変換してもかまいません。

全体を通して不変のデータ構造を使用する方が簡単な場合があります。特に、グラフをMapソースノードから宛先ノードのセットまで簡単に表すことができます。トポロジカルソートでは、宛先ノードのソースノードに効率的にアクセスする必要があるためMap、反対方向に進む別のグラフでグラフを拡張することができます。

これをF#で実装したところ、トポロジカルソートはわずか12行のコードです... :-)

于 2010-06-25T20:51:16.567 に答える
1

やりたいことは「トポロジカルソート」と呼ばれます。ウィキペディアに概要があります。

http://en.wikipedia.org/wiki/Topological_sort

于 2010-06-24T09:13:38.033 に答える