首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

小海豹教你算法,包你懂: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

术语介绍:

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

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

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

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

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190430A0NFY100?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券