当前课程知识点:算法设计与分析 >  7 Network Flow >  7.4 Choosing Good Augmenting Paths >  Choosing Good Augmenting Paths

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

Choosing Good Augmenting Paths在线视频

Choosing Good Augmenting Paths

下一节:Bipartite Matching

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

Choosing Good Augmenting Paths课程教案、知识点、字幕

对于没有负费用圈的最短路问题

Ford-Fulkerson算法可以求得最短路

下面我们来讨论它的有效实现

一般的Ford-Fulkerson算法

是多项式时间算法吗

这里的多项式时间算法

指的是运行时间和输入规模

包括m,n,logC成多项式关系

我们之前的分析表明

它可能执行C次循环

C是边上的最大容量

对于下面的例子

我们可以看出

调用Ford-Fulkerson算法

如果随意选择一条增广路的话

可能会沿着s-1-2-t增广一个单位的流

然后沿着s-2-1-t增广一个单位的流

如此往复 共增广2C次

达到最大流

最大流流值为2C

而显然

沿着s-1-t,s-2-t各增广一次就可以达到最大流

如何选择好的增广路呢

我们看到

有些选择会导致指数时间算法

而聪明的选择会导致多项式时间算法

另外 如果容量是无理数的话

可以给出例子

使得算法不能够保证有限步终止

我们的目标是选择增广路

可以有效地发现增广路

并且使得循环的次数尽量少

Edmonds-Karp以及Dinitz

在70年代设计了一系列算法

基本思想包括

选择瓶颈容量最大的增广路

选择瓶颈容量足够大的增广路

以及包含边数最少的增广路等等

我们这里介绍的算法

主要基于第二种想法

直觉上 选择瓶颈容量最大的增广路

但这会带来新的计算代价

实际上 我们可以用变尺度技术

找到瓶颈容量足够大的增广路

我们控制一个尺度参数Δ

令Gf(Δ)为残量网络中

只包含容量不小于Δ的边的构成的子图

比如像下图中 令Δ=100

那么对应的残量网络为右图所示

下面来看一下变尺度算法的伪代码

令Δ是2的指数形式

并且小于等于C

初始时 令每条边的流量为0

构建G_f(Δ)残量网络

如果在这个残量网络中存在着一条增广路

那么沿着这条增广路进行增广

然后Δ减半

如此循环

最后返回f

我们来分析算法的正确性

假定所有容量都是1到C之间的整数

在流的增广过程中

所有的流和残余容量都是整数

结论是

当算法终止 f是最大流

算法终止时 Δ=1⇒G_f(Δ)=G_f

此时 残量网络中没有增广路

可知已得到最大流

我们主要关注算法的运行时间

我们有引理1

算法最多循环1+log C取上整次

这是因为C≤Δ<2C

每次循环Δ减半

所以结论得证

引理2

令f是Δ尺度阶段结束后得到的流

则最大流值不超过f的流值+mΔ

我们稍后证明这个结论

引理3

变尺度算法中

每个阶段最多2m次增广

令f是前一阶段结束时对应的流

由引理2

最大流值不超过f的流值+m2Δ

而在Δ阶段

每次增广至少Δ的流量

因此引理得证

这样我们可以给出算法运行时间的结论

变尺度算法进行O(mlogC)次增广

可以在O(m^2logC)时间内实现

前一部分的结论由上面3个引理得到

每次增广

可以用对图进行广度优先的算法

在O(m)时间内实现

因此 算法整个的运行时间是O(m^2logC)

下面我们来证明引理2

令f是Δ尺度阶段结束后得到的流

则最大流值不超过f的流值+mΔ

证明和最大流-最小割定理几乎相同

我们将证明

在Δ阶段结束时 存在割(A, B)

使得(A, B)割的容量小于等于f的流值+mΔ

令A是Gf(Δ)残量网络中

从s出发

可达的节点集合

则s∈A,t∉A

我们有

f的流值等于从A流出的量减去流入A的量

流出边的残余容量一定不超过Δ

也就是其流量大于等于边上的容量减去Δ

同样道理

流入边的流量小于等于Δ

我们把这个表达式整理后

等于从A流出边的容量减去不超过m个Δ

又大于等于(A, B)割的容量-mΔ

命题得证

算法设计与分析课程列表:

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

Choosing Good Augmenting Paths笔记与讨论

也许你还感兴趣的课程:

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