有上下界的網路流問題學習筆記

2022-02-28 03:01:54 字數 2125 閱讀 5665

剛剛學了有上下界的網路流問題,總結一下。

大概可以分為4種:

1、無源匯的可行流

2、有源匯的可行流

3、有源匯的最大流

4、有源匯的最小流

無源匯的可行流

想像一條水迴圈系統,無源匯的可行流就是流量在整張圖里迴圈,每乙個節點都滿足流量守恆,沒有源點和匯點這樣的特殊點。

但是,在這個問題中,每條邊都有乙個容量下限bi和乙個容量上限ci。上限好理解,就是普通最大流中的東西,但下限怎麼處理?

想象,如果在這張流網路滿足每條邊的流量都在【bi,ci】內,那麼對於每個節點,流經它的流量至少為它的入邊的下限和,流出它的流量至少為它出邊的下限和。

怎麼限制住這個條件呢?於是我們人為地加入乙個源點s和匯點t:

s:向每個節點連一條邊,容量為它入邊的下限和

t:每個節點向t連一條邊,容量為它出邊的下限和

對每條其它的邊,容量變為ci-bi,即為正常的最大流的邊。

為什麼能這樣呢?

每條邊上的流量可以分為兩種:限制流和自由流

限制流就是為了滿足下限而必須存在的流,也就是該邊的下限

自由流即超出下限的那一部分

我們加入s和t,砍掉其它邊的下限,相當於把其它邊的限制流搶了過來,由s和t管理,這樣子剩下的就是自由流,可以為任意流量。

這樣一來,如果該流網路存在可行流,當且僅當求出s到t的最大流後s的出邊都滿載,t的入邊都滿載。

zoj2314 reactor cooling

#include#include#include#includeusing namespace std;

const int maxn=205,maxm=80005,inf=2000000000;

int inf[maxn],outf[maxn];

inline int read()

while(c>=48&&c<=57)

return out*flag;

}int head[maxn],nedge=0;

class edge

edge[maxm];

inline void build(int a,int b,int w,int l)

; head[a]=nedge++;

edge[nedge]=(edge);

head[b]=nedge++;

}int cur[maxn],s,t,d[maxn];

bool vis[maxn];

bool bfs()

} return vis[t];

}int dfs(int u,int minf)

return flow;

}int maxflow()

return flow;

}int main()

int cnt=0,flow;

for(int i=1;i<=n;i++) build(s,i,inf[i],0),cnt+=inf[i];

for(int i=1;i<=n;i++) build(i,t,outf[i],0);

flow=maxflow();

//cout<>1)

有源匯的可行流

與無源匯的可行流類似,有源匯的可行流就是多了個源點和匯點。這個時候我們可以從另乙個角度來看網路流:雖然s和t不滿足流量限制,但如果我們人為連一條由t到s的容量為正無窮的邊,那麼它就轉化成了所有點都遵循容量限制的無源匯的流網路。

那麼我們再加乙個超級源點s『和超級匯點t』【就相當於上邊的人為加入的源匯點】,就可以轉化為無緣匯的可行流啦。

有源匯的最大流

有源匯的最大流就是在求出有源匯的可行流之後去掉加入的t到s的無窮大的邊,然後再在求完可行流的殘量網路中求一遍由s到t的最大流即為最大流

最後結果為可行流中邊t->s的流量+新一次最大流中新增的流量。

有源匯的最小流

求法:1、同樣加乙個超級源s『,超級匯t』,【這個時候不加邊t->s】求一遍s『到t』最大流

2、加入邊t->s【正無窮】,再求一遍s『到t』最大流。

3、若s『出去的邊不滿流,t』進來的邊不滿流,則無解,否則解為t->s邊的流量。【這些流量為使可行流成立必須加的流】

我很辣雞,只知道這些。

學習筆記 有上下界的網路流

對於有上下界的網路流問題,涉及判是否有解及求解最大 小流,費用流.建立超級源 s 超級匯 t 對於邊 u,v l,u 將其拆成三條邊 s,v l u,v u l u,t l.因為對於邊 u,v l,u u 至少流出 l 的流量,v 至少流入 l 的流量,所以建邊 s,v l,u,t l 而 u v ...

有上下界網路流問題

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

有上下界的網路流問題

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