博客
关于我
有上下界的网络流学习笔记
阅读量: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/

你可能感兴趣的文章
Mysql8在Centos上安装后忘记root密码如何重新设置
查看>>
Mysql8在Windows上离线安装时忘记root密码
查看>>
MySQL8找不到my.ini配置文件以及报sql_mode=only_full_group_by解决方案
查看>>
mysql8的安装与卸载
查看>>
MySQL8,体验不一样的安装方式!
查看>>
MySQL: Host '127.0.0.1' is not allowed to connect to this MySQL server
查看>>
Mysql: 对换(替换)两条记录的同一个字段值
查看>>
mysql:Can‘t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock‘解决方法
查看>>
MYSQL:基础——3N范式的表结构设计
查看>>
MYSQL:基础——触发器
查看>>
Mysql:连接报错“closing inbound before receiving peer‘s close_notify”
查看>>
mysqlbinlog报错unknown variable ‘default-character-set=utf8mb4‘
查看>>
mysqldump 参数--lock-tables浅析
查看>>
mysqldump 导出中文乱码
查看>>
mysqldump 导出数据库中每张表的前n条
查看>>
mysqldump: Got error: 1044: Access denied for user ‘xx’@’xx’ to database ‘xx’ when using LOCK TABLES
查看>>
Mysqldump参数大全(参数来源于mysql5.5.19源码)
查看>>
mysqldump备份时忽略某些表
查看>>
mysqldump实现数据备份及灾难恢复
查看>>
mysqldump数据库备份无法进行操作只能查询 --single-transaction
查看>>