質問: ### 前提・実現したいこと 移動する複数のノードを用意する。ノードは近くのノードとつながることができる。送信元ノードと宛先ノードを設定して、いくつかのノードを経由した道を作る。(簡易的なモバイルアドホックネットワークのようなもの) javaで実装する。ただし、java.netはできるだけ使わない。 ノードはクラスで自分で定義しており、ノードの番号、座標、スピード、隣接ノードでできている。必要であれば追加もOK。 移動モデルもランダムウェイポイントモデルを実装済み。 ### 発生している問題 送信元ノードから宛先ノードにおくる際のルートを決める部分のコーディングがうまくいかない。 例えば、以下のようにノードを5つ用意したとする。 0| 1,2 1| 0,3 2| 0,3 3| 1,2,4 4| 3 左の数字が自身のノードの番号で、右の数字が隣接しているノードの番号である。送信元ノードを0、宛先ノードを4とする。 この場合ルートとしては、0,1,3,4または、0,2,3,4という経路になる。これを、ルートが移動しているので隣接ノードが変わることも考慮してプログラムしなければならない。よって、基本的には現在のノードの隣接ノードに宛先ノードが無いかをチェックして、次のノードに進みまたそのノードの隣接ノードに宛先ノードが無いかをチェックしてというのを最大ホップ数(ノード数)分繰り返すことになる。 もし、送信元ノードの隣接ノードに宛先ノードがあった場合はホップ数が1なので、以下のコードのようにすれば良いだけなのだが、ホップ数が増えるごとに複雑になり、先ほどの例だと2ホップ目の時点でノード1,ノード2という2つの候補からさらに枝分かれしていくような樹形図のような構造になってしまう。どのようにしたらうまくまとめられるか。 ``` if(送信元ノードの隣接ノード.contain(宛先ノード)){ ルート.add(送信元ノード) return ルート } ```
回答: 幅優先探索でできました。