Dijkstra 算法是有中文名字的,一般叫做“迪杰斯特拉算法”,该算法是求解单源最短路径问题的经典算法,算不上高效,但确实是最简单的算法。Dijkstra 算法并不难,很多算法书都有详细的说明,但是这些书基本上都是对着一个类似图(1)这样的图作为例子来演示算法。如果要理解算法的原理,通常这样做也就足够了,但是要实现一个可用的算法解决实际问题,还需要跨过几个门槛才行。首先要解决数据模型的问题,即需要定义一个能参与到算法运算中的数据结构,存放初始值、结果和运算过程中产生的中间数据;其次是将文字描述的算法原理解释成程序代码;最后是将运算结果转化成人类能理解的方式,或按照题目要求的方式输出出来。
图(1)Dijkstra 算法示例
本课首先介绍一下算法的原理,但这不是本课的重点,本课的主要内容是引导读者从一个文字描述的算法理论开始,逐步分析、建模,最终将理论翻译成算法代码。在这个过程中,介绍分析的方法、建模需要考虑的问题以及算法实现用到的技巧,最后通过两个典型的算法比赛题目,验证我们所讲的