圖論之最大流問題(三)

在前幾天的文章里面,我們講到求解最大流的關鍵是找到增廣路,并且單獨介紹了一個求增廣路的Ford-Fulkerson算法,也叫做標號法。事實上還有許多別的求增廣路的算法,今天我們就再介紹一個“最短增廣路”算法。

最短增廣路的思想其實很簡單,既然需要找一條增廣路來優(yōu)化,那就直接找最短的那條增廣路吧。

首先介紹兩個重要概念,一個叫殘留量:給定容量網(wǎng)絡G(V, E)及可行流f,弧上的殘留容量記為c'(u, v)= c(u, v)–f(u,v)。每條弧的殘留容量表示該弧上可以增加的流量。因為,從頂點u到頂點v流量的減少,等效于頂點v到頂點u流量增加,所以每條弧上還有一個反方向的殘留容量c'(v,u) =–f(u,v)。由殘留量組成的網(wǎng)絡叫做殘留網(wǎng)絡,下面給個例子:

上圖a中的兩個數(shù)字分別表示弧的容量和已經(jīng)用掉的容量。

注意b圖,它里面各個點之間其實有一個層次關系,比如Vs是第0級,V1和V2是第一級,等等。下面是網(wǎng)絡節(jié)點按級劃分的結果:

對殘留網(wǎng)絡分層后,刪去比目的點Vt層次更高的頂點和與目的點Vt同層的頂點,然后刪去與這些頂點關聯(lián)的弧,再刪去從某層頂點指向同層頂點和低層頂點的弧,所剩的各條弧的容量與殘留網(wǎng)絡中的容量相同,這樣得到的網(wǎng)絡是殘留網(wǎng)絡的子網(wǎng)絡,稱為層次網(wǎng)絡

解釋一下構造層次網(wǎng)絡的時候為什么要這么刪除多余的邊:刪除比Vt層次更高,以及同級別的點的原因很簡單:Vt是目的點,不允許有從Vt中流出的流量。刪除指向同層以及底層的邊是因為我們要找的是最短增廣路,留著這些邊會把增廣路邊長。有人可能會問,少考慮了一些潛在的增廣路,不會對最終結果有影響么?別擔心,當前的增廣路被處理完之后,在下一輪循環(huán)里就不再考慮了,此時這些上一輪沒有考慮到的、仍舊有剩余流量的邊就會被考慮到的。

不知道大家注意到?jīng)]有,層次網(wǎng)絡中任何一條連接源點Vs和目的點Vt的通路都是一條增廣路,并且是最短的增廣路。

知道尋找最短增廣路之后問題就簡單了,找到之后優(yōu)化它,然后重新找找看還有沒,還有增廣路的話繼續(xù)優(yōu)化,直到不存在增廣路為止。

n

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 最大流&&最小費用最大流&&最大二分匹配 中文是2017年8月的筆記,英文是2018.11月的筆記 英文筆記來自于...
    廖少少閱讀 35,700評論 6 20
  • 上一次我們把求最大流的問題轉化成了找到一條增廣路然后優(yōu)化的問題。今天講講怎么找增廣路。 Ford-Fulkerso...
    鵬摶九萬閱讀 2,459評論 2 2
  • 現(xiàn)實生活中有很大一類問題可以用簡潔明了的圖論語言來描述,可以轉化為圖論問題。 相關定義 圖可以表示為G=(V, E...
    芥丶未央閱讀 1,830評論 0 7
  • 理解一件事情的內在邏輯結論的萬能公式 在xx的基礎上,從xx這幾個方面,說明了xx 舉例:在前面幾位同事討論的基...
    我來學而時習之閱讀 184評論 0 0
  • 啊啊啊啊啊啊,我愛上了這個干凈的大男孩,喜歡你的隨心隨性,喜歡你的放蕩不羈,喜歡你的灑脫,喜歡你的痞,總之,很喜歡...
    z三三兩兩z閱讀 337評論 3 1

友情鏈接更多精彩內容