最大網路流

來源:互聯網
上載者:User

1

基本概念和術語



1



網路

G
是一個簡單有向圖,
G=(V,E)

V={1

2



n}
。在
V
中指定一個頂點
s
,稱為

和另一個頂點
t
,稱為

。有向圖
G
的每一條邊
(v,w)

E
,對應有一個值
cap(v,w)≥0
,稱為邊的容量

。這樣的有向圖
G
稱作一個網路


2





網路流

網路上的
是定義在網路的邊集合
E
上的一個非負函數
flow={flow(v,w)}
,並稱
flow(v,w)
為邊
(v,w)
上的流量




3



可行流

滿足下述條件的流
flow
稱為可行流





容量約束


對每一條邊
(v,w)

E

0≤flow(v,w)≤cap(v,w)




平衡約束



對於中間頂點:流出量
=
流入量。
即對每個
v

V(v≠s,t)
有:頂點
v
的流出量-頂點
v
的流入量
=0
,即


對於源
s

s
的流出量-
s
的流入量
=
源的淨輸出量
f
,即

對於匯
t

t
的流入量-
t
的流出量的
=
匯的淨輸入量
f
,即

式中
f
稱為這個可行流的流量,即源的淨輸出量
(
或匯的淨輸入量
)
。可行流總是存在的。
例如,讓所有邊的流量
flow(v,w)=0
,就得到一個其流量
f=0
的可行流
(
稱為
0

)


4



邊流

對於網路
G
的一個給定的可行流
flow
,將網路中滿足
flow(v,w)=cap(v,w)
的邊稱為飽和邊


flow(v,w)<cap(v,w)
的邊稱為非飽和邊


flow(v,w)=0
的邊稱為零流邊


flow(v,w)>0
的邊稱為非零流邊

。當邊
(v,w)
既不是一條零流邊也不是一條飽和邊時,稱為弱流邊




5



最大流

最大流問題即求網路
G
的一個可行流
flow
,使其流量
f
達到最大。即
flow
滿足:0≤flow(v,w)≤cap(v,w)

(v,w)

E
;且

 


6



流的費用

實際應用中,與網路流有關的問題,不僅涉及流量,而且還有費用的因素。此時網路的每一條邊
(v,w)
除了給定容量
cap(v,w)
外,還定義了一個單位流量費用
cost(v,w)
。對於網路中一個給定的流
flow
,其費用定義為:

 


7



殘流網路

對於給定的一個流網路
G
及其上的一個流
flow
,網路
G
關於流
flow
的殘流網路
G*

G
有相同的頂點集
V
,而網路
G
中的每一條邊對應於
G*
中的
1
條邊或
2
條邊。

(v,w)

G
的一條邊。

flow(v,w)>0
時,(
w,v
)是
G*
中的一條邊,該邊的容量為
cap*(w,v)=flow(v,w)


flow(v,w)<cap(v,w)
時,
(v,w)

G*
中的一條邊,該邊的容量為cap*(v,w)=cap(v,w)-flow(v,w)

按照殘流網路的定義,當原網路
G
中的邊
(v,w)
是一條零流邊時,殘流網路
G*
中有唯一的一條邊
(v,w)
與之對應,且該邊的容量為
cap(v,w)

當原網路
G
中的邊
(v,w)
是一條飽和邊時,殘流網路
G*
中有唯一的一條邊
(w,v)
與之對應,且該邊的容量為
cap(v,w)

當原網路
G
中的邊
(v,w)
是一條弱流邊時,殘流網路
G*
中有
2
條邊
(v,w)

(w,v)
與之對應,這
2
條邊的容量分別為
cap(v,w) -flow(v,w)

flow(v,w)

殘流網路是設計與網路流有關演算法的重要工具。

增廣路演算法


 1 演算法基本思想
設P是網路G中連接源s和匯t的一條路。定義路的方向是從s到t。將路P上的邊分成2類:一類邊的方向與路的方向一致,稱為向前邊
。向前邊的全體記為P+。另一類邊的方向與路的方向相反,稱為向後邊
。向後邊的全體記為P-。
設flow是一個可行流,P是從s到t的一條路,若P滿足下列條件:
(1)在P的所有向前邊(v,w)上,flow(v,w)<cap(v,w),即P+中的每一條邊都是非飽和邊;
(2)在P的所有向後邊(v,w)上,flow(v,w)>0,即P-中的每一條邊都是非零流邊。
則稱P為關於可行流flow的一條可增廣路

可增廣路是殘流網路中一條容量大於0的路。
將具有上述特徵的路P稱為可增廣路是因為可以通過修正路P上所有邊流量flow(v,w)將當前可行流改進成一個流值更大的可行流。
增流的具體做法是:
(1)不屬於可增廣路P的邊(v,w)上的流量保持不變;
(2)可增廣路P上的所有邊(v,w)上的流量按下述規則變化:
· 在向前邊(v,w)上,flow(v,w)+d;
· 在向後邊(v,w)上,flow(v,w)-d。
按下面的公式修改當前的流。

其中d稱為可增廣量,可按下述原則確定:d取得盡量大,又要使變化後的流仍為可行流。按照這個原則,d既不能超過每條向前邊(v,w)的cap(v,w)-flow(v,w),也不能超過每條向後邊(v,w)的flow(v,w)。因此d應該等於向前邊上的cap(v,w)-flow(v,w)與向後邊上的flow(v,w)的最小值。也就是殘流網路中P的最大容量。
增廣路定理

:設flow是網路G的一個可行流,如果不存在從s到t關於flow的可增廣路P,則flow是G的一個最大流。

 

 

 

 

 

 

動畫示範一:

 

動畫示範二:

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.