有上下界的網路流

來源:互聯網
上載者:User

有上下界的網路流

 

  這幾天看了周源的《一種簡易的方法求解流量有上下界的網路中網路流問題》,並完成了SGU 194&ZOJ 2314Reactor cooling,SGU 176 Flow construction和HOJ 2135&POJ 2396Budget三道題。

  作為周源文章中提到的求解上下界網路的最小流和最大流問題中的入門題就是Reactor cooling這道求解無源匯網路的可行流,且在這個網路中,需要滿足B(u, v) <= f(u, v) <= C(u, v)這個條件,即這個無源匯的網路流量帶有上下界的約束。

  設f(u, v ) = B(u, v) + g(u, v ) (*),顯然0 <= g(u, v ) <= C(u, v) - B(u, v)。將(*)代入流量平衡條件中,則得到∑[B(u, i) + g(u, i)] = ∑[ B(i, v) + g(i, v)] => ∑g(i, v) - ∑g(u, i) = ∑B(u, i) - ∑B(i, v)。如果設M(i) = ∑B(u, i) - ∑B(i, v),即M(i)為流入結點i的下界總和減去流出i的下界總和。

  至此,可如此構造一個只有流量上界的附加網路:增加附加源S'和附加匯T',原網路中M(i)非負,則C'(S', i) = M(i),否則C'(i, T') = -M(i);原網路中任意有弧相連的結點u和結點v在附加網路中的弧C'(u, v) = C(u, v) - B(u, v)。

  這樣,如果附加網路滿流,則在原網路中就存在一個與之對應的可行流。而想判斷附加網路能否滿流可通過求解附加網路的最大流進行判斷。如果滿流,則有解;否則無解。

  這個問題弄明白後,就可以進行下一步的求解有上下界網路中的最大流和最小流問題了。

  增加一條弧(T, S),使原網路變成一個無源匯的網路。如果求最大流,則B(T, S) = a,C(T, S) = inf;如果求解最小流,則B(T, S) = 0,C(T, S) = a。可以通過二分法枚舉a,按上文提到的方法構造附加網路,判斷附加網路中是否有可行流即可。最終,a即為所求。

  這種方法實現起來較為簡單,所需的代價是多次求解最大流。複雜度為O(logF Maxflow(V, 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.