一連の依存関係を表す大きなグラフがあります。
- A -->B
- A -->C
- B -->F
- C -->G
- D -->E
- に --> に
- ファ→ハ
- ふ→い
- ち→か
- J -->K
B を開始ノードとして指定すると、結果は次のようになる必要があります: BFIHK
B から到達できないため、他のノードは必要ありません。
ユーザーはノードを指定できます。すべてのパスとそれらのパス内のノードを収集し、それらのノードのトポロジ ソートを出力する必要があります。
現在、私はこれを実装しています
新しいグラフを作成する
指定されたノードからすべての発信エッジを抽出します。
それらのエッジをグラフに追加します。これらのエッジからノードを取得し、それらを新しいグラフに追加します。
手順 3 のノードごとに、(2) と (3) を繰り返します。
その新しいグラフでトポロジカル ソートを実行し、ノードの順序を取得します。
これを行うための他のより良い方法、またはノードのサブセットのトポロジカルな並べ替えを見つけるための既知のアルゴリズムはありますか?