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

2022-09-04 21:39:12 字數 862 閱讀 1771

對於有上下界的網路流問題,涉及判是否有解及求解最大/小流,費用流.

建立超級源\(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\)的最大流.

理由:

\(s->t\)跑的是\(s->t\)的反向邊,這時下界的流量已經在反向邊中了,\((t,s)=+\infty,s,t\)不會影響到最大流,所以是合法的答案.

先不加\((t,s)=+\infty\)這條邊,這時跑\(s->t\)的最大流可求出\(t->s\)的最大流,也就是在合法的情況下最多能減去多少.

然後再加\((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 表示流入量大於流出量,附加量需要流...