当前课程知识点:算法设计与分析 >  6 Dynamic Programming >  6.6 Shortest Paths >  Shortest Paths

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

Shortest Paths在线视频

Shortest Paths

下一节:Lecture note 6 Dynamic Programming

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

Shortest Paths课程教案、知识点、字幕

我们在贪婪算法一章中

介绍过最短路问题

它是最经典的算法问题之一

这里我们考虑一般的最短路问题

考虑有向图G=(V,E)

对于每条边(v,w)有一个权重c_vw

这里的权重允许是负的

求从点s到t的最短的路径

比如下面给定的网络中

s-2-3-5-t是一条s-t有向路

我们可以算出对应的目标值

对于权重非负的最短路问题

我们学习过Dijkstra算法

对于包含负权的最短路问题

它还适用吗

我们看下面这样一个例子

对于这个例子

s-u-v-t会得到一条长度为-1的路

但是用Dijkstra算法的话

它在第一部就会给t赋予一个标号1

而且之后不会更改

所以得到的目标值是1

不是最优的

我们再考虑把每条边

加上一个相同的权重

使得所有边上的权重非负

这样可行吗

我们有下面的例子

这里存在着一条权重为-3的边

我们把每条边上的权都加3

使得所有边上的权重非负

这时可以采用Dijkstra算法

算得最短路是选择上边的两条边

对应原问题的目标值是4

而原问题的最优解是选择下面的三条边

对应的目标值为3

所以这也是不可行的

我们先引进一些概念

首先是负费用圈

它指的是一个有向圈

其上的各边权重之和为负

我们有一个简单的发现

如果存在从s到t的有向路

其中包含了一个负的费用圈

那么就不存在着一个s-t的最短路

因为沿着这个负费用圈走一次

费用就会下降

直到负无穷

否则 就一定存在着一个简单的最短路

也就是说不含有圈的有向路

令OPT(i, v)为v到t

至多用i条边的最短路长度

令这条最短路径为P

我们分两种情况讨论

第一种情况

P用了至多i-1条边

那么显然OPT(i, v)=OPT(i-1, v)

第二种情况

P用了正好i条边

如果(v, w)是第一条边

那么OPT用了(v, w)边

然后选择w到t的

用了不超过i-1条边的最短路

对应的目标值为OPT(i-1, w)+c_vw

我们遍历所有和v关联的w

选择最优的一个

可以得到如下的动态规化基本方程

如果网络中没有负费用圈的话

最短路长度不超过n-1

因此OPT(n-1, v)即为v到t的最短路值

下面我们给出最短路问题的

动态规划算法的伪代码

对于图中所有点v

令M[0,v]为正无穷

M[0,t]=0

然后i从1到n-1

对于所有节点v

按照动态规划基本方程计算M[i,v]

最后返回M[n-1,s]

如果网络中没有负费用圈的话

返回值即为s-t最短路的长度

容易看出

算法需要θ(mn)的时间和θ(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笔记与讨论

也许你还感兴趣的课程:

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