最短路径(SPF - Shortest Path Firsh) - Dijkstra算法
来源:互联网 发布:mysql add unique 编辑:程序博客网 时间:2024/05/16 01:21
本总结是是个人为防止遗忘而作,不得转载和商用。
题目
该问题也叫“单元点最短路径问题”,即:给定一个起点到其他所有点的最短路径。
前提:
假定已经给出了Wij,即第i个点到第j个点的边的距离的衡量(权值),Wij要么是∞(i到j不通),要么是大于0的某一个值。
思路解析
对于从v0至w,且经过最后一个中间结点为u的最短路径,有:
DIST(w)= DIST(u) + c(u,w)
随着u的加入, DIST(w)调整为
DIST(w)= min(DIST(w),DIST(u) + c(u,w))
既然让我们求某一个点S到某个点E的最短路径,那我们扩展一下,求S到所有点other的最短路径,于是总有一个时刻,other中包含了E,这样不就求出了从S到E的最短路径。
例子
如上图所示,我们相求从v1到v7的最短路径,于是进行下图所示的迭代
第一行:
改行是v1到v2,v3…,v7的最短路径
最初集合S中只有起点v1,而当前已找到的路径也是v1
于是遍历v1可以到达的不在几何S中的点,找到最近的,发现是v2,因此把v2包含在集合S中(于是第二行的S中多了个2),已找到的路径更新成“v1->v2”
第二行:
经上一步v2包含在了集合S中
之后同上,遍历v2可以到达的不在集合S中的点,有v3和v6.
对于v6,有如下情况:
v1 -> v2 -> v6:距离90
v1 -> v6:距离∞
所以将v1到v6的距离更新成90,v1到v3同理更新成45。
现在v1到达各点的最短距离已经更新,即第二行。
接下来,同上,遍历v1可以到达的不在几何S中的点,找到最近的,发现是v4,于是把v4包含在集合S中(于是第三行的S中多了4),已找到的路径更新成“v1->v2->v4”
之后就同理了。
- 最短路径(SPF - Shortest Path Firsh) - Dijkstra算法
- 最短路径图算法(shortest path dijkstra)
- Dijkstra最短路径算法(SPF)
- 【Python排序搜索基本算法】之Dijkstra最短路径算法(Dijkstra's Shortest-Path Algorithm)
- GeeksForGeeks-Dijkstra’s shortest path algorithm最短路径
- Algorithms Part 1-Question 5- Dijkstra's shortest-path-最短路径算法
- 两点之间最短路径算法(Single-Dijkstra-shortest path)
- [C++]C++ STL Dijkstra算法 存储多条相同最短路径 shortest path
- 最短路径算法(Shortest-path Algorithms)
- 最短路径(Shortest Path)
- DIJKSTRA最短路径算法
- 最短路径算法-dijkstra
- dijkstra最短路径算法
- 最短路径 Dijkstra算法
- 最短路径(Dijkstra算法)
- 最短路径Dijkstra算法
- 最短路径 Dijkstra算法
- Dijkstra最短路径算法
- [深度学习]怎样使尺寸大小不一样的图片变为统一的size的C++程序
- 书籍推荐
- 洛谷1083 借教室
- C# 服务器间读取上传图片实现
- Eclipse快捷键 10个最有用的快捷键
- 最短路径(SPF - Shortest Path Firsh) - Dijkstra算法
- swift 创建button
- Python基础语法
- java ServletContextListener 定时器某个时刻执行事件
- JavaWeb学习一
- MYSQL性能查看(命中率,慢查询)
- ExtJS 快速入门 - 简介
- Educational Codeforces Round 4-D. The Union of k-Segments
- 关于使用setInterval()函数制作滚动越来越快的问题