370 likes | 595 Views
第九章 計算複雜度與難解性: NP Theory 序論. 9.1 難解性 (Intractability) 9.2 再探輸入大小 9.3 三種主要的問題類別 9.3.1 已找到多項式時間演算法的問題 9.3.2 已被證明難解的問題 9.3.3 位被證明為難解,也未找到多項式 時間演算法的問題. 9.4 NP Theory 9.4.1 集合 P 與 NP 9.4.2 NP-Complete 問題 9.5 處理 NP-Hard 問題 9.5.1 解售貨員旅行問題的近似演算法
E N D
第九章 計算複雜度與難解性:NP Theory 序論 • 9.1難解性(Intractability) • 9.2再探輸入大小 • 9.3三種主要的問題類別 9.3.1已找到多項式時間演算法的問題 9.3.2已被證明難解的問題 9.3.3位被證明為難解,也未找到多項式 時間演算法的問題
9.4 NP Theory 9.4.1集合P與NP 9.4.2 NP-Complete問題 • 9.5處理NP-Hard問題 9.5.1解售貨員旅行問題的近似演算法 9.5.2解裝箱問題的近似演算法
9.1難解性(Intractability) • 問題可分三種 1.已找到多項式時間演算法的問題 2.已被證明為難解的問題 3.並未被證明為難解,但也未找到 多項式時間演算法的問題
定義:一個稱為多項式時間演算法(polynomial-time algorithm)的演算法必須符合: 可找到一個該演算法輸入大小的多項式函數,作為該演算法之最差情況時間複雜度上限。也就是說,若n為輸入大小,則存在著一個多項式函數p(n)使得
9.2再探輸入大小 • EX:決定一正整數n是否為質數
定義:對於一個給定的演算法,我們定義輸入大小(input size)為該演算法用來寫出輸入的字元數 • 定義:對一個給定的演算法,我們定義W(s) 為該演算法在輸入大小為s的情形下,執行步驟數量的最大值。W(s)被稱為該演算法的最差時間複雜度
9.3三種主要的問題類別 • 以難解性(intractability)作為分類的標準 1.已找到多項式時間演算法的問題 2.已被證明為難解的問題 ─不可判定的問題(undecidable problem) 3.並未被證明為難解,但也未找到 多項式時間演算法的問題
範例9.2 售貨員旅行問題(Traveling Salesperson Problem) • 給定一個有向權重圖(weighted, directed graph)。又旅程的定義為:一條由某個頂點出發,結束於該頂點,並拜訪所有其他頂點各一次的路徑。售貨員旅行最最佳化問題是要去找出一個具有最小邊線權重總和的旅程。 • 售貨員旅行決策問題是要決定:給定正整數d,是否存在著一個權重總和不比d大的旅程。
範例9.3 0-1 knapsack問題 • 0-1 knapsack最佳化問題的定義為:假定每個物品都有自己的weight與profit,並給定可以放在背包(sack)中的最大weight總和為W,求出可被放在背包(knapsack)中的物品的profit最大值 • 0-1 knapsack決策問題的定義為:給定profit P,是否可能將物品裝進背包,使得weight總和不大於W,而總profit至少要等於P
範例9.4著色問題(Graph-Coloring Problem) • 著色最佳化問題(Graph-Coloring optimization Problem)的定義為:給定一個圖(graph),找到最少數量的顏色對這個圖著色,使得兩個相鄰的頂點不會被圖上同一個顏色。這個最少數量被稱為該圖的色數(chromatic number)
著色決策問題的定義為:對於一個正整數m,是否存在著一種最多使用m種顏色的著色方法,使得兩個相鄰的頂點不會被圖上同一個顏色。著色決策問題的定義為:對於一個正整數m,是否存在著一種最多使用m種顏色的著色方法,使得兩個相鄰的頂點不會被圖上同一個顏色。
9.4.1集合P與NP • 定義:P為所有可被多項式時間演算法解決的決策問題構成的集合 • 猜測階段(Guessing Stage,Nondeterministic):給定某問題的一個實例,本階段只負責產生某字串S。 • 核對階段(Verification Stage,Deterministic):該實例與前一個階段產生的字串S就是這個階段的輸入
定義:多項式時間非必然式演算法(polynomial-time nondeterministic algorithm)就是一個核對階段為多項式時間演算法的非必然式演算法 • 定義:NP為所有被多項式時間非必然式演算法解決的決策問題構成的集合
定義:若存在著一種多項式時間轉換演算法,可將決策問題A轉為決策問題B,則問題A可在多項式時間內以多對一的方式約化約為問題B。(通常只說問題A化約為問題B)定義:若存在著一種多項式時間轉換演算法,可將決策問題A轉為決策問題B,則問題A可在多項式時間內以多對一的方式約化約為問題B。(通常只說問題A化約為問題B)
定理9.1 • 若決策問題B在P中,且 則決策問題A亦在P中
定義:如果下列兩個條件都滿足,我們就稱某個問題B為NP-Complete:定義:如果下列兩個條件都滿足,我們就稱某個問題B為NP-Complete: 1. B在NP中 2. 對於每個其他在NP中的問題A
定理9.2 • (Cook定理)CNF-Satisfiability為 NP-Complete
定理9.3 • 如果下列兩條件為真,我們就稱某個問題C為NP-complete: 1.C在NP中 2.對於另一個NP-complete問題B, • 證明:由於B為NP-complete,對於任一個在NP中的問題A, 。不難察覺可化約性(reducibility)是遞移的。因此 。由於C在NP中,因此C為NP-complete
定理9.4 • 若 ,則集合 不為空集合
定理9.5 • 若任一個NP-complete問題的互補問題在NP中,則所有NP問題的互補問題都在NP中
9.4.3 NP-Hard、NP-Easy與NP-Equivalent問題 • 定義:若問題A可在多項式時間內被一個假設的解問題B的多項式時間演算法解掉,則稱問題A多項式時間Turing可化約為問題B。
定義:給定問題B,如果對於某個NP-complete問題A,定義:給定問題B,如果對於某個NP-complete問題A, 則問題B被稱為NP-hard
定義:給定問題A,如果對於某個在NP中的問題B有定義:給定問題A,如果對於某個在NP中的問題B有 則問題A被稱為NP-easy • 定義:若某個問題既是NP-hard又是NP-easy,則該問題被稱為NP-equivalent
9.5處理NP-Hard問題 9.5.1 解售貨員旅行問題的近似演算法
定理9.6 • 令mindlist為一條最佳旅程的總weight,而minapprox則利用書中描述的方法求得旅程總weight。故
定理9.7 • 令mindlist為一條最佳旅程的總weight,而minapprox2為利用minimal weight matching方法所求得旅程的總weight。
定理9.8 • 令opt為某個裝箱問題實例的最少箱子數,並令approx為非遞增最先優先法所用的箱子數,則