7

第5-3课:Dijkstra 算法

 3 years ago
source link: https://blog.csdn.net/orbit/article/details/108729350
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

第5-3课:Dijkstra 算法

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

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

图(1)Dijkstra 算法示例

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

Dijkstra 算法分析与设计

这里简单讲一下 Dijkstra 算法原理的分析,以及如何设计适合 Dijkstra 算法的数据模型。因为 Dijkstra 算法的原理不是重点,很多算法书都会详细介绍并进行正确性的证明,所以此处仅仅是用我的理解把原理描述出来,


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK