当前课程知识点:算法设计与分析 >  7 Network Flow >  7.3 Ford-Fulkerson Algorithm >  Ford-Fulkerson Algorithm

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

Ford-Fulkerson Algorithm在线视频

Ford-Fulkerson Algorithm

下一节:Choosing Good Augmenting Paths

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

Ford-Fulkerson Algorithm课程教案、知识点、字幕

对于最大流问题

我们首先考虑贪婪算法

开始的时候

令每条边上的流量都为零

寻找一条s-t有向路P

其上的每条边上的流量都小于它的容量

然后沿着路P进行流的增广

一直进行下去

直到找不到这样的路

比如下例中

我们令每条边上的流量都为零

找到一条s-t有向路s-1-2-t

满足要求

这条路上边的最小容量为20

可以增广20个单位的流

当前流值为20

然后我们找不到一条

可以进行增广的有向路

算法终止

对这个问题而言

最优解如右图所示

最大流值为30

所以贪婪算法不能够保证求得最优解

为了方便我们之后的讨论

我们需要引进残量网络的概念

在原网络中

边e=(u, v)

被赋予流值f(e)

边上的容量是c(e)

在残量网络中

它对应了两条边

一条是e=(u, v)

另一条是它的反向边e^R=(v, u)

其上的容量c_f(e)分别为

如果e属于原网络

则为c(e)-f(e)

如果e^R属于原网络

则其上容量为f(e)

比如(u, v)边的容量是17 流量是6

那么在残量网络中(u, v)边上的容量为11

(v, u)边的容量为6

可以看出 残量网络中边上的容量

表示沿着相应方向可以通过的流量

残量网络G_f=(V, E_f)

其中的边为按着上面的定义

容量为正的边的集合

也就是说原网络中流量小于容量的边

加上流量为正的边所对应的反向边

在残量网络上执行贪婪算法

即为Ford-Fulkerson算法

我们通过一个例子

来演示Ford-Fulkerson算法

网络如图

边上标示的数字表示边的容量

初始时 令边上的流量为零

然后寻找一条增广路

找到s-2-5-t这条路

可增广的流量为8

进行增广

构建相应的残量网络

发现下一条增广路s-2-3-5-t

可增广的流量为2

进行增广

再构建相应的残量网络

依次进行

直到残量网络中不存在增广路

算法终止

得到了最大流

最大流值为19

下面给出Ford-Fulkerson算法的伪代码

我们先给出增广路算法

对于一条增广路P

令b为瓶颈容量

也就是说增广路上

所有边上容量的最小值

然后对于前向边

令其上的流量增加b

对于反向边

其上的流量减少b

最后返回流f

下面给出Ford-Fulkerson算法

首先 令所有边上的流量为零

如果残量网络中存在着增广路

那么就调用增广路算法

对流进行增广

最后返回流f

我们来证明Ford-Fulkerson算法的正确性

我们有增广路定理

流f是最大流

当且仅当没有增广路

Ford-Fulkerson算法终止的时候没有增广路

因此得到了最大流

保证了算法的正确性

我们同时证明最大流最小割定理

最大流的流值等于最小割的容量

我们通过证明下面三个条件的等价性

同时证明这两个定理

1. 存在着一个割(A, B)

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

2. f是一个最大流

3. 对于f网络中不存在增广路

由1到2

这就是弱对偶定理的推论

对于从2到3

我们证明它的逆否命题

令f是一个流

如果存在着一个增广路

那么我们可以沿着增广路进行增广

而提高流值

则f不是最大流

从3到1

令f是一个流

对应残量网络中不存在增广路

令A是残量网络中由s可达的节点集合

其余节点构成B

形成一个(A,B)割

由A的定义

s属于A

t不属于A

我们记得

流f的流值等于A流出的量

减去流入A的量

由A的定义

从A出发的边上流量都等于其容量

向A流入的量都等于0

上式等于A发出的边上的容量

等于(A,B)割的容量

于是命题得证

下面讨论算法的运行时间

假设所有的容量都是整数

介于1和C之间

在增广的过程中每条边的流值

及残量网络中每条边的容量都是整数

我们有下面的定理

因为每条边的容量都是整数

我们构造一个s-t割(A,B)

使得A中只包含s

那么这个割的容量不超过nC

因此最大流值不超过nC

每次增广至少增加一个单位的流

因此至多进行nC次循环

有一个简单的推论

如果C=1的话

那么Ford-Fulkerson算法有n次循环

每次循环可以在O(m)的时间

构建残量网络以及找到一条增广路

则算法的运行时间是O(mn)

我们还有下面的整流定理

如果所有的容量是整数

那么一定存在一个流值为整数的最大流

因为Ford-Fulkerson算法有限步终止

它得到一个整流

因此命题得证

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

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

Ford-Fulkerson Algorithm笔记与讨论

也许你还感兴趣的课程:

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