博客
关于我
有上下界的网络流学习笔记
阅读量:99 次
发布时间:2019-02-26

本文共 1561 字,大约阅读时间需要 5 分钟。

前言

补坑补坑

还债还债
参考了的

前置

上下界:即一条边存在必须流过的流量与至多流过的流量,分别称为上界和下界

流量守恒:即满足一个点的流入流量=流出流量
可行流:问一张图是否存在每个点满足流量守恒且满足上下界限制的流
将以上条件称为基本条件
称一条边 ( u , v , d o w n , u p ) (u,v,down,up) (u,v,down,up)为从 u u u v v v,流量下界为 d o w n down down,上界为 u p up up的边

核心姿势

先让每条边满足下界,再调整流量

新建附加流
满足若原流中流出>流入,则附加流中流入>流出
反之亦然

无源汇可行流

图中不存在源汇,求是否有循环往复并满足基本条件的流

新建超级源 S S SS SS,超级汇 T T TT TT

对于原图中的每个点 i i i,我们记 d [ i ] d[i] d[i]表示流入其的边的下界和减去其流出的边的下界和的差
d [ i ] < 0 d[i]<0 d[i]<0 i − > T T i->TT i>TT连一条流量为 − d [ i ] -d[i] d[i]的边
否则, S S − > i SS->i SS>i连一条流量为 d [ i ] d[i] d[i]的边
上一条边保证了在附加流的过程中多流入来补足的流量有地方可以离开
后一条边保证了在附加流的过程中存在有流可以补足流出的流
称如上的边为附加边
对于一条边 ( u , v , d o w n , u p ) (u,v,down,up) (u,v,down,up),我们做如下操作
u − > v u->v u>v连一条流量为 u p − d o w n up-down updown的边
用于跑附加流

在新图中跑 S S − > T T SS->TT SS>TT的最大流

若所有附加边均满流,则存在可行流
此时可行流中的边的流量为其流量下界加上他在新图中的流量

有源汇有上下界可行流

图中存在源汇,求是否有从源到汇满足基本条件的流

我们发现只有源和汇是不存在满足流量守恒的情况的

所以在图中加入一条汇到源的流量无穷的边,让其满足流量守恒
此时图变成了无源汇的
故套用上面的算法求可行流即可

upd:不写一下不知道细节是啥…

注意原来的源汇都需要做如上的过程
在建 I N F INF INF边之前做这个操作
就是连向 S S , T T SS,TT SS,TT的过程

可行流的流量是多少?

即为新建的汇到源的无穷边的流量

有源汇有上下界最大流

在如上的基础上满足流量最大

先套用第二个算法求一次可行流,并记录可行流的流量 s 1 s1 s1
此后将新建的汇流向源的边删除
跑一次从源到汇的最大流 s 2 s2 s2
则最大流流量为 s 1 + s 2 s1+s2 s1+s2

有源汇有上下界最小流

在满足第二个流的基础上满足流量最小

同样套用第二个算法求一次可行流,并记录可行流的流量 s 1 s1 s1
将新建的汇到源的边删除
此后跑一遍从汇到源的最大流 s 2 s2 s2
则最小流流量为 s 1 − s 2 s1-s2 s1s2

还有一种更简单的写法,套用第二个算法的最后不加上汇到源的这条无限边。先跑一边 S S SS SS T T TT TT的最大流

跑完之后再将汇到源这条无限边加上,再跑一次从 S S SS SS T T TT TT的最大流
此时这条无限边的反向边的流量即为最小流

有源汇有上下界最小费用流

按第一个流的方法建图

不同的是
原图中的边的费用正常
附加边费用为0
S S − > T T SS->TT SS>TT最小费用流
则原图最小费用流为跑出的费用+原图中每条边的下界*其费用

转载地址:http://temu.baihongyu.com/

你可能感兴趣的文章
logstash mysql 准实时同步到 elasticsearch
查看>>
Luogu2973:[USACO10HOL]赶小猪
查看>>
mabatis 中出现&lt; 以及&gt; 代表什么意思?
查看>>
Mac book pro打开docker出现The data couldn’t be read because it is missing
查看>>
MAC M1大数据0-1成神篇-25 hadoop高可用搭建
查看>>
mac mysql 进程_Mac平台下启动MySQL到完全终止MySQL----终端八步走
查看>>
Mac OS 12.0.1 如何安装柯美287打印机驱动,刷卡打印
查看>>
MangoDB4.0版本的安装与配置
查看>>
Manjaro 24.1 “Xahea” 发布!具有 KDE Plasma 6.1.5、GNOME 46 和最新的内核增强功能
查看>>
mapping文件目录生成修改
查看>>
MapReduce程序依赖的jar包
查看>>
mariadb multi-source replication(mariadb多主复制)
查看>>
MariaDB的简单使用
查看>>
MaterialForm对tab页进行隐藏
查看>>
Member var and Static var.
查看>>
memcached高速缓存学习笔记001---memcached介绍和安装以及基本使用
查看>>
memcached高速缓存学习笔记003---利用JAVA程序操作memcached crud操作
查看>>
Memcached:Node.js 高性能缓存解决方案
查看>>
memcache、redis原理对比
查看>>
memset初始化高维数组为-1/0
查看>>