网络流
来源:互联网 发布:腾讯代理绝地求生知乎 编辑:程序博客网 时间:2024/06/08 14:37
网络流是一类关于有向图中流量的问题
最重要的性质是流守恒,也就是入流等于出流
主要的问题有三类
一是求最大流
比较简单的是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))
- 【网络流】网络扩容
- 网络流
- 网络流
- 网络流
- 网络流
- 网络流
- 网络流
- 网络流
- 【网络流】
- 【网络流】
- 网络流
- 网络流
- 网络流
- 网络流
- 网络流
- 网络流
- 网络流
- 网络流
- maven项目在eclipse中运行clean test 等报错
- 关于动态代理模式
- Linux 上tomcat的安装
- objc block的介绍和使用
- 再造 “手机QQ” 侧滑菜单(一)——实现侧滑效果
- 网络流
- ASIHTTPRequest杂记
- java ftp 上传下载(写入自定义字符串)
- 触发器例子
- mysql数据类型
- js的身份证号验证和日期格式验证
- 再造 “手机QQ” 侧滑菜单(二)——高仿左视图
- [php] namespace命名空间解析
- Hibernate框架_02