最短路径算法:Dijkstra算法探险记

想象一下,你是一只小蚂蚁,名字叫小明。你住在一个大大的花园里,这个花园有很多小路,小路之间还有交叉点,就像是一个迷宫一样。现在,你接到了一个任务:找到从你家到花园里一个特定地方(比如一块超级大的糖果)的最短路径!

第一步:画出地图

首先,我们需要一张地图来标记所有的小路和交叉点。我们可以把每个交叉点看作是一个“节点”,把连接这些节点的小路看作是“边”。每条边上都有一个数字,表示走过这条边需要几步。

在这里插入图片描述

假设节点A是你的家,节点F是那块超级大的糖果。每条边上的数字表示从一个节点走到另一个节点需要的步数。

第二步:准备出发

在开始探险之前,我们做一个列表,记录从家(节点A)到每个节点的最短距离。一开始,除了你家(距离是0),到其他地方的距离都是“无穷大”,因为我们还不知道怎么走。

节点 | 最短距离
A    | 0
B    | 无穷大
C    | 无穷大
D    | 无穷大
E    | 无穷大
F    | 无穷大
第三步:一步一步探险

现在,我们开始探险!我们先看看从家(节点A)出发,可以直接走到哪些节点,并更新我们的列表。

  1. 从A到B和C
    • A到B是2步。
    • A到C是4步。

更新列表:

节点 | 最短距离
A    | 0
B    | 2
C    | 4
D    | 无穷大
E    | 无穷大
F    | 无穷大
  1. 接下来,我们看看已经走过的节点中,哪个节点的“最短距离”最小。现在,B的距离是2,是最小的,所以我们从B出发,看看能走到哪里。

    • B到D是1步,那么从A到D的最短距离就是2+1=3步。
    • B到E是3步,那么从A到E的最短距离就是2+3=5步。

更新列表:

节点 | 最短距离
A    | 0
B    | 2
C    | 4
D    | 3
E    | 5
F    | 无穷大
  1. 重复上面的步骤,这次我们从D出发(因为D的距离3是未走过的节点中最小的)。

    • D到F是2步,那么从A到F的最短距离就是3+2=5步。

更新列表:

节点 | 最短距离
A    | 0
B    | 2
C    | 4
D    | 3
E    | 5
F    | 5
  1. 继续这个过程,直到我们找到所有节点的最短距离,或者找到糖果(节点F)的最短距离。

最终,我们发现从家(A)到糖果(F)的最短距离是5步,路径是A-B-D-F。

完成探险!

恭喜你,小明,你已经找到了到糖果的最短路径!这就是Dijkstra算法,它帮助我们找到从一个地方到另一个地方的最短路径。

  • 8
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

大数据张老师

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

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

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

打赏作者

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

抵扣说明:

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

余额充值