Bellman-ford算法与Dijkstra算法(RIP和OSPF的基本算法)
2015-03-10 19:17
931 查看
这里讨论下RIP和OSPF的基本算法,在CISCO课程中讨论RIP和OSPF的区别有不少,但是回溯源头,它们理论算法里面的原理差不多,比较大的区别主要有三点
1.Bellman-ford的链路距离是估算的,Dijkstra是传输链路距离给邻居的。PS:这就说明了为什么RIP要采用跳数,而OSPF用的是cost,也就是带宽作为主要参数,因为估计在具体实现中是不大可行的,故采用不同的具体度量值。
2.Bellman-ford的持续进行链路距离的计算,而Dijkstra只进行一次计算就可以了,这点可能表达的不是太准确,大致意思
3.还有点就是Bellman-ford是不停在从目标出发所有相邻的节点上计算最小的路径,然后往前推进,而Dijkstra是从最小标记的节点往前推进,这里看后面解释:
这里用图例解释下(直接抓的是jean walrand的书上的图)
首先这是Bell-man算法的一个收敛图,图中解释了一个收敛的过程。
Bell-man算法采用节点间链路长度估算的方式,公式为L( i ) = min { d( i , j )+ L( j ) },其中d( i , j ) 表示节点 i 到 j 的链路长度,L( j )是从节点 j 收到的最短长度的估算。
即每一个节点初始时候以∞作为标识,从目标点向源点收敛,目标点作为0,然后相邻的标记为链路长度,当出现到目标点更短的链路长度时候,重新进行标记,直到到达源,从而得出最短的路径,每个节点都向它的邻居节点发送到所有节点的估算值。
这是Dijkstra算法的收敛图,具体过程有点相似Bell-man。
首先还是从根(也就是目标)出发,根标记为0,其他节点标记为∞,然后按照标号最小的走,比如第一步2最小,然后从2往前走,其相邻节点原来是5,现在由于2+2=4,故更新下,然后再比较所有节点里面,标记最小的是3,然后从3走,发现11,大了,然后返回最小的4继续走,这样一路一路从最小标记的节点往相邻走,最终达到收敛。
PS:这里还有点区别在于Bell-man一直从相邻节点往前走,然后进行比较,把节点的标记逐步最小往前推进,从前往后看,每一个节点都是相对最小的。而Dijkstra是每次从标记值最小的节点往前走,每次都是走最小,所以它走的顺序和Bell-man的顺序是不一样的。
1.Bellman-ford的链路距离是估算的,Dijkstra是传输链路距离给邻居的。PS:这就说明了为什么RIP要采用跳数,而OSPF用的是cost,也就是带宽作为主要参数,因为估计在具体实现中是不大可行的,故采用不同的具体度量值。
2.Bellman-ford的持续进行链路距离的计算,而Dijkstra只进行一次计算就可以了,这点可能表达的不是太准确,大致意思
3.还有点就是Bellman-ford是不停在从目标出发所有相邻的节点上计算最小的路径,然后往前推进,而Dijkstra是从最小标记的节点往前推进,这里看后面解释:
这里用图例解释下(直接抓的是jean walrand的书上的图)
首先这是Bell-man算法的一个收敛图,图中解释了一个收敛的过程。
Bell-man算法采用节点间链路长度估算的方式,公式为L( i ) = min { d( i , j )+ L( j ) },其中d( i , j ) 表示节点 i 到 j 的链路长度,L( j )是从节点 j 收到的最短长度的估算。
即每一个节点初始时候以∞作为标识,从目标点向源点收敛,目标点作为0,然后相邻的标记为链路长度,当出现到目标点更短的链路长度时候,重新进行标记,直到到达源,从而得出最短的路径,每个节点都向它的邻居节点发送到所有节点的估算值。
这是Dijkstra算法的收敛图,具体过程有点相似Bell-man。
首先还是从根(也就是目标)出发,根标记为0,其他节点标记为∞,然后按照标号最小的走,比如第一步2最小,然后从2往前走,其相邻节点原来是5,现在由于2+2=4,故更新下,然后再比较所有节点里面,标记最小的是3,然后从3走,发现11,大了,然后返回最小的4继续走,这样一路一路从最小标记的节点往相邻走,最终达到收敛。
PS:这里还有点区别在于Bell-man一直从相邻节点往前走,然后进行比较,把节点的标记逐步最小往前推进,从前往后看,每一个节点都是相对最小的。而Dijkstra是每次从标记值最小的节点往前走,每次都是走最小,所以它走的顺序和Bell-man的顺序是不一样的。
相关文章推荐
- Bellman-ford算法与Dijkstra算法(RIP和OSPF的基本算法)
- [算法与数据结构] - No.10 图论(3)- 最短路Dijkstra算法、Bellman-Ford算法和Floyd算法
- 路由协议--OSPF与RIP(附带Bellman-Ford算法)
- 路由协议--OSPF与RIP(附带Bellman-Ford算法)
- 单源最短路径算法--Dijkstra算法和Bellman-Ford算法
- 算法——单源最短路径:Bellman-Ford算法、Dijkstra算法
- Dijkstra算法,Bellman-Ford算法和BFS算法解决有向图的单源最短路径问题
- 单源最短路径算法--Dijkstra算法和Bellman-Ford算法
- 【视频】CCNA——路由协议(静态路由协议、RIP、EIGRP、OSPF)的基本配置
- 图算法 单源最短路径 Bellman_Ford算法(边权值为负情况)
- 算法 Bellman-Ford算法,Johnson算法
- 最短路算法 :Bellman-ford算法 & Dijkstra算法 & floyd算法 & SPFA算法 详解
- 算法起步之Bellman-Ford算法
- 1874 畅通工程续 模板题 Dijkstra算法 Bellman_Ford算法
- rip ospf eigrp 等基本配置信息
- 算法笔记---最短路径之bellman-ford算法
- 带负权图的单源最短路径算法:Bellman-Ford算法
- 2544 最短路 Dijkstra算法 Floyd算法 Bellman_Ford算法 SPFA算法
- SPFA 算法的学习--基于Bellman-Ford算法的一种队列实现
- HDU 2544 最短路 Dijkstra 算法、 Floyd 算法 Bellman_ford算法