网络流算法(概念讲解)

网络流算法

流网络

G = ( V , E ) G=(V,E) G=(V,E) ,不考虑反向边,如果边不存在,则容量 C C C为0

可行流: f f f

  • 容量限制, 0 < = f ( u , v ) < = c ( u , v ) 0<=f(u,v)<=c(u,v) 0<=f(u,v)<=c(u,v)
  • 流量守恒, v x ∈ V ∣ { s , t } v_x \in V|\{s,t\} vxV{s,t} , ∑ f ( v , x ) = ∑ f ( x , v ) \sum{f(v,x)}=\sum{f(x,v)} f(v,x)=f(x,v)

流量值: ∣ f ∣ = ∑ f ( s , v ) − ∑ f ( v , s ) |f|=\sum{f(s,v)}-\sum{f(v,s)} f=f(s,v)f(v,s)

最大流:最大可行流

残留网络: G f G_f Gf

  • V f = V , E f = E + E 中所有反向边 V_f=V,E_f=E+E_{中所有反向边} Vf=V,Ef=E+E中所有反向边
  • image-20240814140302525
  • 也是一个可行流

f + f ‘ f+f^` f+f也是原来网络的一个可行流,两个方案相加,每条边对应相加

  • 容量限制
  • 流量守恒
  • image-20240814142034434
  • ∣ f + f ‘ ∣ = ∣ f ∣ + ∣ f ‘ ∣ |f+f^`|=|f|+|f^`| f+f=f+f

增广路径:在残留网络里,从起点沿着大于零的边走,能走到终点的路径

  • 如果一个原图的f的残留网络有增广路径,说明f可行流不是最大流
    • 引入割的概念证明
  • 匈牙利算法和最大流算法本质一样
    • 匈牙利效率反而低一点

image-20240814143616622

image-20240814143852291

割: G = ( V , E ) G=(V,E) G=(V,E)

  • 割点,把点集不重不漏分为两个部分,分别为s和t,分别在 S S S T T T这两个集合里
  • 割的容量:
    • 所有从S指向T的v边的容量之和
    • c ∈ ( S , T ) = ∑ u ∈ S ∑ v ∈ T c ( u , v ) c \in (S,T) = \sum\limits_{u \in S}{\sum\limits_{v \in T}{c(u,v)}} c(S,T)=uSvTc(u,v)
    • 最小割:容量的最小值
  • 割的流量:
    • f ( S , T ) = ∑ u ∈ S ∑ v ∈ T f ( u , v ) − ∑ u ∈ T ∑ v ∈ S f ( u , v ) f(S,T)=\sum\limits_{u \in S}{\sum\limits_{v \in T}{f(u,v)}}-\sum\limits_{u \in T}{\sum\limits_{v \in S}{f(u,v)}} f(S,T)=uSvTf(u,v)uTvSf(u,v)
  • 割的容量和流量的定义是不对称的
  • 性质
    • ∀ [ S , T ] , ∀ f , f ( S , T ) < = c ( S , T ) \forall [S,T] , \forall f,f(S,T)<= c(S,T) [S,T],f,f(S,T)<=c(S,T)
    • f ( S , T ) = ∣ f ∣ f(S,T)=|f| f(S,T)=f
      • f ( x , y ) = ∑ u ∈ x ∑ v ∈ y f ( u , v ) − ∑ u ∈ x ∑ v ∈ y f ( v , u ) f(x,y)=\sum\limits_{u \in x}\sum\limits_{v \in y}{f(u,v)}-\sum\limits_{u \in x}\sum\limits_{v \in y}{f(v,u)} f(x,y)=uxvyf(u,v)uxvyf(v,u)
      • image-20240814150641302
      • image-20240814150732555
      • 有了四个性质之后可以证明
      • image-20240814151009268
      • image-20240814151149888
      • 最后这张图的证明来自《最小割模型在信息学竞赛中的应用》——胡伯涛
    • image-20240814151650250
      • ∣ f ∣ < = c ( S , T ) |f|<=c(S,T) f<=c(S,T)
      • 最大流量<= 最小割的容量
  • 最大流最小割定理
    • 一个可行流f是最大流
    • 可行流f的残留网络中不存在增广路
    • ∃ [ S , T ] , ∣ f ∣ = c ( S , T ) \exists [S,T], |f|=c(S,T) [S,T],f=c(S,T)
    • image-20240814153904393
    • image-20240814155159123
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值