简介
Dijkstra 算法常用于求无负权边图中的最短路,在优化后有比 Bellman-Ford 算法优秀很多的时间复杂度,实际做题过程中有着更多的应用。
Dijkstra简介
再进行具体讲解之前,我们先定义以下记号:
G = <V, E> 代表我们要处理的简单有向图;
n = |V|, m = |E| 代表定点数和边数;
l(u, v) 代表 u 到 v 的边的长度(边权);
S 代表起点,E代表终点(如果有的话)
dist(u) 代表我们当前求出的从S到u的最短路径的长度,后面称为u的距离;
操作
我们要维护一个顶点集合 C,满足对于所有集合 C 中的顶点 x,我们都已经找到了起点 S到x的最短路,此时 dist(x)记录的就是最终最短路的长度。
Dijkstra 算法流程如下:
将 C 设置为空,将S的距离设置为 0,其余点的距离设置为无穷大;
在每一轮中,将离起点最近的(dist最小,不能是无穷大)的还不在C中的顶点加入C,并且用这个点连出去的边通过松弛操作尝试更新其它点的 dist;
当 T(如果 T 存在的话)或者没有新的点 ...
前端开发
未读Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
Quick StartCreate a new post1$ hexo new "My New Post"
More info: Writing
Run server1$ hexo server
More info: Server
Generate static files1$ hexo generate
More info: Generating
Deploy to remote sites1$ hexo deploy
More info: Deployment