最大流問題是一個很經典的問題,不少人對此也很熟悉,它可以等同於一個線性規劃問題。下面給出最大流問題的一個基本描述:以下圖所示,s是源點,t爲匯點,每條邊上數字的含義是邊可以容許流過的最大流量。能夠將邊當作管道,0/3表明該管道每秒最多能經過3個單位的流量,0表明當前流量。最大流問題便是說,從s點到t點,最大容許流量是多少?web
那麼最大流就能夠表示爲: 算法
Ford-Fulkerson是一種迭代的方法。開始時,對全部的u,v屬於V,f(u,v)=0(這裏f(u,v)表明u到v的邊當前流量),即初始狀態時流的值爲0。在每次迭代中,能夠經過尋找一個「增廣路徑」來增長流值。增廣路徑能夠看作是從源點s到匯點t之間的一條路徑,沿該路徑能夠壓入更多的流,從而增長流的值。反覆進行這一過程,直到增廣路徑都被找出爲止。網絡
舉個例子來講明下,如圖所示,每條紅線就表明了一條增廣路徑,當前s到t的流量爲3。固然這並非該網絡的最大流,根據尋找增廣路徑的算法咱們其實還能夠繼續尋找增廣路徑。.net
顧名思義,殘留網絡是指給定網絡和一個流,其對應還能夠容納的流組成的網絡。具體說來,就是假定一個網絡G=(V,E),其源點s,匯點t。設f爲G中的一個流,對應頂點u到頂點v的流。在不超過C(u,v)的條件下(C表明邊容量),從u到v之間能夠壓入的額外網絡流量,就是邊(u,v)的殘餘容量(residual capacity),定義以下:cdn
r(u,v)=c(u,v)-f(u,v)htm
舉個例子,假設(u,v)當前流量爲3/4,那麼就是說c(u,v)=4,f(u,v)=3,那麼r(u,v)=1。blog
咱們知道,在網絡流中還有這麼一條規律。從u到v已經有了3個單位流量,那麼從反方向上看,也就是從v到u就有了3個單位的殘留網絡,這時r(v,u)=3。能夠這樣理解,從u到v有3個單位流量,那麼從v到u就有了將這3個單位流量的壓回去的能力。圖片
咱們來具體看一個例子,以下圖所示一個流網絡ci
這裏介紹計算網絡最大流的簡便方法—標號法,此方法是Ford—Fulkerson 於1956年提出來的,它的原理是利用尋找增廣鏈來不斷改善可行流。 設μ是網絡中 到 的一條鏈,規定 到 的方向爲μ的方向。 μ上與μ的方向一致的弧稱爲前向弧,前向弧的集合記爲μ+, μ上與μ的方向相反的弧稱爲後向弧,後向弧的集合記爲μ-。it
參考:
http://blog.csdn.net/smartxxyx/article/details/9275177 http://blog.csdn.net/smartxxyx/article/details/9293665/ 以及: http://dec3.jlu.edu.cn/webcourse/t000048/yun/ch7_04.htm