再读dijkstra算法 以及运用
来源:互联网 发布:手机淘宝进入支付宝 编辑:程序博客网 时间:2024/06/11 01:08
在《图论算法及程序设计》中,这个算法没有明显的提出,叫:最短路的标号法。
再一次发现,我对dijkstra的理解还是不够啊~
其关键在于贪心。。
每一次选出的特定点到其他点的最短路都是每一次的最优解,也就是说,求出来之后,最短路就不会再改变了,要这样想:
既然每一次都是得到的最优值,那么会使下一次得到的也是最优值。。。
不知道说清楚没有。。。
编程的代码思路就是:
找到已经得到的最优解的点,由这些点得到还没有最优解的点,如果两者之间有边,且best<v[i,j]+d[i]
那么把best的值更新;每次把n个点遍历完后,将best的值赋给最小的那个点,如果best的值与其初值相同,没有改变,说明该图中的特定点出发的最短路已经找完,可跳出循环
复杂度:
用矩阵的话为n^3
用邻接表为n^2*m
另外,最短路可扩展。。。
即:如果要求一个图的中心点时(中心点即其他各点到这个点的最短距离的最大值最小)
在计算特定点到各个点的最短距离时就可以求出到这个点的最短距离的最大值,在n个顶点的最短距离的最大值求取时,就可求最大值的最小值。。。
也就是说用dijkstra做这个,复杂度为:n^3*m;
据我分析,也可以用floyd做。。。 直接先求出每两个点之间的最短路,然后就可以对每个点求其最短距离的最大值,最后再求最大值中的最小值。。。
复杂度为:n^3
——读《图论的算法与程序设计》
- 再读dijkstra算法 以及运用
- Dijkstra 算法介绍以及实现
- Dijkstra算法以及Java实现
- 再读BUDDY算法
- POJ 1062 昂贵的聘礼 (Dijkstra算法的运用)
- L2-001. 紧急救援-Dijkstra算法的综合运用
- 运用Dijkstra算法求得单源最短路径C/C++
- 欧几里得算法及其扩展以及运用
- poj 3268 Dijkstra运用
- 最短路径-Dijkstra算法以及Floyd算法
- pairing heap 学习以及对于dijkstra算法的再分析
- Dijkstra算法以及java实现_02(代码部分)
- Dijkstra算法
- dijkstra算法
- Dijkstra算法
- Dijkstra算法
- Dijkstra算法
- Dijkstra算法
- 数据库表锁定后解锁
- usaco 1.3 Packing Rectangle
- training@USC permutation
- 讲课@USC 杂谈
- usaco 1.4 Arithmetic Progressions
- 再读dijkstra算法 以及运用
- INSTALL_FAILED_DEXOPT LinearAlloc exceeded capacity
- Installshield2010实现web部署和数据库安装示例
- Loadrunner 报错: Error: The table 'E:\*性能测试脚本\login1\userName.dat' does not exist.
- 织梦(dedecms)仿站教程第六讲——通用头部(二)会员登陆框(上)
- 关于clearfix:after的解释
- hdu Drainage Ditches(网络流)
- Junk-Mail Filter(并查集,删除结点,虚父节点)
- BITMAPINFO结构详解