网络流ppt课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
max{ |f| : f是G的流}
11/16 v1 12/12
4/9
s
10 1/4
v3 15/20
7/7
t
8/13 v2 11/14 v4 4/4
流网络, 残余网络
• 假设任意vV, 有从svt的路径 • 容量c: V×V→R+, (u, v)E: c(u, v) 0;
(u, v)E: c(u, v) = 0. • 流网络:有向图G=(V,E), s, t, c.
• 流f的残余流量, cf(u,v) = c(u,v) - f(u,v). • 残余网络, Gf=(V, Ef), Ef = { (u,v) | cf(u,v)>0 }
11/16 v1 12/12
4/9
s 0/10 1/4
v3 15/20 7/7 t
8/13 v2 11/14 v4 4/4
5 v1 12 v3 5
最大流题目选讲
• 3. 能量矩阵
• 在一个M * N 的方格矩阵中,每个格子都有一个能量 值且能量值为正,现在已知在此矩阵中相邻的两个格 子的能量会发生冲突而抵消,现在请问最多能从该矩 阵中获得多少没有冲突的能量
最大流题目选讲
• 2. 喜羊羊与灰太狼
• 在一个M*N的方格形地图 上,有一些格子中有羊, 有一些格子中有狼,还有 一些格子是空地,每个格 子内最多只能有一只狼或 羊,先要沿着格子边沿修 建围墙,请问最少修建多 长的围墙能够将狼和羊隔 开。
最大流题目选讲
• 实际上是一个多源汇最小割问题,我们把地图中每个 方格作为网络中的一个节点,任意相邻两个方格建立 双向容量为1的边。
5
7 15 t
3
8
v2
11 v4
4
5 v1
11
s 1 11 3
12 v2
12
v3 1
9 7 19 t
3
4
11 v4
两个性质
• 引理. 给定G=(V,E), s, t, c, f, Gf . 设p为一条增 广路径, 定义 fp(u,v) = cf(p), 若(u,v)p = -cf(p), (v,u)p = 0, else 则fp是Gf上的流, |fp| = cf(p).
• 推论 给定G=(V,E), s, t, c, f, Gf . p是Gf上的 增广路径, 则f+fp是流且 |f+fp| > |f| .
流网络的割
• 割(S,T): (1) T=V-S (2) sS, tT.
• f(S,T)=uS,vTf(u,v) : f穿过割(S,T)的净流 • c(S,T)=uS,vTc(u,v) : 割(S,T)的容量 • 例.下图中的割(S,T), S={s,v1,v2},T={v3,v4,t}.
则有最小费用最大流问题
16
v1 12 v3
20
9
s
10 4
7
t
13
v2
14 v4
4
能否观察出最大流的上界?
流, 流量, 最大流
• 称 f: VVR 为流, 若f 满足:
(1) 容量限制, f(u,v) c(u,v)
(2) 反对称性, f(u,v) = -f(v,u)
(3) 流守恒性, 任意uV\{s,t}, vV f(u,v) = 0 • 流量 |f| = vV f(s,v). • 最大流: 给定流网络G,s,t,c, 求
Edmond-Karp,
O(|V| |E|2)
一般push-relabel,
O(|V|2 |E|)
SAP,
O(|V|2 |E|)
Dinic,
O(|V|2 |E|)
预流推进,
O(|V|3)
最大流题目选讲
• 1. Dinning
• Farmer John的牛饿了,到了午餐时间需要吃饭和喝 饮料,现在已知有n头牛,a种食物和b种饮料,每头 牛都有一些食物和饮料是喜欢的,牛们只会吃喜欢的 食物和喜欢的饮料,每种食物和饮料只有一份,现在 请问最多有多少头牛能够吃到喜欢的食物和饮料。
• 此时我们假设有狼的格子为源点,有羊的格子为汇点 ,显然只要有从任意源点到达任意汇点的一个流,则 说明狼可以通过这条路径吃到羊,所以只要割断这个 图就可以隔开狼和羊,而每割断一条边正好对应修建 一段墙,原问题也就成功转化为多源汇最小割问题。
• 为解决问题,我们添加超级源点src和超级汇点dst,src 到每个狼的格子有容量为INF的边,每个羊的格子到 dst有容量为INF的边,在此网络中由最大流最小割定 理,求出最大流即为答案
最大流
计算机学院 刘庆晖 qhliu@bit.edu.cn 参考资料: Cormen等, 算法导论(影印,中译版), 机工.
1
最大流问题
• 有向图G=(V,E), 容量c : ER+, 源s, 汇t, • 求容量限制下, 能从s运送到t的最大量 • 若在边(u,v)上运送单位物质费用为h(u,v),
11
4
s 5 11 3 5
7 15 t
3
8
v2
11 v4
4
增广路径
•增广路径: Gf中从s到t的一条简单路径 •增广路径的残余容量: 若p为增广路径, 则称
cf(p) = min { cf(u,v) : (u,v)p } 为p的残余容量, 是Gf中能沿p传输的最大量.
12
5 v1
v3 5
s
11
4
5 11 3
最大流题目选讲
• 增加源点src与汇点dst,src到每种食物连一条容量 为1的边,保证每种食物只用一次,同理每种饮料 到汇点连一条容量为1的边,保证每种饮料只用一 次。
• 将每头牛拆成两个点,中间连一条容量为1的边, 保证每头牛只用一次,没种食物到喜欢他的牛左侧 的点连容量为INF的边,每头牛右侧的点到每种饮 料连容量为INF的边,求最大流即可。
f(S,T)=19, c(S,T)=26.
11/16 v1 12/12 v3 15/20
s
10 1/4 4/9
8/13 v2 11/14
7/7
t
v4 4/4
ห้องสมุดไป่ตู้←S T→
最大流最小割定理
• f(S,T) = |f|, |f| min{ c(S,T) | 割(S,T) }. • 定理(最大流最小割) 下列条件等价
(1) f是G的一个最大流; (2) Gf不包含增广路径; (3) 存在割(S,T)使得 |f| = c(S,T). • 最大流算法基本思想: 找从s到t的增广路径, 增大流, 无则停止, 得最大流 • 最小费用最大流算法基本思想: 以单位运费为边权, 找从s到t的最短增广路径.
算法复杂度
Ford-Fulkerson, 容量为整数, O(|E| |f*|)