博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[学习笔记] 有上下界的网络流
阅读量:7075 次
发布时间:2019-06-28

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

其实这些文章好早就写好的..

我发现我一点不会网络流

\(f(u, v)\), \(b(u, v)\), \(c(u, v)\) 为边流量 上下界

\(g(u, v)\) = \(f(u, v) - b(u, v)\)

无源汇可行流

首先 网络流有一个流量平衡条件

也就是 \(\sum f(u, i) = \sum f(i, v)\)
对于上下界网络流
我们先给每一个边流量设为\(b(u, v)\)
会发现一个问题 就是流量平衡不满足了
解决方法如下
\(\sum f(u, i) = \sum f(i, v)\)
\(\sum (b(u, i) + g(u, i)) = \sum (b(i, v) + g(i, v))\)
\(d(i) = \sum b(u, i) - \sum b(i, v)\)
移项 \(\sum g(i, v) = \sum g(u, i) + d(i)\)
所以若\(d(i) > 0\)则需要从\(ss\)补流
否则就要向\(tt\)
新图跑最大流即可
\(ss\)的新边满流则有解

有源汇可行流

原图t -> s \([0, \infty]\)

解法同无源汇可行流
此时流量为t -> s流量

有源汇最大流

先跑可行流

此时流量守恒
再在新图删掉t -> s
跑s -> t最大流
流量为两部分和

有源汇最小流

之前做法是假的

先跑可行流
然后原图t -> s 连流量为inf的边
再跑ss -> tt的最大流

上下界费用可行流

因为有下界的存在,这类费用流问题没有"最小费用最大流"之类的限制,只要是可行流就可以

同无源汇可行流
具体的话

clove_unique博客

首先建立附加源点ss和附加汇点tt
对于原图中的边x->y,若限制为[b,c],费用为cost,那么连边x->y,流量为c-b,费用为cost
对于原图中的某一个点i,记d(i)为流入这个点的所有边的下界和减去流出这个点的所有边的下界和
若d(i)>0,那么连边ss->i,流量为d(i),费用为0
若d(i)<0,那么连边i->tt,流量为-d(i),费用为0
连边t->s,流量为inf,费用为0

跑ss->tt的最小费用最大流

答案即为(求出的费用+原图中边的下界*边的费用)

总结

我会网络流了(误)

注意流量平衡以及分流逆流等操作

转载于:https://www.cnblogs.com/foreverpiano/p/8470427.html

你可能感兴趣的文章
MySQL用命令行复制表,查看表结构
查看>>
第三次冲刺
查看>>
PHP多进程
查看>>
微软职位内部推荐-SENIOR SOFTWARE ENGINEER
查看>>
数值优化(三)
查看>>
Javascript.ReactNative-2-javascript-syntax-in-react-native
查看>>
LeetCode:Balanced Binary Tree
查看>>
4.时间复杂度和空间复杂度-2
查看>>
华为架构师8年经验谈:从单体架构到微服务的服务化演进之路
查看>>
软件工程——团队答辩
查看>>
Eonasdan bootstrap datetimepicker 使用记录
查看>>
使用 JavaScript 将网站后台的数据变化实时更新到前端-【知乎总结】
查看>>
四: 基本标签
查看>>
图片文件重命名
查看>>
Day1 BFS算法的学习和训练
查看>>
A Tour of Go Methods continued
查看>>
How to setup Wicket Examples in Eclipse
查看>>
什么样的项目适合自动化测试
查看>>
输不起慢的代价,赢不了休息的时间
查看>>
使用弹性布局来解决令人烦恼的垂直居中问题~~
查看>>