Presentation is loading. Please wait.

Presentation is loading. Please wait.

第六节 最大流问题 最大流最小割定理 基本概念 主要定理 最大流算法 算法步骤 算法复杂性 第4页缺3个证明.

Similar presentations


Presentation on theme: "第六节 最大流问题 最大流最小割定理 基本概念 主要定理 最大流算法 算法步骤 算法复杂性 第4页缺3个证明."— Presentation transcript:

1 第六节 最大流问题 最大流最小割定理 基本概念 主要定理 最大流算法 算法步骤 算法复杂性 第4页缺3个证明

2 基本概念 给定有向网络G=(N,A,C),cij表示弧(i,j)∈A的容量,G有一个发点s和一个收点t (s,t ∈N)。令
xij=通过弧(i,j)的流量 (6.6.1) 显然有 0≤xij≤cij (6.6.2) 另外,流x=(xij)要遵守点守恒规则,即 可行流:满足(6.6.1)和守恒方程(6.6.2)的流,简称为(s,t)-流

3 基本概念 设P是G中从s到t的无向路,则P的前向弧(i,j)是指其方向从s到t的弧;否则称为P的后向弧
设P是G中从s到t的无向路,则P的前向弧(i,j)是指其方向从s到t的弧;否则称为P的后向弧 流x=(xij)的增广路P:P的每个前向弧(i,j)有xij<cij ,而P的每个后向弧(i,j)有xij>0 (s,t)-割:弧割(S,T),其中s∈S,t∈T 割(S,T)的容量:

4 主要定理 定理6.6.1(增广路定理) 一个可行流是最大流当且仅当不存在关于它的从s到t的增广路。
定理6.6.2(整流定理) 如果网络中所有弧容量是整数,则存在值为整数的最大流。 定理6.6.3(最大流最小割定理) 一个(s,t)-流的最大值等于(s,t)-割的最小容量。 证明 证明 提示

5 最大流算法的步骤 第1步(开始) 令x=(xij)是任意整数可行流,可能是零流,给s一个永久标号(-,∞)。 第2步(找增广路)
(2.1) 如果所有标号都已经被检查,转到第4步。 (2.2) 找一个标号但未检查的点i,并做如下检查,对每一个弧(i,j),如果xij≤cij且j未标号,则给j一个标号(+i,δ(j)),其中δ(j)=min{cij-xij,δ(i)};对每一个弧(j,i),如果xij>0且j未标号,则给j一个标号(-i,δ(j)),其中δ(j)=min{xji,δ(i)}。 (2.3) 如果t已被标号,转到第3步;否则,转到(2.1)。

6 最大流算法的步骤 第3步(增广) 由点t开始,试用指示标号构造一个增广路,指示标号的正负则表示通过增加还是减少弧流量来增大流值。抹去S点以外的所有标号,转到第2步。 第4步(构造最小割) 这时现行流是最大的,若把所有标号点的集合记为S,所有未标号点的集合记为T,便得到最小容量割(S,T),计算完成。

7 最大流算法的复杂性 设弧数为m,每找一条增广路最多需要进行2m次弧检查。如果所有弧容量都是整数,则最多需要v次增广,其中v是最大流值。所以,总的计算量为O(mv)。 注:此算法的时间复杂性与最大流值v有关,所以说它并不是一个好的算法。如果大家感兴趣,可以查阅相关书籍,有好的算法,如复杂性为O(n3)的算法。


Download ppt "第六节 最大流问题 最大流最小割定理 基本概念 主要定理 最大流算法 算法步骤 算法复杂性 第4页缺3个证明."

Similar presentations


Ads by Google