ルーターをシミュレートするクラスのプログラムをコーディングしようとしていますが、これまでのところ基本的な設定は完了しています(「ルーター」は、エミュレートされたサーバーを介して、サーバーに接続されている他の「ルーター」とパケットを送受信できます)。各パケットには、そのルーターの距離ベクトルのみが含まれます。ルーターがパケットを受信すると、ベルマンフォードアルゴリズムを使用して、ルーター自体の距離ベクトルを適宜更新することになっています。私が抱えている問題は、不正行為と隣接行列を使用せずに実際のアルゴリズムを実装できないことに気付いていることです。
たとえば、次のように3台のルーターを接続しているとします。
A ---1--- B ---2--- C
つまり、AとBはリンクコスト1で接続され、BとCはリンクコスト2で接続されます。したがって、ルーターがすべて起動すると、ルーターは、直接接続されている各ネイバーにパケットを送信します。距離ベクトル情報。したがって、AはルーターB(0、1、INF)を送信し、BはAとC(1、0、2)を送信し、CはB(INF、2、0)を送信します。ここで、INFは2つのルーターが直接接続されていないことを意味します。
それでは、ルーターAがルーターBからパケットを受信しているところを見てみましょう。ベルマンフォードアルゴリズムを使用して他のルーターの最小コストを計算するには、次のようにします。
Mincost(a,b) = min((cost(a,b) + distance(b,b)),(cost(a,c) + distance(c,b))
Mincost(a,c) = min((cost(a,b) + distance(b,c)),(cost(a,c) + distance(c,c))
したがって、私が直面している問題は、ルーターから他のすべてのルーターへの最小パスを計算するアルゴリズムを実装する方法を一生理解できないことです。ルーターの数が正確にわかっていれば簡単に作成できますが、ルーターの数が任意に大きくなる可能性がある場合はどうすればよいでしょうか。