260 likes | 377 Views
計概報告. 組員 : 林士恆 許嘉宏. 12.4 不可計算函數. 不可計算函數. 根據 12.2 的 Church-Turing 命題,當我們找到一個杜林不可計算的函數時,一般就相信它是個不可計算的函數。簡單來說,就是一個計算超出今日電腦能力的函數。. 停止問題. 一個程式在某特定條件下啟動後是否會終止的問題。 例如: while X not 0 do; incr X; end;. 自我參用. 簡單來說,就是參用本身的觀念 此觀念運用在數學上,產生許多令人嘆為觀止的成果 例如 :
E N D
計概報告 組員:林士恆 許嘉宏
不可計算函數 根據12.2的Church-Turing 命題,當我們找到一個杜林不可計算的函數時,一般就相信它是個不可計算的函數。簡單來說,就是一個計算超出今日電腦能力的函數。
停止問題 • 一個程式在某特定條件下啟動後是否會終止的問題。 • 例如: while X not 0 do; incr X; end;
自我參用 • 簡單來說,就是參用本身的觀念 • 此觀念運用在數學上,產生許多令人嘆為觀止的成果 • 例如: 1.“This statement is false” 2.“Does the set of all sets contain itself?” • 因此我們即將要做到的是,為進行類似於 “If it does, then it doesn’t; but, if it doesn’t, then it does.”這種推理過程,做好基礎的準備工作。
在實例當中,自我參用是以指定一個代表程式本身的值,給一個程式的變數方式來達成。在實例當中,自我參用是以指定一個代表程式本身的值,給一個程式的變數方式來達成。 • 在每一個用精簡語言所寫的程式,可以一個字符接一個字符方式,使用ASCII碼將之編碼程單一長串的位元圖樣。 • 讓我們考量如果對以下的簡單程式 while X not 0 do; incr X; end; 參考下圖
Encode the program as one bit pattern using ASCll. . Assign this pattern to X and execute the program.
現在來比較一下 • 以下面的程式 clear X; while X not 0 do; incr X; end; 這個程式會終止,因為當 while-end 結構被執行時,不論其初始值是多少,變數X的值都會是0
自我終止(self-terminating) • 定義:一個以精簡程式語言撰寫的程式,如果執行該程式時,將其所有的變數初始設定為該程式自身的編碼,而導致其執行結果會終止。 • 注意到一個程式是否自我終止可能與該程式撰寫的目的無關。它僅只是每個以精簡程式語言所寫的程式有或沒有的一項特質。 • 我們可以用較精確的方式來敘述停止問題,其主要問題是決定精簡程式是否自我終結。總括來講,沒有一個演算法能回答這個問題。
停止問題的不可解本質 • 現在要證明停止問題超出機器的能力。 • 方法是證明要解決此問題需要一個能計算出一個不可計算函數的演算法。 • 精確的說,我們定義一個函數,使得一個自我終結程式輸入之後,會產生輸出值1,而一個非自我終結程式輸入之後,會產生輸出值0。為了精確緣故,我們稱此函數為停止函數(halting function)
衡量一個問題的複雜度 • 如果一個問題的所有解決方法都需要耗費很多時間,那它就可被視為是複雜的。這種概念常被稱為時間複雜度(time complexity)。 • 研究一個演算法的效率就是研究演算法的時間複雜度。 • big O 符號(bigΘ符號的變形)被用來表示問題的複雜度。 • 排序問題的較佳解法的一個實例是合併排序法。 • 合併排序演算法歸類為 O(n 1g n)。
★圖 12.10 合併排序演算法所產生的階層式子問題
多項式問題相較於非多項式 假設F(N)跟G(N)都是數學式子,如果G(N)受限於F(N),換言之,表示F(N)圖形都在G(N)上方。 例如:lgn這個式子受限於式子n,而nlgn受限於
常用數學式之圖形 y= y y=n y=n lg n y y=lg n n n a. n versus lg n b. versus n lg n
多項式時間 多項式時間:這個問題是屬於O(f(n)),其中f(n)本身是一個多項式或受限於某一個多項式。通常以大寫P來表示所有多項式問題的集合。 當稱某個問題是多項式問題時,意指解決此問題所需的時間有關或稱為多項式時間。
例:假設一個群體有N人,想要列出這N個人所有可能組成的小組委員會。其可能解會有2的N次方-1個(空集合不算),那麼可以解決的這個問題至少需要2的N次方-1個步驟。因此非常耗時。例:假設一個群體有N人,想要列出這N個人所有可能組成的小組委員會。其可能解會有2的N次方-1個(空集合不算),那麼可以解決的這個問題至少需要2的N次方-1個步驟。因此非常耗時。
NP問題 一個能以非既定演算法在多項式時間內解決問題,稱為非既定多項式問題(nondeterministicpolynomial problem) 簡稱NP問題。
既定與非既定比較 在許多情況下介於既定的「演算法」之間只是一線之隔,但是其差別則是相當清楚而且重要。一個既定的演算法並不依賴執行該演算法的機制的創造力,而一個非既定的「演算法」則可能會。
例如,比較指令走到下個交叉路口向右或向左轉及走到下個交叉路口,視站在路口的人告訴你怎麼做而向右或向左轉。例如,比較指令走到下個交叉路口向右或向左轉及走到下個交叉路口,視站在路口的人告訴你怎麼做而向右或向左轉。 在此兩者中任一種情況下,依指示行動的人所作的動作並不是在實際執行指令之前決定的。但是,第一個指令會需要依指示做動作的人基於自己的判斷做決定,因此是非既定的。第二個指令被數個不同的人遵循,有些人可能會向右轉,而有些人則會向左轉。 如果數個人遵循第二條指令而且接到相同資訊,他們就會都轉向相同的方向。
因此,其中意涵一個在既定演算法及非既定「演算法」之間的重大差異。如果一個既定演算法以相同的輸入重複執行數次,則每次都會執行相同的動作。但是一個非既定的演算法在相同條件下重複執行則會產生不同動作。因此,其中意涵一個在既定演算法及非既定「演算法」之間的重大差異。如果一個既定演算法以相同的輸入重複執行數次,則每次都會執行相同的動作。但是一個非既定的演算法在相同條件下重複執行則會產生不同動作。
NP問題的完整性 為了解決NP與集合P是否相同的疑問所投入的努力引導出另一類屬於NP問題中的特殊問題,稱為NP問題的完整性問題(NP-complete problems)。 例:旅行推銷員問題(Travelling Salesman Problem) 是一個多局部最優的最優化問題:有n個城市,一個推銷員要從其中某一個城市出發,唯一走遍所有的城市,再回到他出發的城市,求最短的路線。是最難的NP問題
問題分類圖 Solvable problems 可解決問題 Unsolvable problems 不可解決問題 NP problems ? Polynomial problems 多項式問題 Nonpolynomial problems 非多項式問題