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

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

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

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

狄克斯特拉算法的步骤:

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

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

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

4.计算最终路径

0de0e479392a3d9044eeac6ee8d84ee9f89743b9.png

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

第一步:获取到前往节点的耗时,找出最便宜的节点,如:前往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

265e98e52a9083f7d50f6ab80b8d474ba95e0031.png

术语介绍:

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

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值