【網路流】最大流:點帶需求的流通、邊帶下界的流通

來源:互聯網
上載者:User
1)點帶需求的流通:

新的架構特點:有多個供給點(d(v)<0),都稱作源點;有多個需求點(d(v)>0),都稱作匯點。同時仍然滿足傳統最大流中的容量條件(0 <= f(e) <= cap(e))和需求條件(f_in(v) - f_out(v) = d(v))。

需要解決的問題:由於有多個源點和匯點,所以不再考慮最大化問題,而是考慮有沒有滿足容量條件和需求條件的一個可行流通(可行性)。


判斷可行性的方法是,把帶需求{ d(v) }的可行流通問題轉換為在另一個網路中找最大 s-t 流的問題。另一個網路的構造方法如下


給個例子就是這樣的:


在G‘中找最大 s-t 流,那麼最大流的值是多少才能證明原圖G中存在可行流通。。。答案是P272,定理7.50:

G中存在一個帶{ d(v) }的可行流通,若且唯若G’的最大 s*-t* 流有值D(其中,D是所有需求的和,同時也是所有供給的和)。



2)點帶需求 和 邊帶下界的流通:

新的架構特點:有多個供給點(d(v)<0),都稱作源點;有多個需求點(d(v)>0),都稱作匯點;同時,每些邊e有最小流量 low(e) 的要求(即,必須使用某些邊,且仍然滿足傳統最大流中的容量條件(low(e) <= f(e) <= cap(e))和需求條件(f_in(v) - f_out(v) = d(v))。

需要解決的問題:由於有多個源點和匯點,所以不再考慮最大化問題,而是考慮有沒有滿足容量條件和需求條件的一個可行流通(可行性)。


判斷可行性的方法是,把點帶需求{ d(v) }和邊帶下界{ low(e) }的可行流通問題轉換為在另一個只有點帶需求{ d(v) }的網路中判斷可行流通的問題,進而轉換為在第三個網路中找最大 s-t 流的問題。另一個網路的構造方法如下
對於所有有容量下界 low(e) 的邊,將容量變得 0 <= f(e) <= cap(e) - low(e),相當於提前提供了 low(e) 這麼多流量的保障;那麼,e的尾部節點v應該還能提供的流量要相應減少low(e);同時,e的頭部節點v應該在原有流量需要的基礎上,再加上強加給它的low(e)的需求。可能沒描述清楚,看圖:



去下界的轉換相當於 v w low(e)個流量已經流過去,那要不要加容量為low(e)的反向邊。
答案: 不用。反向邊相當於給了後悔的機會,加了反向邊,之後就可以把已經流過去的low(e)個流量又推回來,這不是我們想要看到的。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.