[图论]Dijstra 算法的正确性证明

NOTE - dijstra算法的正确性非常依赖于边权值的非负。

原因是: 设V为所有点集, S为确定最短路径的点集,算法每次取V-S中与源点距离最小的点来松弛其他边,并将该点其加入S中.
反证法 + 归纳法
初始时,只有一个源点位于S中,加入S的为与源点直接距离最短的点k,并以k来松弛其他边。假设k'为松弛后与源点距离最小的点,则k'此时可以加入S,即此时k'与源点的距离为最短路径的长度,设其为d'。
假设d'非最短路径长度,即存在一个更短的路径.
思考d'如何得来的,其是通过源点 --- k --- k'得到。已知与源点直接相邻的点中k为最近点,并且边的权值为非负,因此不存在通过其他直接相邻的点t的更短路径.

以上思路可以写成更严格的归纳法.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Floyd 算法 简介 Floyd 算法又称为插点法,是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径...
    廖少少阅读 8,669评论 0 1
  • 1 概述 最短路径是图中的常见问题,最典型的应用是:当我们用百度地图或高德地图引导我们去某个地方时,它通常会给出一...
    CodingTech阅读 1,549评论 4 9
  • 忘不了! 忘不了你那回眸一笑! 你那回眸一笑的惊艳, 早让三千粉黛失花颜。 香尘已被历史车轮辗, 马嵬坡前把生离死...
    觅缘人阅读 392评论 5 5
  • 以上是奔跑吧兄弟的照片, 你们是否看着觉得当明星真好, 可以整天娱乐,还有粉丝在向你招手。 可你们知道背后的辛苦吗...
    灿烂朝阳阅读 270评论 0 2
  • 花开花又落,来年依然笑迎春风,而你,从我身边走过,却再也没有转身,至此你我皆是路人。 将纷纷攘攘的心思,放在心底,...
    华枝春满5339阅读 786评论 0 5