分享

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

 长沙7喜 2021-07-06

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

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

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

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

图片


图片

图片图片

图片

图片图片图片

图片

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

节点
父节点
a
s

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

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

图片

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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多