网络流

网络流是一类关于有向图中流量的问题

最重要的性质是流守恒,也就是入流等于出流

 

主要的问题有三类

一是求最大流

  比较简单的是dinic,用fhq的maincode只有21行

  思想是每步bfs分层,然后dfs压流,直到无路可走为止

  实现细节要压流时注意流量守恒

  还有反向边

 

  这类问题的扩展是带上下界的网络流

基础是无源汇的可行流

方法是附加源汇,计算流入下界的和与流出下界的和B[u],按照正负与s ,t连边

 

接下来是有源汇的最大流

方法是二分参数a,连<t,s>=a判断答案就是上面的方法

最小流也是这样

 

二是最小割

  它是最大流的对偶问题

  最小割=最大流

 

  核心思想:将点权转化成边权

         不想选的边设为正无穷

 

这个模型非常巧妙

有很多应用

1.      最大权闭合子图

它的核心是依赖关系

建图:按点权连边

原边设为正无穷

 

 

可以证明C[s,t]=和w(v2+)+和w(v1-)

W=omega(w(V+))-C[S,T]

 

2.      二分图的最小点权覆盖集和最大点权独立集

覆盖集

核心条件:对于<u,v>∈E 必有 u∈V or v∈V

建图:X的点连s,Y的点连t

原边正无穷

求最小割

 

 

独立集

对于<u,v>∈E 必有 ~(u∈V and v∈V)

覆盖集的对偶问题

覆盖集的补集

 

 

这类问题的关键在于转换成二分图

 

3.      分数规划

Y=a(x)/b(x)求y的最大值

 

转换成h(Y)=a(x)-Yb(x)

 方法是二分Y

可证明只有当h(Y)=0时是最优解 

按照这种形式

H(Y)>0 时 Y<Y*

H(Y)<0 时 Y>Y*

 

对于最小割的问题是01动规

H(Y)=x*W

用W建图

用最小割判定

 

4.      最大密度子图

问题是求密度最大的子图

g=|E|/|V|

 

用分数规划推导

二分g

 

建图:

C(u,v)=1 C(s,v)=U C(v,t)=U+2g-dv

U是一个足够大的值保证点权非负 令U=m

Dv是点的度数

H(g)=(U*n-C[S,T])/2

 

推广到带边权图

C(u,v)=w(e)C(s,v)=U C(v,t)=U+2g-dv

U=和w(e)

 

推广到点权边权都有

C(u,v)=w(e)C(s,v)=U C(v,t)=U+2g-dv-2*p(v)

U=和w(e)+2*和(p(v))

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值