码迷,mamicode.com
首页 > 编程语言 > 详细

贪心算法-图的最短路径算法Dijkstra之证明

时间:2018-03-03 17:02:56      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:gpo   最短路径   png   pos   size   str   span   body   之间   

一、问题:图的最短路径

  定义图G=(V,E),而且每条边上的权值非负,求顶点s 到图中任意一点的最短距离。图中任意两点之间的距离定义为:路径上所有边的权值的和。

二、算法:Dijkstra算法

   设S是探查的顶点的集合,对每个,我们存储一个距离d(u)

   初始S={s},d(s)=0

    While S != V

      选择一个顶点使得从S到v至少有一条边并且

      技术分享图片

      把v加入到S并且定义

    End

三、证明算法的正确性:

  只需证明,在算法执行中任意一点的集合S,对每个,路径是最短的s-u路径。

  用数学归纳法证明算法的正确性:

  1. |S|=1 时, S={s},d(s)=0 显然成立
  2. 假设|S|=k时,命题成立

   既对每个技术分享图片,路径Pu是最短的s-u路径

  3. |S|=k+1

   假设此时引入的顶点是v,令(u,v)是s-v路径上最后的一条边。

   现在我们证明是s-v的所有路径中最短的路径。

   s要到达v,必须首先离开S,然后到达y,最后y到达v

   该距离:技术分享图片

   而从Dijkstra算法知,技术分享图片

   又因为,图中所有边的权值非负,技术分享图片

   所以有:技术分享图片

      故而Pv是s-v的所有路径中最短的路径。

 

贪心算法-图的最短路径算法Dijkstra之证明

标签:gpo   最短路径   png   pos   size   str   span   body   之间   

原文地址:https://www.cnblogs.com/ordili/p/8496752.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!