最短路径之Dijkstra算法--简单易懂

最短路径:任意A点到B点所经历的最短距离。
主要算法有:
Dijkstra算法(迪杰斯特拉算法),Floyd算法(弗洛伊德算法),A*算法等。
今天开始逐步介绍下他们的算法思想核心:

Dijkstra算法(迪杰斯特拉算法)
这个算法的思想我觉得和Prim算法相似,但是Prim算法是求最小生成树,求的一个图中连接所有点的最小权值,但是Dijkstra算法是求的图中任意两点的最短路径,所以二者在保存最小权值数据的方式不同,Prim主要获取的是邻接点的最小权值(两点必须是相邻的),Dijkstra获取的是点到点的最小权值(两个点可以不相邻,可以通过别的节点相连接,但是目的是点到点的最小权值),这样一想,是不是简单多了。
在这里插入图片描述
找出第一个最短距离的点:
在这里插入图片描述

继续找下一个最短距离的点:
在这里插入图片描述

在这里插入图片描述
就按照这种思想一直寻找下去,我们就会获得一个最短的权值数组,和一个前驱数组,通过前驱数组我们就知道了最短路径的路径轨迹,通过最短权值数组,我们就知道了最短路径。
在这里插入图片描述

迪杰斯特拉算法的时间复杂度是O(N^3)。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值