Processing math: 100%

网络流基础

1. 基本概念#

流网络#

G=(V,E)

有向图,一个源点,一个汇点。每条边都有一个属性(容量)。

不考虑反向边

可行流#

可行流 f 需要满足

  • 容量限制 ( 0f(u,v)c(u,v) )
  • 流量守恒 (除了源点和汇点,其余点的流入等于流出)

|f| 表示可行流的流量

|f|=(s,v)Ef(s,v)(s,v)Ef(v,s)

最大流#

指的是 最大可行流

残留网络#

针对流网络的某一条流

记作 Gf ,是由流 f 决定的

Vf=V , Ef=E+E 的反向边

c(u,v)={c(u,v)f(u,v)(u,v)Ef(u,v)

残留网络 + 残留网络的一个可行流 = 原流网络的一个可行流

增广路径#

在残留网络中从源点出发边权都大于0,到汇点结束的简单路径叫做增广路径。

  • 增广路径一定是一个可行流
  • 增广路径流量大于0

若对于一个可行流 f ,其 残留网络 Gf 若不存在增广路,则可以断定 f 是一个最大流

#

流网络 G=(V,E)

把点集 V 分成 S, T , ST= , ST=V

sS , tT

割的容量#

所有从 ST 的边的容量之和 c(S,T)=uSvTc(u,v)

最小割指割的容量的最小值

割的流量#

f(S,T)=uSvTf(u,v)vTuSf(v,u)

对任意的割,任意的一个可行流,割的流量一定小于等于割的容量

S,T  f,f(S,T)c(S,T)

对任意的割,任意的可行流,一定有割的流量等于可行流的流量
S,T  f|f|=f(S,T)

证明

首先有

f(S,T)=f(T,S) , f(X,X)=0

f(S,XY)=f(S,X)+f(S,Y) , XY=

f(XY,T)=f(X,T)+f(Y,T),XY=

f(S,T)=f(S,V)f(S,S)=f(S,V)=f(s,V)+f(Ss,V)=f(s,V)=|f|

最大流最小割定理#

  • f 是最大流
  • f 的残留网络中不存在增广路
  • 存在某个割 [S,T] , |f|=c(S,T)

三者相互等价

一推二和三推一都比较简单

  • ①推②

反证,若存在增广路,则可以更大流量

  • ③推①

最大流 |f|

最大流 c(S,T)=|f|

所以 |f| = 最大流

最小割 c(S,T)=|f| 最大流

此时还有 最小割=最大流

  • ②推③

S , 在 Gf 中,从 s 出发沿容量大于0的边走,所有能走到的点

T=VS ,因为没有增广路,所以 S,T 是一个割

xS,yT , 有 f(x,y)=c(x,y) ,反向边 f(y,x)=0

所以 |f|=c(S,T)

posted @   —O0oO-  阅读(223)  评论(0编辑  收藏  举报
编辑推荐:
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· .NET 进程 stackoverflow异常后,还可以接收 TCP 连接请求吗?
阅读排行:
· 本地部署 DeepSeek:小白也能轻松搞定!
· 如何给本地部署的DeepSeek投喂数据,让他更懂你
· 在缓慢中沉淀,在挑战中重生!2024个人总结!
· 大人,时代变了! 赶快把自有业务的本地AI“模型”训练起来!
· 从 Windows Forms 到微服务的经验教训
主题色彩
点击右上角即可分享
微信分享提示