一、算法正确性证明
归纳法
设V为所有顶点集合,S为已经找到最短路径的顶点的集合。s为源点。
(1)初始条件
初始时,S中仅有节点s,s到s的距离为0,所以肯定是最小距离
(2)假设条件
假设S中已经有k个节点,s到这k个节点的最短距离均已被找到。
(3)推导
此时按照Dijkstra算法添加第k+1个节点p到S中,则其最短距离一定是经由S中的某些节点连接到p。
反证法:假设存在一条从s除经过S中节点,还经过V-S中节点r到达p的最短路径,即Length(s->r->p) < (s->p) , 则此时有Length(s->r) < length(s->p),此时按照Dijkstra算法,添加的应该是节点r,而不是p。因而可证明并不存在S以外的结点r,使得s经过r而得到到达p的最短路径。
Dijkstra算法
最新推荐文章于 2025-03-15 15:04:24 发布