[学习笔记]上下界网络流
有的時候,網絡流建模要考慮某些邊必須選擇若干次,又不能多于若干次,而且不太容易轉化成比較好的限制模型,
就簡單粗暴地給每條邊定一個流量的上下界,求在滿足上下界的基礎上的一些問題。
大概有以下幾種。
基本思路都是先滿足下界,再調整流量守恒,一邊滿足最優(yōu)性。
?
無源匯上下界可行流
每條邊的流量有上下界
問是否存在一種可行方案
?
首先我們要保證每個點的流入流量等于流出流量
如果存在一個可行流,那么一定滿足每條邊的流量都大于等于流量的下限.因此我們可以令每條邊的流量等于流量下限,得到一個初始流,然后建出這個流的殘量網絡,每條邊的流量等于上限減下限。
但現在可能流量不是守恒的,讓t[i]=流入量-流出量
我們建出虛擬的源點和匯點,如果t[i]>0,源點向i連t[i]的邊,否則i點向匯點連-t[i]的邊,看是否滿流即可
?
注意,把下界干掉時,不是真的流過去,反向邊不用動。因為這里不能反悔。
?
有源匯上下界可行流
T到S連一條inf的邊e。然后同上。
設e的最終流量是w,則原圖的可行流就是w
證明:
S,T本身沒有入邊、出邊,那么e的流量就是S流出的,流到T的流量。
拆掉這個邊,每個邊流量加上下界
由于剩下的圖中,滿足流量守恒和上下界,那么一定是一個合法的網絡流流量分配,那么S流出的流量w就是總流量
?
無源匯上下界最小費用可行流
干掉下界的時候,把費用先計算上。
把超級源超級匯求最大流的一步,換成最小費用最大流即可。
即滿足合法的前提下,最小化費用。
費用就是之前的費用加上這次的費用。
例題:[NOI2008]志愿者招募
?
有源匯上下界最小費用可行流
t到s是(inf,0)的邊。
同上。
?
有源匯上下界(最小費用)最大流
先求可行流
現在流量已經守恒了。
拆掉t到s的邊
殘量網絡上求s到t的最大流即可。
因為最大流過程一定滿足流量守恒,所以依然合法。所以求可行流的反向邊流量可以保留,支持反悔。
最大流=可行流+s到t的增加的最大流
?
如果涉及最小費用,把所有的最大流換成最小費用最大流即可。
記得統(tǒng)計三次費用。
?
有源匯上下界(最小費用)最小流
https://blog.csdn.net/Hanks_o/article/details/77995557
兩種方法。
第一種:
直接類比上面的 有源匯上下界(最小費用)最大流
理解一下反邊,就是反悔。
t到s的最大流,就是s到t能減少的最多的流量。
所以最后一步,求t到s的最大流。
最小流=可行流-t到s的最大流。
?
第二種:(并不如第一個好理解)
類似 <有源匯上下界可行流> 的構圖方法,但是不添加T到S的邊,求一次超級源到超級匯的最大流。
加邊(T,S,0,+∞),在上一步殘量網絡基礎上再求一次超級源到超級匯的最大流。
流經T到S的邊的流量就是最小流的值。
該算法的思想是在第一步中盡可能填充循環(huán)流,以減小最小流的代價。
第二步最大流為了保證合法性。
其實相當于,第一步先占據一些循環(huán)流,然后再跑完第二個最大流之后,刪掉t到s的邊,對于一些第一步構成的循環(huán)流,刪掉。
觀察現在實際的圖流量分配,就是最小流了。
?
例題: P4843 清理雪道
?
轉載于:https://www.cnblogs.com/Miracevin/p/10132570.html
總結
以上是生活随笔為你收集整理的[学习笔记]上下界网络流的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 自定义加速球效果
- 下一篇: CF1142C U2(计算几何,凸包)