有上下界網路流

2021-08-18 13:02:42 字數 3403 閱讀 8640

前言:

下面寫得只是一些十分基礎的東西,是給我以後自己看的,想要徹底弄明白這個內容,推薦去看liu_runda。

注:為了方便,下面所有的(x,y,l,r)都表示一條從x連向y,流量下界為l,流量上界為r的邊。

問題簡述:

給出乙個有向圖,每條邊有流量上下界,沒有源點和匯點,要求找到一種流的方法,使得每個點流入的流量與流出的流量相等,且每條邊的流量都要滿足上下界。

建圖方法:

用乙個陣列

v v

儲存每個點流入流量與流出流量的差.。對於(x,y,l,r),建一條x到y,流量為r-l的邊,v[

x]−=

l,v[

y]+=

l' role="presentation" style="position: relative;">v[x

]−=l

,v[y

]+=l

v[x]

−=l,

v[y]

+=l;之後掃一遍點,若v[

x]>

0 v[x

]>

0,建一條超級源點ss

s s到

x x

流量為v[

x]' role="presentation" style="position: relative;">v[x

]v[x

]的邊;否則建一條

x x

到超級匯點tt

' role="presentation" style="position: relative;">ttt

t,流量為−v

[x] −v[

x]

的邊,然後跑一遍最大流。

判斷是否有解:

掃一遍超級源點連出去的所有邊,若全部滿流則有解,否則無解。

問題簡述:

給出乙個有向圖,每條邊有流量上下界,有源點

s s

和匯點t' role="presentation" style="position: relative;">t

t,要求找到一種流的方法,使得源點

s s

的流出量等於匯點

t' role="presentation" style="position: relative;">t

t的流入量,除源點匯點之外每個點流入的流量與流出的流量相等,且每條邊的流量都要滿足上下界。

建圖方法:

注意到源點的流出量等於匯點的流入量,那麼可以建一條

t t

到s' role="presentation" style="position: relative;">s

s的流量為inf的邊,那麼就轉化為上面的無源匯上下界可行流的問題,按照上面的方法建圖即可。

判斷是否有解:

同上。問題簡述:

給出乙個有向圖,每條邊有流量上下界,有源點

s s

和匯點t' role="presentation" style="position: relative;">t

t,要求找到一種流的方法,使得源點

s s

的流出量等於匯點

t' role="presentation" style="position: relative;">t

t的流入量,除源點匯點之外每個點流入的流量與流出的流量相等,且每條邊的流量都要滿足上下界,滿足這些前提的情況下,要求流量最大。

建圖方法:

對於(x,y,l,r),建一條超級源點ss

s s到

y y

的流量為l的邊,一條

x' role="presentation" style="position: relative;">x

x到超級匯點tt

t

t的流量為l的邊,一條

x x

到y' role="presentation" style="position: relative;">y

y的流量為r-l的邊,最後建一條匯點

t t

到源點s' role="presentation" style="position: relative;">s

s流量為inf的邊。

判斷是否有解及求最大流:

判斷是否有解的方法與前面的一樣。

找最大流有兩種方法:

首先一開始都要跑一次ss

s

s到tt

t

t判斷是否有解,以下都是在進行了第一次網路流的情況下進行的。

1、把最大流的初始值設為

t t

到s' role="presentation" style="position: relative;">s

s這條邊的流量,把ss

s

s連出去的邊清掉,把

t t

到s' role="presentation" style="position: relative;">s

s的邊刪掉,再在殘量網路上跑一次

s s

到t' role="presentation" style="position: relative;">t

t的最大流,初始最大流加上這次的最大流就是答案。

2、直接跑一次

s s

到t' role="presentation" style="position: relative;">t

t的最大流即為答案。

問題簡述:

給出乙個有向圖,每條邊有流量上下界,有源點

s s

和匯點t' role="presentation" style="position: relative;">t

t,要求找到一種流的方法,使得源點

s s

的流出量等於匯點

t' role="presentation" style="position: relative;">t

t的流入量,除源點匯點之外每個點流入的流量與流出的流量相等,且每條邊的流量都要滿足上下界,滿足這些前提的情況下,要求流量最小。

建圖方法:

與有源匯上下界最大流一樣。

判斷是否有解及求最小流:

判斷是否有解的方法與前面的一樣。

找最小流:

把最小流的初始值設為

t t

到s' role="presentation" style="position: relative;">s

s這條邊的流量,把ss

s

s連出去的邊清掉,把

t t

到s' role="presentation" style="position: relative;">s

s的邊刪掉,再在殘量網路上跑一次

t t

到s' role="presentation" style="position: relative;">s

s的最大流,初始最小流減去這次的最大流就是答案。

有上下界的網路流

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

有上下界網路流問題

此類問題可以分為三小類問題 一 無源匯有上下界最大流 二 有源匯有上下界最大流 三 有源匯有上下界最小流 1 無源匯有上下界最大流 題目大意 給n個點,及m根pipe,每根pipe用來流躺液體的,單向的,每時每刻每根pipe流進來的物質要等於流出去的物質,要使得m條pipe組成乙個迴圈體,裡面流躺物...

有上下界的網路流

1.無匯源有上下界最大流 以前寫的最大流預設的下界為0,而這裡的下界卻不為0,所以我們要進行再構造讓每條邊的下界為0,這樣做是為了方便處理。對於每根管子有乙個上界容量up和乙個下界容量low,我們讓這根管子的容量下界變為0,上界為up low。可是這樣做了的話流量就不守恆了,為了再次滿足流量守恆,即...