小海豹教你算法,包你懂:Python实现狄克斯特拉算法详解

狄克斯特拉算法的作用(目的):

1.假如你要从学校回家,那么狄克斯特拉算法可以帮你找出从起点到终点耗时最短路径。

2.假如你要在咸鱼上买东西,那么狄克斯特拉算法可以让你花最少的钱买到性价比最高的东西。


狄克斯特拉算法的步骤:

1.找出“权重最低的”节点,即可在最短时间内到达的节点

2.更新该节点的邻居的开销,其含义将稍后介绍。

3.重复这个过程,直到对图中的每个节点都这样做了。

4.计算最终路径


实现思路(这里我用 利用算法实现最短路程导航来举例):

第一步:获取到前往节点的耗时,找出最便宜的节点,如:前往A节点耗时6h,前往B节点耗时2h,现在我们找到了节点b的权重是最小的(最近的)因为6>2

第二步:计算经节点b前往其各个邻居所需的时间。我们发现从节点B前往节点A只需要3h,因为我们找到了比之前(直接前往节点A)所需的开销6h更低的开销3+2=5h 所以我们更新节点A的开销,现在节点A的开销是5h了

重复第一步:找出可在最短时间内前往的节点。我们对节点B执行了第二步,除节点B(耗时2h)外,可在最短时间内前往的节点是节点A(耗时5h)

重复第二步:更新节点A的所有邻居的开销 发现从A到终点耗时1h ,而从B到终点耗时5h

你发现前往终点的时间为6h!(从起点到B耗时2h,再到A耗时3h) (而如果我们不通过先走节点b再走节点a的话 我们路程的消耗将为2h + 5h=7h)也就是需要多花1h


术语介绍:

狄克斯特拉算法用于每条边都有关联数字的图,这些数字称为权重。

带权重的图称为加权重图,不带权重的图称为非加权图

这期教学先到这里 下一期我会用物品的交换来举例子 再详细的说一下

感谢大家的阅读 谢谢大家!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 下面是本人在看算法书籍时做的笔记。因为前面的比较基础,就从第五章才开始做的笔记 第五章:散列表 个人理解:概念类似...
    大树听雨阅读 402评论 0 0
  • 在之前的广度优先搜索中,可以找出了从A点到B点的最短路径。0-1 这是最短路径,因为段数最少——只有三段,但不一定...
    YCzhao阅读 872评论 0 0
  • 本文由 伯乐在线 - hf_cherish 翻译,黄利民 校稿。未经许可,禁止转载!英文出处:theory.sta...
    C_GO流媒体后台开发阅读 1,741评论 0 2
  • 灵川l阅读 136评论 0 1
  • 清晨,打车时偶遇一位老奶奶带她两位小学生孙女儿去上学,她看到我先拦下空的士,就走上来询问能否拼车去XX实验小学:浓...
    Ceunaragazza阅读 183评论 0 0