狄克斯特拉算法(Dijkstra's Algorithm)

本课程是从少年编程网转载的课程,目标是向中学生详细介绍计算机比赛涉及的编程语言,数据结构和算法。编程学习最好使用计算机,请登陆 www.3dian14.org (免费注册,免费学习)。

狄克斯特拉算法是一种常见的花心,额,贪心算法,今天给孩子演示该算法,发现网上的动图都不尽人意,就动手修了个图。

算法过程是:在已经开拓的疆域的边缘,找出最美好的节点,更新该节点芳邻们的开销。然后重复这个过程,直到天长地久。

动图比较长,分成三部分:


上面的算法过程只计算了各个节点到初始节点的距离,要回溯出最短路径,我们需要维护一个节点到父节点的表。(父节点是计算该节点开销时的前序节点,父节点的信息在不断更新中)

节点 父节点
a s

Dijskstra算法中贪心的正确性证明,用到图论中的一个小定理,请用反证法证明一下。

引理:最短路径的子路径本身就是最短路径

(提示:如果s->z不是最短路径,那么存在。。。)

(0)

相关推荐

  • 【算法类原创】复杂网络分析法中的还原论与整体论

    0)概述 前不久听一位颇有造诣的老先生讲了一堂关于仿真的讲座,其中涉及到了还原论与整体论.于是借着先生的智慧,说说贯彻整个复杂网络分析过程(包含复杂网络的构建,下同)的还原论和整体论. 本文首先阐述还 ...

  • Python算法分为哪几类?常见分类!

    了解过Python的人,应该都听说过Python算法,但对其种类及定义却不是很清楚,那么你知道什么是算法吗?Python算法有哪几类呢?我们通过这篇文章来了解一下. 什么是算法? 算法是指解题方案的准 ...

  • 寻路算法

    这部分相当不完整. 一般的图搜索算法可用于寻路.许多算法教科书描述了不使用启发式算法的图搜索算法(广度优先搜索.深度优先搜索.Dijkstra 算法).阅读它们可能有助于理解 A*,它是 Dijkst ...

  • Dijkstra算法(迪杰斯特拉算法)

    对比算法好坏需要考虑的因素 执行算法所耗费的时间 执行算法所耗费的存储空间 Dijkstra算法(迪杰斯特拉算法) 迪杰斯特拉算法是由荷兰计算机科学家狄克斯特拉于1959年提出的,是从一个顶点到其余各 ...

  • 古希腊神话故事——俄耳甫斯与欧律狄克的爱情悲剧

    在古希腊神话也有一段感天动地的爱情故事.俄耳甫斯是太阳神阿波罗和艺术女神缪斯九姐妹之一司管文艺的女神卡利俄帕爱情的结晶.俄耳甫斯继承了父母的才能,不但有能迷惑百兽优美的歌喉,还是举世无双的弹琴圣手,因 ...

  • 迪杰斯特拉算法求最短路径

    (针对从某一源点到其余各顶点间的最短距离) 初步的思想过程: 1.引进两个集合S和T,指定起始点O.S用来记录已求出的最短路径的顶点(以及相应的最短路径长度),T用来记录未求出最短路径的顶点(以及该顶 ...

  • 美国上个世纪最牛的预言家珍妮·狄克森,在...

    美国上个世纪最牛的预言家珍妮·狄克森,在1997年去世前说:拯救人类的希望在东方,西方只代表事物的终结,美国将受到古罗马式的衰败惩罚! 俄罗斯有名的'火星男孩'被问到中国的时候说:中国是上天选中的国家 ...

  • 汉斯狄克反应(Hunsdiecker Reaction)

    概要 羧酸的银盐,在无水的惰性溶剂中与溴回流,发生脱碳酸的反应最终形成溴代烷烃产物. 此反应广泛用于制备脂肪族.脂环族,以及某些芳香族与杂环族卤化物,特别是从天然的偶数碳原子羧酸来制备奇数碳的长链卤代 ...

  • 面料克重与支数算法大全,非常实用!

    面料克重与支数算法大全,非常实用!

  • 【古罗马君王谱】罗马帝国(二十五):克劳狄二世

    10.伊利里亚诸帝 加里恩努斯改革军事后不到一年就被部下杀死,克劳狄二世即位.他先是打败了莱茵河北岸和多瑙河北岸的阿拉曼尼人,后来又早多瑙河北岸击败了一支强大的哥特人军队,有"哥特征服者&q ...

  • 【古罗马君王谱】罗马帝国(六):克劳狄一世

    Ad 尤利亚·克劳狄王朝货币简史 作者:石俊志 著 当当 罗马帝国(六):克劳狄一世 (4)克劳狄一世 ①出身 克劳狄乌斯的生父德鲁苏斯,是皇帝提贝里乌斯的同胞弟弟.德鲁苏斯与小安东尼娅结婚,生下日耳 ...

  • 狄耐克智能家居与佳兆业·天墅同行,俯瞰羊城之繁华,智享生命力空间

    本文部分图片来源于网络 如有侵权,请后台联系小编删除