算法設(shè)計與分析復(fù)習(xí)筆記之歸約整理

歸約是指問題A的任何實例能用問題B的方法來解決(判斷),并且A的解為“是”,當(dāng)且僅當(dāng)B的解也是“是”。因此,證明歸約是雙向的,目前遇到的大多歸約問題(A ≤p B)都可以按以下步驟進行:

  1. 構(gòu)造圖G,存在問題A的解集;
  2. 在圖G基礎(chǔ)上,構(gòu)造圖G'(常添加邊或點),使得問題A的解集能反應(yīng)在G'中問題B的解集(注意兩個問題解集的規(guī)模k一定要有確定的聯(lián)系);
  3. Claim:“圖G中存在問題A的解集S,當(dāng)且僅當(dāng)圖G'中存在問題B的解集S' ”
  4. 雙向證明,注意不要弄反方向。

也有不用構(gòu)造新圖的,比如點覆蓋到獨立集的規(guī)約,這種方法叫直接規(guī)約。但大多有些難度的歸約一般都需要構(gòu)造。除了前面筆記寫的一部分歸約證明,下面整理了老師說的需要重點掌握的歸約。

Subset-Sum ≤p Partition

Partition:集合能劃分成和相等的兩部分。
構(gòu)造子集和問題的實例,如集合S=\{x_{1}, x_{2}, ..., x_{n}\},子集和為W,需構(gòu)造集合S',使得集合S存在一個子集之和為W,當(dāng)且僅當(dāng)集合S'存在一個partition\sum_{x\in A}x=\sum_{x\in \bar{A}}x
思路:構(gòu)造集合S'=\{x_{1}, x_{2}, ..., x_{n}, x_{n+1}, x_{n+2}\},其中x_{n+1}=2\sum_{i\in S}x_{i}-W, x_{n+2}=\sum_{i\in S}x_{i}+W

Subset-Sum ≤p Partition

=>
S存在一個子集A=\{a_{1}, a_{2}, ..., a_{k}\}, a_{i}\in S, k\leq n,有\sum_{i\in A}a_{i}=W
那么集合S'中,有\sum_{i\in A}a_{i}+x_{n+1}=\sum_{i\in \bar A}a_{i}+x_{n+2}=2\sum_{i\in S}x_{i}
所以集合S'存在一個劃分A\bigcup \{x_{n+1}\}\bar A\bigcup \{x_{n+2}\}
<=
集合S'能被劃分為兩個和相等的集合,可知x_{n+1}x_{n+2}不在一個劃分子集里
那么,存在一個集合A,設(shè)其元素之和為Y,有Y+x_{n+1}=\sum_{i\in S}x_{i}-Y+x_{n+2}
解出Y=W,即...

Subset-Sum ≤p Knapsack

Knapsack:給定物品的集合X,每個物品有重量u_{i}和價值v_{i},背包最多承重U,目標價值V。問是否存在物品的一個子集S,使得\sum_{i\in S}u_{i}\leq U, \sum_{i\in S}v_{i}\geq V
第一步構(gòu)造Knapsack的實例,第二步證明集合X存在一個子集之和為W,當(dāng)且僅當(dāng)構(gòu)造的Knapsack具有可行方案。
對一個子集和問題的實例(w_{1}, w_{2}, ..., w_{n}, W),構(gòu)造Knapsack實例X,滿足
\qquad w_{i}=u_{i}, \sum_{i\in X}u_{i}\leq U
\qquad w_{i}=v_{i}, \sum_{i\in X}v_{i}\geq V

證明略(別的不會,略學(xué)得很像樣)。

Subset-Sum ≤p Schedule

Schedule:一個工作序列,每個工作具有到達時間r_{j},處理時間t_{j},最遲完成時間d_{j},問如何安排這些工作,使得完成所有工作所需時間最短(在到達時間之后開始處理、最遲完成時間之前結(jié)束處理)?
思路:對于給定的集合\{w_{1}, w{2}, ..., w_{n}\}和W,構(gòu)造一個工作安排實例,證明若存在子集之和為W,當(dāng)且僅當(dāng)存在可行的工作安排。
集合X=\{w_{1}, w{2}, ..., w_{n}\},構(gòu)造n個工作(從1開始編號),有r_{j}=0, t_{j}=w_{j}, d_{j}=1+\sum w_{j},就是對到達時間和最遲完成時間沒有要求;再創(chuàng)建0號工作,t_{0}=1, r_{0}=W, d_{0}=W+1.
這個證明就比較顯而易見,但這個構(gòu)造也太奇怪了,就是通過設(shè)置工作的到達時間和最遲完成時間來固定安排它們的位置。為什么可以構(gòu)造這樣的特例來證明呢?因為X≤pY,Y本身就是一個比X難的問題,那么我們就可以把Y的更多的約束條件舍去,讓它變成和X比較相像或者復(fù)雜度相當(dāng)?shù)腘PC問題。

Subset-Sum ≤p Schedule

Partition ≤p Load-Balance

Partition ≤p Load-Balance

集合X=\{x_{1}, x_{2}, ..., x_{n}\},構(gòu)造Load-Balance實例Y=\{y_{1}, y_{2}, ..., y_{n}\},且每個工作的處理時間t_{j}=x_{j},A\subseteq Y,有\sum_{i\in A}t_{i}=\sum_{i\in \bar A}t_{i}.
證明略。

?著作權(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)容