2022-06-11 19:21阅读: 66评论: 0推荐: 0

最短路径算法

弗洛伊德

迪杰斯特拉

图G(V,E) V是点集,E是边集。
S 是已求出最短路径的顶点集合
U 是V-S。

未优化

  • 初始时S只包含源点,即S={v},顶点v到自己的距离为0。U包含除v以外的其他顶点,v到U中顶点i的距离为其边上的权值(两点可达)或者为∞(两点不可达)。

  • 从U中选取一个顶点u,顶点v到顶点u的距离最小,然后把顶点u加入到S中。

  • 以顶点u为新考虑的中间点,修改顶点v到U中各顶点的距离:若从源点v到顶点j(j是U中的点)经过顶点u的距离(dis[u]+weight[u][j])比原来不经过顶点u的的距离(dis[j])短,则修改从顶点v到顶点j的最短距离值(dis[j]=dis[u]+weight[u][j])

  • 重复上述步骤2和3,直到S=V为止。

优先队列优化

优先队列优化的点在于上述步骤中的第二步,优先队列维护一个小顶堆,使得每次都能快速地选出顶点v。
当然,具体实现还有一些不一样的地方,我没有展开说。
待续...

SPFA

待续...

本文作者:请去看诡秘之主

本文链接:https://www.cnblogs.com/xjy881/p/16366597.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   请去看诡秘之主  阅读(66)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起