第五課、網(wǎng)絡(luò)流

1. 問題1:網(wǎng)絡(luò)流是模型而不是問題,這是什么樣的模型?

1.1 模型

1.2 兩個約束:

  • 容量約束:每條鏈路上的流量不超過容量;
  • 流約束:中間節(jié)點不存儲流、從起點到達(dá)終點;除了起點和終點,流入多少,流出多少;

2. 最大流問題

2.1 問題描述

  • 給定一個圖,一個起點,一個終點,找到一條從起點到終點的路徑,使得流的大小最大;

2.2 Ford-Fulkerson 算法

2.2.1 核心過程
  • 找到一條路徑:從起點出發(fā),向前走,直到到達(dá)終點;
  • 構(gòu)建 residual graph:根據(jù)最新找到的最大流,更新 residual graph,構(gòu)建反向路徑;
  • 重復(fù)上述過程,直到無法找到一條可行路徑;
2.2.2 算法分析
  • 為什么輸出為最大流:一旦算法停止,節(jié)點被分為兩個集合,也就是一個集合的割集,算法停止的時候就是最小割的解,而最大流的上界和最小割的下界碰到一起就是最優(yōu)解;

3. 為什么這個算法是正確的,這是不是多項式算法?

問題的正確性證明:對偶問題 - “最小割集”

3.2關(guān)于復(fù)雜性的討論;

  • 什么條件下,循環(huán)會結(jié)束?答:節(jié)點被分為兩個集合;
  • 每次循環(huán)向 “終點” 逼近多少?答:至少前進(jìn)一個整數(shù);
  • 終點有多遠(yuǎn)該如何理解?
  • 算法是否為多項式取決于什么?

4. 癥結(jié)在哪里?如何克服?

  • 癥結(jié):每次增加的流的大小很?。?/li>
  • 克服:每次選擇一個足夠的增量(不大于容量總和),循環(huán)找,直到找不到了;找不到了,則將增量除以2;

我的問題:為什么是最小割?
問題:最大流是一個P問題,而不是一個NPC問題;為什么?

問題6:正確性沒有問題,為什么?如何能肯定效率改進(jìn)了?

將外層循環(huán),稱為 scaling phase。
加入可以知道:

  • 外循環(huán)次數(shù):\Delta-scaling phase 個數(shù)的上限(即用到的不同\Delta數(shù)量的上限);log2();
  • 內(nèi)循環(huán)的次數(shù):任一phase 中執(zhí)行augment次數(shù);

問題7. 為什么知道最優(yōu)解多遠(yuǎn)最關(guān)鍵?

換句話說:網(wǎng)絡(luò)中的最大流值不大于 v(f)+m\Delta
證明方法:最小割的最大值,不超過v(f)+m\Delta。

問題8:這仍然不是傳統(tǒng)圖意義上的多項式算法。試圖實現(xiàn) “那種” 意義上多項式算法的思想完全不同于augment的思想。你能理解關(guān)鍵的差異嗎?

  • Prim:過程中間結(jié)果始終滿足 “可行解”的要求,但未必滿足 “最小” 要求,在過程中不斷 “修正” 目標(biāo)值,一旦找到 “終點”,即最小可行解。
  • Kruskal:過程中間結(jié)果不具備 “可行解”特征,卻體現(xiàn) “最小” 的要求,一旦構(gòu)成可行解,即為最優(yōu)解。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容