有上下界網路流問題

2021-06-20 16:31:42 字數 2250 閱讀 8269

**:

此類問題可以分為三小類問題:

一、無源匯有上下界最大流

二、有源匯有上下界最大流

三、有源匯有上下界最小流

1、無源匯有上下界最大流

題目大意:給n個點,及m根pipe,每根pipe用來流躺液體的,單向的,每時每刻每根pipe流進來的物質要等於流出去的物質,要使得m條pipe組成乙個迴圈體,裡面流躺物質。並且滿足每根pipe一定的流量限制,範圍為[li,ri].即要滿足每時刻流進來的不能超過ri(最大流問題),同時最小不能低於li。

解題思路:o(-1)。

建圖模型: 以前寫的最大流預設的下界為0,而這裡的下界卻不為0,所以我們要進行再構造讓每條邊的下界為0,這樣做是為了方便處理。對於每根管子有乙個上界容量up和乙個下界容量low,我們讓這根管子的容量下界變為0,上界為up-low。可是這樣做了的話流量就不守恆了,為了再次滿足流量守恆,即每個節點"入流=出流」,我們增設乙個超級源點st和乙個超級終點sd。我們開設乙個陣列du來記錄每個節點的流量情況。

du[i]=in[i](i節點所有入流下界之和)-out[i](i節點所有出流下界之和)。

當du[i]大於0的時候,st到i連一條流量為du[i]的邊。

當du[i]小於0的時候,i到sd連一條流量為-du[i]的邊。

最後對(st,sd)求一次最大流即可,當所有附加邊全部滿流時(即maxflow==所有du>0之和),有可行解。

2、有源匯有上下界的最大流

題目大意:乙個屌絲給m個女神拍照,計畫拍照n天,每一天屌絲最多個c個女神拍照,每天拍照數不能超過d張,而且給每個女神i拍照有數量限制[li,ri],對於每個女神n天的拍照總和不能超過gi,如果有解求屌絲最多能拍多少張照,並求每天給對應女神拍多少張照;否則輸出-1。

解題思路:增設一源點st,匯點sd,st到第i天連一條上界為di下界為0的邊,每個女神到匯點連一條下界為gi上界為oo的邊,對於每一天,當天到第i個女孩連一條[li,ri]的邊。

建圖模型:源點s,終點d。超級源點ss,超級終點dd。首先判斷是否存在滿足所有邊上下界的可行流,方法可以轉化成無源匯有上下界的可行流問題。怎麼轉換呢?

增設一條從d到s沒有下界容量為無窮的邊,那麼原圖就變成了乙個無源匯的迴圈流圖。接下來的事情一樣,超級源點ss連i(du[i]>0),i連超級匯點(du[i]<0),

對(ss,dd)進行一次最大流,當maxflow等於所有(du>0)之和時,有可行流,否則沒有。

當有可行流時,刪除超級源點ss和超級終點dd,再對(s,d)進行一次最大流,此時得到的maxflow則為題目的解。為什麼呢?因為第一次maxflow()只是求得所有滿足下界的流量,而殘留網路(s,d)路上還有許多自由流(沒有和超級源點和超級匯點連線的邊)沒有流滿,所有最終得到的maxflow=(第一次流滿下界的流+第二次能流通的自由流)。

3、有源匯有上下界的最小流

題目大意:有乙個類似於工業加工生產的機器,起點為1終點為n,中間生產環節有貨物加工數量限制,輸出u v z c, 當c等於1時表示這個加工的環節必須對紐帶上的貨物全部加工(即上下界都為z),c等於0表示加工沒有上界限制,下界為0,求節點1(起點)最少需要投放多少貨物才能傳送帶正常工作。

解題思路:

1、du[i]表示i節點的入流之和與出流之和的差。 

2、增設超級源點st和超級匯點sd,連(st,du[i](為正)),(-du[i](為負),sd)。 ///增設超級源點和超級匯點,因為網路中規定不能有弧指向st,也不能有流量流出sd

3、做一次maxflow()。

4、源點(sd)和起點(st)連一條容量為oo的邊。

5、再做一次maxflow()。

6、當且僅當所有附加弧滿載時有可行流,最後答案為flow[(sd->st)^1],st到sd最大流就是sd到st最小流。

建圖模型:同樣轉換成先求無源匯有上下界的可行流,先新增一條d到s容量為無窮的邊,這裡求最小流很容易讓人產生歧路,為什麼呢?當所有邊滿足下界條件並且能量守恆時,這時候求得的最大流不就是最小流麼。這樣是錯誤了,我開始了在這揣測了良久。

下面來看個例子:

這樣求得的最小流為200,而實際的可行最小流解只需100。

問題出在原圖中存在環(迴圈流),而我們沒有利用,導致流增大了。

解決方法:先不增加d->s容量為無窮的邊,進行一次maxflow(),如果還沒有滿流,則加一條(d,s)容量為無窮的邊,再進行一次maxflow(),當且僅當所有附加弧滿載時,有可行解,解為flow[(d->s)^1](即d到s的後悔邊權值)。

有上下界網路流

前言 下面寫得只是一些十分基礎的東西,是給我以後自己看的,想要徹底弄明白這個內容,推薦去看liu runda。注 為了方便,下面所有的 x,y,l,r 都表示一條從x連向y,流量下界為l,流量上界為r的邊。問題簡述 給出乙個有向圖,每條邊有流量上下界,沒有源點和匯點,要求找到一種流的方法,使得每個點...

有上下界的網路流問題

前幾天就想寫了的,一直沒寫,今天就寫完吧。因為在做這些上下界的題的時候,遇到了很多問題,在大神的幫助下還是一一解決了的。英文沒學好誒喂,在sgu和poj各種wa。主要是沒看題,求上下界已經理解了的。做法 將圖的下界分離到乙個附加源和匯中,而上界則變為原弧的上界減去下界的差,構成乙個附加網路,再在附加...

有上下界的網路流

有上下界的網路流 這幾天看了周源的 一種簡易的方法求解流量有上下界的網路中網路流問題 並完成了 sgu 194 zoj 2314 reactor cooling,sgu 176 flow construction 和hoj 2135 poj 2396 budget三道題。作為周源文章中提到的求解上下...