当前课程知识点:算法设计与分析 >  4 Greedy Algorithms >  4.6 Shortest Paths in a Graph >  Shortest Paths in a Graph

返回《算法设计与分析》慕课在线视频课程列表

Shortest Paths in a Graph在线视频

Shortest Paths in a Graph

下一节:Minimum Spanning Tree

返回《算法设计与分析》慕课在线视频列表

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 Introduction of Algorithm

-1.1 Introduction

--Introduction

-1.2 A First Problem: Stable Matching

--A First Problem: Stable Matching

-1.3 Gale-Shapley Algorithm

--Gale-Shapley Algorithm

-1.4 Understanding Gale-Shapley Algorithm

--Understanding Gale-Shapley Algorithm

-Homework1

-Lecture note 1

--Lecture note 1 Introduction of Algorithm

2 Basics of Algorithm Analysis

-2.1 Computational Tractability

--Computational Tractability

-2.2 Asymptotic Order of Growth

--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 Graph

-3.1 Basic Definitions and Applications

--Basic Definitions and Applications

-3.2 Graph Traversal

--Graph Traversal

-3.3 Testing Bipartiteness

--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

--Lecture note 3 Graph

4 Greedy Algorithms

-4.1 Coin Changing

--Coin Changing

-4.2 Interval Scheduling

--Interval Scheduling

-4.3 Interval Partitioning

--Interval Partitioning

-4.4 Scheduling to Minimize Lateness

--Scheduling to Minimize Lateness

-4.5 Optimal Caching

--Optimal Caching

-4.6 Shortest Paths in a Graph

--Shortest Paths in a Graph

-4.7 Minimum Spanning Tree

--Minimum Spanning Tree

-4.8 Correctness of Algorithms

--Correctness of Algorithms

-4.9 Clustering

--Clustering

-Homework4

-Lecture note 4

--Lecture note 4 Greedy Algorithms

5 Divide and Conquer

-5.1 Mergesort

--Mergesort

-5.2 Counting Inversions

--Counting Inversions

-5.3 Closest Pair of Points

--Closest Pair of Points

-5.4 Integer Multiplication

--Integer Multiplication

-5.5 Matrix Multiplication

--Video

-5.6 Convolution and FFT

--Convolution and FFT

-5.7 FFT

--FFT

-5.8 Inverse DFT

--Inverse DFT

-Homework5

-Lecture note 5

--Lecture note 5 Divide and Conquer

6 Dynamic Programming

-6.1 Weighted Interval Scheduling

--Weighted Interval Scheduling

-6.2 Segmented Least Squares

--Segmented Least Squares

-6.3 Knapsack Problem

--Knapsack Problem

-6.4 RNA Secondary Structure

--RNA Secondary Structure

-6.5 Sequence Alignment

--Sequence Alignment

-6.6 Shortest Paths

--Shortest Paths

-Homework6

-Lecture note 6

--Lecture note 6 Dynamic Programming

7 Network Flow

-7.1 Flows and Cuts

--Flows and Cuts

-7.2 Minimum Cut and Maximum Flow

--Minimum Cut and Maximum Flow

-7.3 Ford-Fulkerson Algorithm

--Ford-Fulkerson Algorithm

-7.4 Choosing Good Augmenting Paths

--Choosing Good Augmenting Paths

-7.5 Bipartite Matching

--Bipartite Matching

-Homework7

-Lecture note 7

--Lecture note 7 Network Flow

8 NP and Computational Intractability

-8.1 Polynomial-Time Reductions

--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

--Definition of NP

-8.5 Problems in NP

--Problems in NP

-8.6 NP-Completeness

--NP-Completeness

-8.7 Sequencing Problems

--Sequencing Problems

-8.8 Numerical Problems

--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 Approximation Algorithms

-9.1 Load Balancing

--Load Balancing

-9.2 Center Selection

--Center Selection

-9.3 The Pricing Method: Vertex Cover

--The Pricing Method: Vertex Cover

-9.4 LP Rounding: Vertex Cover

--LP Rounding: Vertex Cover

-9.5 Knapsack Problem

--Knapsack Problem

-Homework9

-Lecture note 9

--Lecture note 9 Approximation Algorithms

10 Local Search

-10.1 Landscape of an Optimization Problem

--Landscape of an Optimization Problem

-10.2 Maximum Cut

--Maximum Cut

-10.3 Nash Equilibria

--Nash Equilibria

-10.4 Price of Stability

--Price of Stability

-Homework10

-Lecture note 10

--Lecture note 10 Local Search

11 Randomized Algorithms

-11.1 Contention Resolution

--Contention Resolution

-11.2 Linearity of Expectation

--Linearity of Expectation

-11.3 MAX 3-SAT

--MAX 3-SAT

-11.4 Chernoff Bounds

--Chernoff Bounds

-Homework11

-Lecture note 11

--Lecture note 11 Randomized Algorithms

Exam

-Exam

Shortest Paths in a Graph笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。