第5-3课:Dijkstra 算法

本文详细介绍了 Dijkstra 算法的原理、数据模型设计及实现,通过实例展示了如何将理论转化为代码。Dijkstra 算法用于解决单源最短路径问题,文章首先阐述了算法的基本思想,接着探讨了如何建立数据模型以适应算法需求,包括邻接矩阵和数据结构的设计。然后,文章提供了算法的实现细节,包括初始化、循环结构和路径更新。最后,通过两个典型例题——宋江的困扰和考虑费用的最短路径问题,讲解了如何根据具体问题调整数据模型并解决实际问题。
摘要由CSDN通过智能技术生成

Dijkstra 算法是有中文名字的,一般叫做“迪杰斯特拉算法”,该算法是求解单源最短路径问题的经典算法,算不上高效,但确实是最简单的算法。Dijkstra 算法并不难,很多算法书都有详细的说明,但是这些书基本上都是对着一个类似图(1)这样的图作为例子来演示算法。如果要理解算法的原理,通常这样做也就足够了,但是要实现一个可用的算法解决实际问题,还需要跨过几个门槛才行。首先要解决数据模型的问题,即需要定义一个能参与到算法运算中的数据结构,存放初始值、结果和运算过程中产生的中间数据;其次是将文字描述的算法原理解释成程序代码;最后是将运算结果转化成人类能理解的方式,或按照题目要求的方式输出出来。

adb439b0-f6a0-11e8-8ba9-9139bf384e15

图(1)Dijkstra 算法示例

本课首先介绍一下算法的原理,但这不是本课的重点,本课的主要内容是引导读者从一个文字描述的算法理论开始,逐步分析、建模,最终将理论翻译成算法代码。在这个过程中,介绍分析的方法、建模需要考虑的问题以及算法实现用到的技巧,最后通过两个典型的算法比赛题目,验证我们所讲的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吹泡泡的小猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值