具有任意多个节点的Bellman-Ford距离矢量算法

时间:2012-11-22 09:21:35

标签: algorithm router graph-algorithm bellman-ford

我正在尝试为模拟路由器的类编写程序,到目前为止我已经设置了基础(“路由器”可以通过模拟服务器向连接到服务器的其他“路由器”发送和接收数据包) 。每个数据包仅包含该路由器的距离向量。当路由器收到数据包时,应该使用Bellman-Ford算法相应地更新它自己的距离向量。我遇到的问题是我发现自己无法实现实际算法而不会作弊并使用邻接矩阵。

例如,假设我连接了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接收数据包。使用Bellman-Ford算法计算每个其他路由器的最低成本如下。

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))

所以我遇到的问题是我不能为我的生活弄清楚如何实现一个算法来计算路由器到其他所有路由器的最小路径。如果您确切地知道将有多少路由器,那么制作一台路由器就很容易了,但是当路由器的数量可以任意大时,您会怎么做呢?

1 个答案:

答案 0 :(得分:2)

您永远无法确定DVMRP的最短路径。 一件事你没有网络的全局视图。每个路由器的运行程度与它看到的一样多,并且它看到的内容受到限制 - 可能会产生误导。查看DVMRP的循环问题。 DVMRP永远无法处理完整的网络信息。

它也不具备可扩展性。其性能越来越低 随着数量或路由器的增加。这是因为 距离矢量更新消息泛滥并且这些消息的当前准确性。

它是最早的多播协议之一。它的表现 匹配单播规模的RIP。