当前位置: 首页 > news >正文

Dijkstra最短路径算法

先重申游戏设定(和之前一致,方便你对照):

 

- 目标:从你座位(起点)到小明座位(终点),走最少步数(最短路径)。

 

- 教室地图(关键改1处:加一条“能直接到终点的路”):

 

1. 你→小红(1步);2. 你→小刚(1步);3. 小红→小明(1步);4. 小刚→小明(2步);5. 你→小明(3步)(新增的“直接到终点的路”,但步数多)。

 

- 工具:步数本(记最少步数)、小红旗(插在“步数确定不变”的座位上)。

 

关键场景:当你“第一次看到终点”时,怎么处理其他路?

 

咱们从游戏第三步开始,重点看“发现终点后,还要做什么”——

 

第一步:游戏开局(和之前一样)

 

- 步数本初始:你(0步,红旗)、小红(?)、小刚(?)、小明(?)。

 

- 从你出发,更新步数本:小红(1步)、小刚(1步)、小明(3步,因为你能直接走到他,要3步)。

 

- 插第二面红旗:选小红(1步,和小刚一样,先选小红)。

 

第二步:从“小红(红旗)”出发,第一次找到“到终点的近路”

 

1. 小红能到小明,只要1步。那“你→小红→小明”的总步数是:1(你到小红)+1(小红到小明)= 2步。

 

2. 对比步数本:之前你直接到小明要3步,现在2步更近!所以把步数本上“小明”的3步,改成2步。

此时步数本:你(0,旗)、小红(1,旗)、小刚(1)、小明(2)。

 

3. 重点来了:现在你已经知道“到小明只要2步”,但不能直接结束!还要处理“小刚”这条路——因为你还没看从小刚出发,能不能找到更近的路(虽然大概率不能,但必须确认,才不算漏)。

 

第三步:处理“没插旗的小刚”,确认其他路是否更近

 

1. 插第三面红旗:没插旗的座位里,小刚(1步)比小明(2步)近,所以先给小刚插红旗。

 

2. 从小刚出发,看能到谁:小刚能到小明,要2步。那“你→小刚→小明”的总步数是:1(你到小刚)+2(小刚到小明)= 3步。

 

3. 对比步数本:小明当前是2步,3步比2步远,所以步数本上“小明”的步数不变(还是2步)。

这一步的作用是:确认了“小刚这条路”到终点更远,所以不用改,咱们之前找到的2步才是真的最短。

 

第四步:最后给“小明”插红旗,游戏结束

 

1. 现在没插旗的只有小明(2步),给他插红旗。

 

2. 插旗后,“小明的步数(2步)”就100%确定了——因为所有能到小明的路(你直接去、小红去、小刚去)都检查过了,没有比2步更近的。

 

3. 最终最短路径:你→小红→小明(2步)。

 

总结:“一条路先到终点,怎么看其他路”的核心逻辑

 

就像你找小明时,虽然先发现“走小红的路只要2步到终点”,但必须再去看“小刚的路”要几步——

不是怀疑“小红的路”不对,而是要确认“有没有其他路比它更短”。只有把所有能到终点的路都算一遍,对比出最小的那个数,才能确定“这就是最短路径”,不会漏掉更优的选择。

 

比如你妈妈给你10块钱买零食,你先看到A店薯片卖8块,不能直接买,得再看看B店是不是卖7块——只有都看了,才能确定在哪家买更省钱,和算法的道理一模一样!

http://www.dtcms.com/a/438273.html

相关文章:

  • 扶沟县网站开发怎么知道一个网站是哪家公司做的
  • mysql基于GTID恢复数据
  • LabVIEW正弦波去噪与信号处理
  • winform 五子棋
  • Java实现BCH与BTC的地址相互转换
  • CyberSecurity:SSL Client-Initiated Renegotiation 客户端发起的重新协商ddos攻击
  • 关于Mybatis-Plus的insertOrUpdate()方法使用时的问题与解决—数值精度转化问题
  • 石家庄做网站制作公司网站写作赚钱
  • Docker、容器、虚拟机到底是什么
  • 西安微信商城网站开发做阿里巴巴怎么进公司网站
  • Go语言入门(17)-接口
  • WebPages 安全
  • 安卓基础组件030-进程和线程
  • [ vue 前端框架 ] 基本用法和vue.cli脚手架搭建
  • 鸿蒙Next中使用Socket进行网络通信:完整指南与实战
  • dw如何做商业网站淘宝网站建设流程
  • 网站做好了 怎么做解析wordpress 怎么迁移
  • GNS3 3.0.5新版教程,以及Cloud设备找不到VMware网卡的解决方法
  • 比奇堡合唱团制作教学,AI翻唱教学动漫角色歌曲
  • 活动展板设计:大尺寸 + 高分辨率,打印清晰
  • 深圳市城乡建设部网站首页一个网站如何做盈利
  • 【IMX6ULL驱动学习】I2C驱动
  • 基于物联网数据采集的大型应用程序软件架构设计:核心要点、结构内容与链路关系
  • 【连载5】云数据库 MySQL 热点更新功能介绍
  • (四)Webpack、Slot与Vue CLI脚手架
  • 【附源码】个人事务管理系统的设计与实现
  • 基于PCIe(XDMA)的多路(1-32路)信号采集与回放子系统,多路视频、AD、光纤等信号,支持PR over PCIe
  • 【STM32项目开源】基于STM32的智能电子秤
  • 网站建设专用图形库西安网站快速排名提升
  • 红色php企业网站模板下载wordpress slider设置