当前课程知识点:算法设计与分析 > 4 Greedy Algorithms > 4.6 Shortest Paths in a Graph > Shortest Paths in a Graph
最短路问题
是运筹学及算法领域的一个基本问题
在现实中有着非常广泛的应用
考虑有向图G=(V,E)
令s为源 也就是起点
t为汇 也就是终点
对于每条边e有一个长度l_e是非负的 大于等于0
最短路问题
就是求从s到t的最短长度的路径
比如在下面的图中
s到t有一条路径
从s到2到3到5 再到t
总长度为48
下面我们介绍经典的Dijkstra算法
令S是一个探索过的节点的集合
初始的时候
把s放入到这个集合中
令s的标号为d(s)=0
对于还没有探索过的节点
考虑指向它
并且另一个端点u属于S的边e
计算d(u)+l_e
计算出来最小值
并令点v对应的值最小 为π(v)
那么把v加到S中
并且令v的标号d(v)=π(v)
我们来演示一下Dijkstra算法
网络结构如图所示
初始的时候 集合S是包含起点s
计算s到各点的距离
它到相邻三个点的距离
分别为4、8、16
最小距离为4
把相应的点加入S中
更新其他各点到S的最短距离
发现 有一个点的最短距离由8减少到7
并且是当前到S的最小距离
把相应的点加入S中
更新其他各点到S的最短距离
发现 有一个点的最短距离由16减少到14
而右下点到S的最小距离为8
为当前到S的最小距离
把相应的点加入S中
更新其他各点到S的最短距离
发现 有一个点的最短距离由14减少到13
并且是当前到S的最小距离
把相应的点加入S中
更新其他各点到S的最短距离
最后一个点到S的最小距离为14
把相应的点加入S中
S包含了全部点
算法结束
算法得到了s到其他点的最短路
它们构成了如图的最短路树
下面来证明
对于Dijkstra算法中的S中的任意点u
d(u)就是从s到u的最短路
我们对集合S中包含元素的数量进行归纳证明
S中只有一个元素时是平凡的
我们假设
对于S中有k个元素
k≥1时 是成立的
令v是第k+1个要被加入到S中的节点
(u,v)是算法所选择的边
根据归纳假设
s到u的最短路长度为d(u)
这条路加上(u,v)这条边
构成了一个s到v的一条路
长度为π(v)
考虑任何一条从s到v的路径P
我们将证明它不会小于π(v)
令P第一次离开S时
对应的边为(x,y)
令 P'为P中小s到x的这一段子路
我们可以看到
P的长度≥P'的长度加上(x,y)这条边的长度
这是因为边长都是非负的
由定义和归纳假设
d(x)为s到x的最短路长度
我们知道
P'的长度是要大于等于d(x)
再根据π(y)的定义
d(x)+(x,y)的长度是要大于等于π(y)的
Dijkstra算法选择所有未探索节点中
对应的π值最小的那个点
所以又有π(y)≥π(v)
因此路径P的长度不会小于π(v)
结论得证
我们来看一下Dijkstra算法的伪代码
令S是探索过的节点的集合
对S中的每个点u
存储一个距离d(u)
初始的时候S={s}
并且d(s)=0
当S不等于V的时候
对于不在S中的每个节点
考虑所有指向它的边e
并且另一个端点u是属于S的
计算d(u)+l_e的最小值
令点v对应的值最小
记为d'(v)
把v加入到S中
并且令v的标号d(v)=d'(v)
最后返回S
Dijkstra算法执行过程中要维护π(v)
每一次从未探索的节点中选取最小的π(v)
注意到
当加入点v
对于相关联的边e=(v,w)
只需要更新π(w)
最多n-1次更新
算法每次加入一个节点
最多n次循环
所以算法的复杂度为O(n^2)
-1.1 Introduction
-1.2 A First Problem: Stable Matching
--A First Problem: Stable Matching
-1.3 Gale-Shapley Algorithm
-1.4 Understanding Gale-Shapley Algorithm
--Understanding Gale-Shapley Algorithm
-Homework1
-Lecture note 1
--Lecture note 1 Introduction of Algorithm
-2.1 Computational Tractability
-2.2 Asymptotic Order of Growth
-2.3 A Survey of Common Running Times
--A Survey of Common Running Times
-Homework2
-Lecture note 2
--Lecture note 2 Basics of Algorithm Analysis
-3.1 Basic Definitions and Applications
--Basic Definitions and Applications
-3.2 Graph Traversal
-3.3 Testing Bipartiteness
-3.4 Connectivity in Directed Graphs
--Connectivity in Directed Graphs
-3.5 DAG and Topological Ordering
--DAG and Topological Ordering
-Homework3
-Lecture note 3
-4.1 Coin Changing
-4.2 Interval Scheduling
-4.3 Interval Partitioning
-4.4 Scheduling to Minimize Lateness
--Scheduling to Minimize Lateness
-4.5 Optimal Caching
-4.6 Shortest Paths in a Graph
-4.7 Minimum Spanning Tree
-4.8 Correctness of Algorithms
-4.9 Clustering
-Homework4
-Lecture note 4
--Lecture note 4 Greedy Algorithms
-5.1 Mergesort
-5.2 Counting Inversions
-5.3 Closest Pair of Points
-5.4 Integer Multiplication
-5.5 Matrix Multiplication
--Video
-5.6 Convolution and FFT
-5.7 FFT
--FFT
-5.8 Inverse DFT
-Homework5
-Lecture note 5
--Lecture note 5 Divide and Conquer
-6.1 Weighted Interval Scheduling
--Weighted Interval Scheduling
-6.2 Segmented Least Squares
-6.3 Knapsack Problem
-6.4 RNA Secondary Structure
-6.5 Sequence Alignment
-6.6 Shortest Paths
-Homework6
-Lecture note 6
--Lecture note 6 Dynamic Programming
-7.1 Flows and Cuts
-7.2 Minimum Cut and Maximum Flow
--Minimum Cut and Maximum Flow
-7.3 Ford-Fulkerson Algorithm
-7.4 Choosing Good Augmenting Paths
--Choosing Good Augmenting Paths
-7.5 Bipartite Matching
-Homework7
-Lecture note 7
-8.1 Polynomial-Time Reductions
-8.2 Basic Reduction Strategies I
--Basic Reduction Strategies I
-8.3 Basic Reduction Strategies II
--Basic Reduction Strategies II
-8.4 Definition of NP
-8.5 Problems in NP
-8.6 NP-Completeness
-8.7 Sequencing Problems
-8.8 Numerical Problems
-8.9 co-NP and the Asymmetry of NP
--co-NP and the Asymmetry of NP
-Homework8
-Lecture note 8
--Lecture note 8 NP and Computational Intractability
-9.1 Load Balancing
-9.2 Center Selection
-9.3 The Pricing Method: Vertex Cover
--The Pricing Method: Vertex Cover
-9.4 LP Rounding: Vertex Cover
-9.5 Knapsack Problem
-Homework9
-Lecture note 9
--Lecture note 9 Approximation Algorithms
-10.1 Landscape of an Optimization Problem
--Landscape of an Optimization Problem
-10.2 Maximum Cut
-10.3 Nash Equilibria
-10.4 Price of Stability
-Homework10
-Lecture note 10
--Lecture note 10 Local Search
-11.1 Contention Resolution
-11.2 Linearity of Expectation
-11.3 MAX 3-SAT
-11.4 Chernoff Bounds
-Homework11
-Lecture note 11
--Lecture note 11 Randomized Algorithms
-Exam