我正在阅读链接状态与距离矢量路由协议中使用的算法。我知道 Dijkstra 的算法用于链路状态路由,我明白为什么会这样。但我也读过 Bellman-Ford 算法对距离矢量路由更有用,因为它可以处理负边权重?我对此感到困惑。如何在真实网络中拥有负边权重?我的理解是,边缘权重对应于数据包在一个路由器和下一个路由器之间通过的估计时间。这个值怎么可能是负数?
Bellman-Ford 算法如何应用于真实网络?
网络工程
路由
2022-02-19 00:35:03
2个回答
负边权重在算法的路由应用中确实不是很有用。能够处理负权重是 Bellman-Ford 与 Dijkstra 的不同之处之一,但这并不是距离向量算法首选它的原因。
运行 Dijkstra 的算法需要完全了解网络中的所有边和权重。与链路状态路由算法不同,距离矢量算法不构造这样一个完整的网络图。
这意味着 Dijkstra 算法不能用于距离矢量算法。(分布式)Bellman-Ford 在没有完整网络视图的情况下工作,因此可用于距离矢量算法。
我认为您误读/误解了这篇文章。并不是说 BF 更适合路由,因为它适用于负权重,这只是数学算法的一个特征。正如您所指出的,在“现实生活”中,不存在负权重。但是虚数也不是,但你可以用它们做数学。
其它你可能感兴趣的问题