對於有上下界的網路流問題,涉及判是否有解及求解最大/小流,費用流.
建立超級源\(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\)有\(u-l\)的流量是自由流,所以建邊\((u,v)=u-l\).
顯然\(s->u,u->t\)有可能有多條邊,合併這些邊,節省空間.
求\(s->t\)的最大流,從\(s\)出發的邊全部滿流則可行,因為說明所有邊的下界均已滿足.每條邊的實際流為自由流+流量下界.
加一條邊\((t,s)=+\infty\).轉成無源匯.
求\(s->t\)的最大流,從\(s\)出發的邊全部滿流則可行.
求出可行流後,在殘量網路上求\(s->t\)的最大流.
理由:先不加\((t,s)=+\infty\)這條邊,這時跑\(s->t\)的最大流可求出\(t->s\)的最大流,也就是在合法的情況下最多能減去多少.\(s->t\)跑的是\(s->t\)的反向邊,這時下界的流量已經在反向邊中了,\((t,s)=+\infty,s,t\)不會影響到最大流,所以是合法的答案.
然後再加\((t,s)=+\infty\)這條邊,此時殘量網路\(s->t\)的最大流即為答案.
2017-03-14 11:20:47
有上下界網路流
前言 下面寫得只是一些十分基礎的東西,是給我以後自己看的,想要徹底弄明白這個內容,推薦去看liu runda。注 為了方便,下面所有的 x,y,l,r 都表示一條從x連向y,流量下界為l,流量上界為r的邊。問題簡述 給出乙個有向圖,每條邊有流量上下界,沒有源點和匯點,要求找到一種流的方法,使得每個點...
有上下界的網路流問題學習筆記
剛剛學了有上下界的網路流問題,總結一下。大概可以分為4種 1 無源匯的可行流 2 有源匯的可行流 3 有源匯的最大流 4 有源匯的最小流 無源匯的可行流 想像一條水迴圈系統,無源匯的可行流就是流量在整張圖里迴圈,每乙個節點都滿足流量守恆,沒有源點和匯點這樣的特殊點。但是,在這個問題中,每條邊都有乙個...
上下界網路流學習筆記
一些點,一堆邊,每條邊要滿足流量限制 l,r 先令每條邊流量等於流量下限,得到初始流,初始流可能不滿足流量守恆,再建出殘量網路 上限 下限 求出可能不滿足流量守恆的附加流,使附加流和初始流合併後滿足流量守恆 定義 a i 表示初始流中流入量 流出量 若 a i 0 表示流入量大於流出量,附加量需要流...