有上下界網路流建模方法

2022-05-01 11:39:07 字數 2873 閱讀 7570

無源匯可行流

建模方法:

首先建立乙個源s

s'>ss

ss和乙個匯t

t'>tt

tt,一般稱為附加源和附加匯。

對於圖中的每條弧v>

'>

,假設它容量上界為c

'>c

c,下界b

'>b

b,那麼把這條邊拆為三條只有上界的弧。

一條為,v

>

'>

,容量為b

'>b

b;一條為tt

>

'>

,容量為b

'>b

b;一條為v>

'>

,容量為c−b

'>c−b

c−b。

其中前兩條弧一般稱為附加弧。

然後對這張圖跑最大流,以s

s'>ss

ss為源,以t

t'>tt

tt為匯,如果所有的附加弧都滿流,則原圖有可行流。

這時,每條非附加弧的流量加上它的容量下界,就是原圖中這條弧應該有的流量。

理解方法:

對於原圖中的每條弧,我們把c−b

'>c−b

c−b稱為它的自由流量,意思就是只要它流滿了下界,這些流多少都沒問題。

既然如此,對於每條弧v>

'>

,我們強制給v

'>v

v提供b

'>b

b單位的流量,並且強制從u

'>u

u那裡拿走b

'>b

b單位的流量,這一步對應著兩條附加弧。

如果這一系列強制操作能完成的話,也就是有一組可行流了。

注意:這張圖的最大流只是對應著原圖的一組可行流,而不是原圖的最大或最小流。

有源匯可行流

建模方法:

建立弧s>

'>

,容量下界為0

'>0

0,上界為∞

'>∞

∞。然後對這個新圖(實際上只是比原圖多了一條邊)按照無源匯可行流的方法建模,如果所有附加弧滿流,則存在可行流。

求原圖中每條邊對應的實際流量的方法,同無源匯可行流,只是忽略掉弧s>

'>

就好。而且這時候弧s>

'>

的流量就是原圖的總流量。

理解方法:

有源匯相比無源匯的不同就在於,源和匯是不滿足流量平衡的,那麼連線s>

'>

之後,源和匯也滿足了流量平衡,就可以直接按照無源匯的方式建模。

注意:這張圖的最大流只是對應著原圖的一組可行流,而不是原圖的最大或最小流。

有源匯最大流

建模方法:

首先按照有源匯可行流的方法建模,如果不存在可行流,更別提什麼最大流了。

如果存在可行流,那麼在執行過有源匯可行流的圖上(就是已經存在流量的那張圖,流量不要清零),跑一遍從s

'>s

s到t'>t

t的最大流(這裡的s

'>s

s和t'>t

t是原圖的源和匯,不是附加源和附加匯),就是原圖的最大流。

理解方法:

為什麼要在那個已經有了流量的圖上跑最大流?因為那張圖保證了每條弧的容量下界,在這張圖上跑最大流,實際上就是在容量下界全部滿足的前提下盡量多得獲得「自由流量」。

注意,在這張已經存在流量的圖上,弧s>

'>

也是存在流量的,千萬不要忽略這條弧。因為它的相反弧t>

'>

的流量為s>

'>

的流量的相反數,且t>

'>

的容量為0,所以這部分的流量也是會被算上的。

有源匯最小流

有源匯最小流的常見建模方法比較多,我就只說我常用的一種。

建模方法:

首先按照有源匯可行流的方法建模,但是不要建立s>

'>

這條弧

然後在這個圖上,跑從附加源s

s'>ss

ss到附加匯t

t'>tt

tt的最大流。

這時候再新增弧s>

'>

,下界為0

'>0

0,上界為∞

'>∞

∞。在現在的這張圖上,從s

s'>ss

ss到t

t'>tt

tt的最大流,就是原圖的最小流。

理解方法:

我們前面提到過,有源匯可行流的流量只是對應一組可行流,並不是最大或者最小流。

並且在跑完有源匯可行流之後,弧s>

'>

的流量就是原圖的流量。

從這個角度入手,我們想讓弧s>

'>

的流量盡量小,就要盡量多的消耗掉那些「本來不需要經過s>

'>

」的流量。

於是我們在新增s>

'>

之前,跑一遍從s

s'>ss

ss到t

t'>tt

tt的最大流,就能盡量多的消耗那些流量啦qwq。

有上下界網路流

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

教程 上下界網路流建模方法總結

前言 之前學習上下界網路流的時候,花了很多時間去理解建模的方式和原理,然而今天覆習的時候發現忘得差不多了qwq。於是參考了一下以前的 再次做了個總結,放在部落格裡,省得以後忘掉qwq。無源匯可行流 建模方法 首先建立乙個源 ss 和乙個匯 tt 一般稱為附加源和附加匯。對於圖中的每條弧 假設它容量上...

有上下界的網路流

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