一、算法正确性证明
归纳法
设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-11-04 23:59:30 发布
本文详细阐述了Dijkstra算法用于寻找加权图中源点到其余各点的最短路径的过程及其正确性证明,采用归纳法进行,通过初始条件、假设条件和推导过程,确保了算法的有效性和准确性。

1186

被折叠的 条评论
为什么被折叠?



