[Algo]最短路径搜索

- 从有向带权的图中获取某个源点到剩余的其他节点的最短路径的算法,权表示的是路径长度。

- 维护一个长度数组v[n],n就是节点个数,每个数组都存储源点到对应的节点的长度,一开始初始化的时候,由于都不知道,所以都初始化成无穷大,然后开始算法:

- 首先是源点到源点的,初始化成0。

- 然后看所有和源点相连的所有其他节点路径,这些路径是已知的了,发现比数组中当前的无穷大小,所以更新到数组中,即第一步是【更新】。

- 完成后,从v数组中选择最小的路径长度对应的节点,这个就是新选择的节点,这个节点的路径和对应的长度就确定了,可以做一个标志,表示这个节点已找到最短路径,即第二步是【贪婪寻找】。

- 由于新加入了一个新节点,又有与之相邻的节点路径是已知的了,可以再次尝试更新,即重复再次运用【更新】这个步骤,更新完毕后,再次运用【寻找】如此反复,直到所有的节点都标记成路径已经找到了,从而找到了一颗最短路径生成树。(树上的每一条唯一路径,从源点到节点x,就是最短路径。注意:这个方法在使用前需要先清除环路,这个对于小图比较简单,对于大型的图,可能先要检查并且清除环路,(环路的存在对于最短路径计算没有意义)会增加计算量。最短路径是一定不可能经过环路的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值