天天看点

初识 Dijkstra算法

Dijkstra 算法的思想

Dijkstra 算法说白了就是一个求最短路径的算法,用于从一个指定的点到其余各个点的最短路径,所以也叫做“单源最短路径”

例如求0到4的最短路径

初识 Dijkstra算法

看似好复杂好复杂,其实我们完全可以逐个击破。

首先我们需要一个列表来存储该节点是否被访问了,对该列表进行初始化,全都为false。

初识 Dijkstra算法

然后我们还需要一个列表,用来记录从起点到“终”点的距离。(这里我们要将它看成无穷大)如图:

初识 Dijkstra算法

之后呢还需要最后一个列表,这个列表用来存储上一个节点,用-1来表示不存在这条边。如图

初识 Dijkstra算法

然后我们就可以开始了

从初始节点0开始,我们规定0节点到0节点的距离为0,然后寻找和它直接相连的两条边,并记录列表进行更新。like this

初识 Dijkstra算法

然后肯定就是进行比较,找到最短的边呗,显而易见就是1号节点,让后就以该节点为初始节点重复操作就行啦。那么这里要注意一个问题就是更新数据的时候,我们要比较的是当新节点的距离加上边的值如果比对应节点小时,则更新,反之则保持不变。

说了这么多,还不如来张动图说的明白

初识 Dijkstra算法

Dijkstra 算法的概述图我也放这啦,慢慢看吧

初识 Dijkstra算法

由于本人也是小萌新,Dijkstra算法也才刚刚学到,希望对大家有些许帮助,发文章纯兴趣,大佬轻喷

图片来源于百度百科和b站upWAY_zhongup视频中截取

继续阅读