网络原理考点之链路状态路由算法计算部分

本文深入解析了链路状态路由算法中的迪科斯彻算法(Dijkstra),详细阐述了其核心思想——贪心策略,以及如何通过松弛过程找到源点到各个顶点的最短路径。通过实例分析,逐步演示了算法的具体实施步骤。

链路状态路由算法,给出的例子便是迪科斯彻算法,Dijkstra,尽管在2018年8月23日用C和C++实现了算法,详见《迪科斯特算法》,但好像没有用文字总结一下,结合题再加深下吧。

如题:2018年10月

 分析:

要解决的问题:

广度优先搜索解决赋权有向图或者无向图的单源最短路径问题。 

思路:

Dijkstra算法采用的是一种贪心的策略,声明一个数组dis来保存源点到各个顶点的最短距离

一个保存已经找到了最短路径的顶点的集合T。

步骤:

1、从dis数组选择最小值,则该值就是源点s到该值对应的顶点的最短路径,并且把该点加入到T中。

2、重新计算新加入的顶点到达其他点的路径长度是否比源点直接到达短,如果是,那么就替换这些顶点在dis中的值。

3、从dis中找出最小值,重复1~3.直到遍历完树(此时的树是脑补出来的),最终的dis数组就是最短的距离。

下面结合题来做一下详细的分析:

树已经给画出来了,所以不需要脑补了。下面就是求迪科斯彻算法就行了。

根据以上的步骤:

1、选建立一个从源点开始的最短路径数组及最短路径顶点数组:T[]={x},dis[]={dis[x]=0,dis[y]=7,dis[v]=3,dis[w]=1};

注:dis[*]代表从选定的最短顶到到*的距离,如dis[y],代表从x到y的距离

2、从dis中找到距离最小的路径显然是dis[w],将W加入到T中,然后重新从W出发计算与它直连边的距离。T[]={x,w};dis[]={ dis[v]=1+dis[w]=1+1=2,dis[u]=5+dis[w]=

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

guangod

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值