算法設(shè)計(jì)與分析筆記之自身規(guī)約

判定問(wèn)題和優(yōu)化問(wèn)題

  • 判定問(wèn)題:是否存在一個(gè)...(如小于k的點(diǎn)覆蓋)
  • 優(yōu)化問(wèn)題:找出最大/最小的...(最小點(diǎn)覆蓋)

因?yàn)镹PC問(wèn)題的答案是簡(jiǎn)單的“是”或“否”(存在或不存在),不適合直接應(yīng)用于最優(yōu)化問(wèn)題,但適合用于判定問(wèn)題。
盡管證明一個(gè)問(wèn)題是NP完全問(wèn)題會(huì)讓我們的目光局限在判定問(wèn)題。但我們可以利用最優(yōu)化和判定問(wèn)題之間存在的關(guān)系,對(duì)優(yōu)化的值強(qiáng)加一個(gè)界,就可以將一個(gè)給定的最優(yōu)化問(wèn)題轉(zhuǎn)化為一個(gè)相關(guān)的判定問(wèn)題了。這就是自身規(guī)約。
自身規(guī)約就是將求解(最優(yōu)化)問(wèn)題規(guī)約到一個(gè)判斷問(wèn)題上。

自身規(guī)約練習(xí)

Ⅰ. 如果存在一個(gè)多項(xiàng)式時(shí)間算法判斷一個(gè)圖是否存在一個(gè)長(zhǎng)度為k的路徑,則存在一個(gè)多項(xiàng)式時(shí)間算法要么找到圖中一個(gè)長(zhǎng)度為k的路徑要么證明此圖不存在長(zhǎng)度為k的路徑
pf.
假設(shè)存在判斷一個(gè)圖G是否存在一個(gè)長(zhǎng)度為k的路徑的多項(xiàng)式時(shí)間算法A。
首先用它判斷圖G是否存在一個(gè)長(zhǎng)度為k的路徑,若不存在,則結(jié)束;若存在,則在圖中刪除一條邊e,再用A判斷圖G=(V, E-e)中是否存在長(zhǎng)度為k的一條路徑。
若存在,則將該邊從圖中徹底刪除;若不存在,則保留這條邊(或者把該邊加入這個(gè)路徑的邊集合中)。
重復(fù)上述操作,直到圖中剩下的就是長(zhǎng)度為k的一條路徑。

Ⅱ.如果能在多項(xiàng)式時(shí)間內(nèi)判斷一個(gè)圖是否存在一個(gè)長(zhǎng)度至少為k的路徑,那么就可以在多項(xiàng)式時(shí)間內(nèi)找到這個(gè)圖的一條最長(zhǎng)路徑
pf.
假設(shè)判斷出圖G=(V, E),存在一個(gè)長(zhǎng)度至少為k的路徑。然后依次加一,直到找出最長(zhǎng)路徑kmax。
則選取任一邊e,在圖G=(V, E-e)中判斷是否還存在一條長(zhǎng)度至少為kmax的路徑。
若存在,則在圖中刪除該邊;若不存在,則保留該邊(最長(zhǎng)路徑經(jīng)過(guò)的邊e)。
對(duì)所有邊進(jìn)行上述操作,最終圖中剩下的就是這條最長(zhǎng)路徑。

解題步驟

  1. 設(shè)該判斷算法為A,假設(shè)判斷出圖中存在...(大小為k的...)
  2. 刪除一條邊(或點(diǎn),看具體是邊集還是點(diǎn)集的問(wèn)題),對(duì)刪除邊(點(diǎn))后的圖運(yùn)行判斷算法A
  3. 若圖中還存在...(大小為k的...),則從圖中徹底刪除該邊(點(diǎn));若不存在,保留該邊(點(diǎn))
  4. 對(duì)所有的邊(點(diǎn))調(diào)用算法A執(zhí)行上述操作,最終剩下的就是...(大小為k的...)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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