单源最短路径
Dijkstra算法正确性
注:要证明算法的正确性,也即证明下述命题的正确性:
命题:在单源最短路径中,Dijkstra算法通过贪心策略取得的解是整体最优解。
也即局部最优解为整体最优解。
贪心选择性质
从源v到u,我们选择在当前S内,从源v到点u的最短距离dist[u](局部最优解)
若想推翻命题,那么我们需要找到另外一条路径,使得从源v到u的距离小于dist[u]。
其表达目的:在单源最短路径中,局部最优解不能作为整体最优解。
假设存在这样的一条路径,从S先到x,然后徘徊于S内外(目的:扩展当前S),然后再到u,得到解优于dist[u]。
此时,距离可表述为: d ( v , x ) + d ( x , u ) d(v,x)+d(x,u) d(v,x)+d(x,u)
因为边权非负,所以 d ( x , u ) > 0 d(x,u)\gt0 d(x,u)>0,同时 d i s t [ x ] < d ( v , x ) dist[x]<d(v,x) dist[x]<d(v,x),并且 d i s t [ u