輸送ネットワークをシミュレートするために、有向グラフ (私は知っていますが、実装したことはありません) を使用してプログラムを作成しようとしています。
ユーザーは惑星名を入力し、その後にグラフ内の合計ノード数を表す整数を入力します。次に、ユーザーは各ノードを 1 つずつ調べます。ノードが持つネイバーの数と特定の名前を指定して名前を付けます。入力は次のようになります。
some_planet 4
node1 2 node2 node3
node2 1 node4
node3 1 node4
node4 1 node1
次に、node1 が到達できないノードを出力します。ただし、これを実装するにはいくつかの質問があります。
1) 大きい方がこれを収納しています。簡単な方法とは?私は LinkedList について考え、場所をリンクしようと考えました。次に、入力が何であれ、それらに対応するポインターをポップできます。ただし、最後の部分を行う方法がわかりません。
2) 次の大きな問題は、グラフの検索です。再帰的な depth-first-search を計画していました。このアルゴリズムに問題はありますか? ただし、この方法ですべてのノードを個別に検索する必要があるため、これをインクリメントする必要があります。すべてを for ループに入れることはできますか?
recursive-d-first-search(graph G, node start, node find)
if(start == find)
return true;
else
for every neighbor n of start
success = recursive-d-first-search(graph G, node n, node find);
if(success)
return true;
return false;