狄克斯特拉算法的作用(目的):
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
术语介绍:
狄克斯特拉算法用于每条边都有关联数字的图,这些数字称为权重。
带权重的图称为加权重图,不带权重的图称为非加权图
这期教学先到这里 下一期我会用物品的交换来举例子 再详细的说一下
感谢大家的阅读 谢谢大家!