迪杰斯特拉算法_算法之迪杰斯特拉(Dijkstra)算法

迪杰斯特拉算法是由艾兹赫尔·迪杰斯特拉在1956年提出的,用于解决带权有向图的单源最短路径问题。算法步骤包括标记初始顶点、寻找最小当前距离的非访问顶点并更新其邻居的距离,直至所有顶点都被访问。使用邻接表和优先队列(如二叉堆或斐波纳契堆)可优化时间复杂度,从到达到更高效的解决方案。
摘要由CSDN通过智能技术生成

最短路径

生活中,我们常常会面临着对路径的最优选择问题,可能是路程最短,也可能是时间最短,这个的最短路径就类似路程最短的选择。

比如在上海,乘地铁去某个地方,上海的地铁路线很多,从地图上看上去就是一个网。去某个地方就会有多条路线的选择,我们一般就会选最短那条路线。当然,在现实生活中,还会考虑时间、换乘等因素,这里只是举个例子说什么是最短路径。

地铁换乘貌似一眼就可以看出来那条路线是最优的路线。但是在一些复杂的情况下,人眼就很难确定最优路线来,比如送外卖、自驾车等。人眼就很难做出最优选择,因为路况等因素,根本没法判断。这时就需要用算法来选择最佳路线了。这也是这篇文章的主角:迪杰斯特拉(Dijkstra)算法。

迪杰斯特拉算法

迪杰斯特拉(Dijkstra,又译戴克斯特拉)算法由荷兰计算机科学家艾兹赫尔·迪杰斯特拉在1956年提出。使用了广度优先搜索解决带权有向图的单源最短路径问题。通过一个顶点作为源节点然后找到该顶点到图中所有其它节点的最短路径,产生一个最短路径树。

迪杰斯特拉算法步骤

1.标记所选的初始顶点,当前距离为 0,其余顶点设为无穷大。
2.将具有最小当前距离的非访问顶点设置为当前顶点 C。
3.对于当前顶点 C 的每个邻居顶点 N:将当前距离 C 与连接 C—N 的边缘的权重相加。 如果它小于顶点 N 的当前距离,则将其设置为 N 的新当前距离。
4.将当前顶

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值