当前课程知识点:算法设计与分析 > 7 Network Flow > 7.4 Choosing Good Augmenting Paths > 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.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