計算理論重點——Theory of Computation
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow
也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!
一個學期的計算理論課程已經結束,給我的感覺吧,計算理論是一門計算機不得不學,學了短期又沒用,但是可以培養一些邏輯思維的課程。其最關注的問題是什麼是可計算性,什麼問題可計算,問題之間的對映/歸約,計算代價及難易。在分析問題和檢驗模型計算能力之前需要掌握的工具是形式語言、圖靈機等。本文主要對計算理論中的重點進行了總結,總結了一些定理和理解上容易有障礙的知識點,但是裡面還有一些點沒有提到,比如NFA、DFA的相互轉化,CFL和PDA的相互轉化,需要書中的題目和證明輔助。
Textbook Summary
1. 與自然數集合N等勢的集合是可數無窮的,稱有窮的or可數無窮的集合是可數的。非可數的集合稱作不可數的。
2. DFA( K, Σ, s, F, δ );NFA(K,Σ,s,F,Δ)
3. 每臺NFA都有一臺等價的DFA(method:find closure)
4. 有窮自動機接受的語言類= 正則語言類(正則表示式描述的語言類)
5. 正則語言在各種運算下封閉
6. 語言是正則的,iff其等價語言中有有窮個等價類。
7. DFA狀態最小化->尋找等價類(初始等價類F& K-F)
8. CFL(V,Σ,R,S)
9. 存在非正則的CFL
10. 能夠生成>=兩棵語法分析樹的字串的文法叫做歧義的。
11. PDAM=(K,Σ,Γ,Δ,s,F),Γ為棧符號
12. PDA接受的語言正好是CFL
13. 正則語言(xynz)和CFL(uvnxynz)的泵定理
14. L={anbn}∈CFL,L={anbncn}∉CFL但是是遞迴的,L={an,n為素數}不是CFL
15. Chomsky正規化(CNF):若RÍ(V-Σ)×V2,則稱G=(V,Σ,R,S)為Chomsky正規化
16. 有窮自動機總是停機。
17. CFG到CNF的轉化:
1) 消除長rules
2) 消除空rules(A->e)
3) 消除短rules(A->aor A->B)
18. 對任意CFLG,都可以在多項式時間構造Chomsky正規化G’,使得L(G’)=L(G)-(Σ∪{e})
19. 沒有chomsky正規化能夠表示length<2的字串,所以包含<2的字串的語言不能轉化到chomsky正規化。
20. 確定型CFL(確定型PDA接受的語言類)在補下封閉。
21. TM(K,Σ,δ,s,H),注意字母表Σ不包含←和→
22. 若存在TM判定L,則稱L是遞迴的。
23. 如果對於所有w屬於Σ*,M(w) = f(w),我們說M計算函式f,若存在TM計算f,則f稱為遞迴的。
24. 半判定語言的TM都不是演算法
25. 多帶、多帶頭、雙向無窮帶or多維帶的TM,其判定or半判定的任何語言及任何函式,都分別可用標準TM判定、半判定or計算。
26. 非確定型TM:一個格局可在一步裡產生多個其他格局,NDTM is no more powerful than original TM
27. 若非確定型TMM半判定或者判定語言L,或者計算函式f,則存在標準型TMM’半判定or判定L,or計算函式f。
28. 文法是CFG的推廣,任何CFG都是文法。G=(V,Σ,R,S)
29. 語言被文法生成iff它是r.e.的。
30. 所有數值函式都是原始遞迴的
31. 原始遞迴函式集是遞迴可列舉的。
32. 特殊語言/問題:
H = {“M””w”: M在w上停機 }
﹁H = { “M””w”:M是一臺在”w”上不停機的TM}
H1 = {“M”:M在“M”上停機 }
﹁H1 = { w:要麼w不是一臺TM的編碼,
要麼w是M的編碼,M是一臺在”M”上不停機的TM}
H:r.e. ; H1:r.e.; ﹁H, ﹁H1:非r.e.;2-SAT∈P; SAT∈NP
33. 沒有演算法的問題稱作不可判定的or不可解的,如TM的停機問題
34. 證明不可判定:從通用圖靈機U通過遞迴函式歸約到L,如果L是遞迴的則U是遞迴的。
i.e.若L1非遞迴,並存在L1到L2的歸約,則L2也非遞迴。
遞迴函式是TuringComputable的。
35. 語言是圖靈可列舉的,iff存在列舉它的圖靈機。(M通過空格代開始,週期性的經過特殊狀態q來列舉L,任意順序且可重複)
36. 不可判定語言與遞迴語言互為補集,與r.e.語言有交集。
37. 語言是r.e.,iff它是圖靈可列舉的;語言是遞迴的,iff它是以字典序Turing可列舉的。
38. P在並交連線和補運算下封閉,NP在並、連線運算下封閉。若NP在補下封閉,則NP=P。
39. H= {“M””w”: M在最多2|w|步後停機 } ∉P
40. 所有正則語言和所有CFL都屬於P
41. NP:
A. 機器角度去定義:被多項式界限非確定型圖靈機判定的所有語言的類。
B. 基於verifier的定義:NP問題上建立的非確定機包含兩步:
1) 非確定地猜一個解
2) 用一個確定的演算法判定該解是否為可行解
判定一個給定猜測值是否滿足該問題(可滿足性)的演算法稱作verifier,一個問題稱作NP問題當且僅當存在一個多項式時間的verifier。
這兩個定義是不矛盾的,因為如果一臺非確定TM在多項式時間內可以判定一個非確定選擇的輸入是否滿足,就是基於verifier的定義。
P和NP的區別:
A problem isin P if we can decide them in polynomial time. It is in NP if we can decidethem in polynomial time, if we are given the rightcertificate.
42. 若存在計算函式f的多項式界限的圖靈機M,則f稱為多項式時間可計算的。
43. 若τ1是L1->L2的多項式歸約,τ2是L2->L3的多項式歸約,則τ1·τ2是L1->L3的多項式歸約。
44. 證明NP完全:
法一、按定義:LÍΣ*,若
(a) L∈NP,且
(b) 對每個語言L’∈NP,存在從L’到L的多項式歸約
則L稱為NP完全的。
法二、歸約,對於語言L,
(a) 若L∈NP
(b) 一個NP完全問題可以在多項式時間規約到L,i.e.SAT ≤pL
則L稱為NP完全的。
45. L是NP完全語言,則P=NP,iffL∈P
46. SAT是NP-complete,3-SAT,最大可滿足性也是NP完全的
47. 覆蓋問題,Hamilton圈(有向無向),旅行商問題,揹包問題都是NP-complete。
48. a*b*c*- {anbncn, n ≥0} is context-free but not regular
49. L=L1L2,L是CFL,則L1一定是CFL(×)
50. Regular-CFL不一定是CFL,如a*b*c*-anbn包含anbncn
51. 2-wayPDA(i.e. PDA whose input heads can move both left and right) are more powerfulthan 1-way PDA
52. Givena PDA M1 and an FA M2, the problem L(M1) ÍL(M2)is decidable
53. DFA/NFA識別的是exactly正則語言。
54. R.e.只在補和差下不封閉,CFL在交下也不封閉。
55. 非正則語言的*可能是正則語言。比如A:{w=wR },及所有迴文,A*=Σ*,為正則語言
56. 典型非正則:w=wR
57. 正則語言的子集可能非正則,如anbncn,是a*b*c*的子集;又如Σ*是正則語言,H⊆Σ*。
58. 歸約:X到Y的歸約可以理解為X到Y問題的對映,reduction可以解釋為at least as difficult as… 比如X可以被Y的演算法解決,則Xis no more difficult than Y, X可以歸約到Y,記X≤Y。e.g. x2可以歸約到任意兩數的乘積。
∴ 若有A≤rB,
A是不可判定問題->B不可判定 A不遞迴->B不遞迴
B可判定->A可判定 B是遞迴的->A是遞迴的
59. 若X多項式時間歸約到Y,Y多項式時間可解,則X多項式時間可解;
若X多項式時間歸約到Y,X多項式時間不可解,則Y多項式時間不可解
60. X多項式時間歸約到Y,Y多項式時間歸約到Z,則X多項式時間歸約到Z
61. PRIME(COMPOSITE)多項式時間歸約到Factor,但是Factor多項式時間不能歸約到PRIME(COMPOSITE)。
62. 若A≤PB,B∈NP,則A∈NP。
證明:
A≤PBÞ存在確定圖靈機X,可將A歸約到B。
B∈NPÞ 存在一個非確定圖靈機N可判定B。
我們希望構造一個新的TM(X*N),是的X*N非確定多項式時間求解A,則A∈NP。
Running time of X*N≤1+p(n)<A->B>+q(p(n))(B多項式時間非確定判定)是多項式時間
所以A∈NP
63. 若A≤PB,B∈P,則A∈P。
64. 若X是NPC的,則X在多項式時間內可解iffP=NP.
65. SAT多項式時間歸約到3-SAT(3-SAT是NPC的)
66. 證明語言L是R./R.e./NonR.e.
a) Intuitively想想有沒有半判定(判定)的TM,有則R.e.(R)。若非R,執行下一步。
b) 用能否由R.e.(Non R.e.)語言歸約到該語言,能則R.e.而非R(NonR.e).
嚴格用歸約函式定義f:A≤pB,r1∈A當且僅當f(r1)∈B
e.g.1 <M,w>∈H, iff M∈L 證明R.e.
e.g.2 <M,w>∈非H,iffM∈L 證明Non R.e.
注意方向:是從A的例項經過遞迴函式推向B的例項。
詳細介紹:http://www.cs.rice.edu/~nakhleh/COMP481/final_review_sp06_sol.pdf
67. 遞迴與μ遞迴等價
68. PDA中,若每一個格局至多有一個格局接在它後面,則為確定型的。確定型CFL在補下封閉。
69. M半判定L:w∈L,iff M在w上停機,注意半判定圖靈機中不存在“拒絕”狀態。只要不接受w,就不停機。
70. Chomsky hierarchy
71. 倆證明:
7.6 證明P在並、交、Kleene*連線和補運算下封閉。
(1) 並:
對任意 L1, L2ÎP,設有na時間圖靈機M1和nb時間圖靈機M2 判定它們,且c=max{a,b}。
對L1ÈL2構造判定器M:
M=“對於輸入字串w :
1) 在w上執行M1,在w上執行M2。
2) 若有一個接受則接受,否則拒絕。”
時間複雜度:設M1為O(na),M2為O(nb)。令c=max{a,b}。
第一步用時O(na+nb) ,因此總時間為O(na+ nb)=O(nc),
所以L1ÈL2屬於P類,即 P在並的運算下封閉。
(2) 連線:
對任意 L1, L2屬於P 類,設有na時間圖靈機M1和nb時間圖靈機M2 判定它們,且c=max{a,b}。對L1L2 構造判定器M:
M=“對於輸入字串w=w1,w2,…,wn,
1) 對k=0,1,2,…,n重複下列步驟。
2) 在w1w2…wk上執行M1,在wk+1wk+2…wn上執行M2。
3) 若都接受,則接受。否則繼續。
4) 若對所有分法都不接受則拒絕。“
時間複雜度:(n+1)×(O(na)+O(nb))=O(na+1)+O(nb+1)=O(nc+1),所以L1L2屬於P類,即 P在連線的運算下封閉。
(3)補:
對任意 L1屬於P 類,設有時間O(na)判定器M1判定它,對構造判定器M:
M=“對於輸入字串w :
(1) 在w上執行M1。
(2) 若M1接受則拒絕,若M1拒絕則接受。”
時間複雜度為:O(na)。所以屬於P類,即 P在補的運算下封閉 。
7.7 證明NP在並和連線運算下封閉。
(1) 並:
對任意 L1, L2ÎNP,設分別有na時間非確定圖靈機M1和nb時間非確定圖靈機M2 判定它們,且c=max{a,b}。
構造判定L1ÈL2的非確定圖靈機M:
M=“對於輸入字串w :
1) 在w上執行M1,在w上執行M2。
2) 若有一個接受則接受,否則拒絕。”
對於每一個非確定計算分支,第一步用時為O(na)+O(nb),因此總時間為O(na+nb)=O(nc)。 所以L1ÈL2ÎNP,即 NP在並的運算下封閉。
(2) 連線:
對任意 L1, L2ÎNP,設分別有na時間非確定圖靈機M1和nb時間非確定圖靈機M2 判定它們,且c=max{a,b}。
構造判定L1L2的非確定圖靈機M:
M=“對於輸入字串w :
1) 非確定地將分成兩段x,y,使得w=xy。
2) 在x上執行M1,在y上執行M2。
3) 若都接受則接受,否則拒絕。”
對於每一個非確定計算分支,第一步用時O(n),第二步用時為O(na)+O(nb),因此總時間為O(na+ nb)=O(nc)。 所以L1L2ÎNP,即NP在連線運算下封閉。
專題——圖靈機可判定性問題
判定以下問題是否可判定:宣告:思路——想證明B問題不可解,
1. 從一個不可解問題A入手(如停機問題)
2. 建立B的一個例項,從中推出如果能解決B,A也就可以解決了
3. 所以B是不可解的
我們可以給出這樣一個TMN進行enc(M),
a) 數M中狀態數,直到481.
b) 如果達到了481,N就接受,否則拒絕。
構造2帶圖靈機N,
a) 2nd 帶: 寫481個0
b) 1st 帶在空串上模擬M,每走一步,第2帶就刪掉一個0
c) 如果M在所有0都刪掉之後停機,則N接受,否則不接受
a) 按字典序找出所有length<=481的串x
b) 在每個x上面run M,看是否在481步以內停機
c) 是則接受,否則reject
a) 原因同(3)類似
設兩個語言:L1= {M|M(e)停機};H = {<M,w>|M(w)停機}
已知H不可判定,只需要找到H->L1的歸約即可。令f(“M”,“w”) =M’(y) = “M(w)”, M’ 輸入任何y的輸出都是M在w上的模擬結果(獲得的具體做法是刪除任何輸入,寫入w,再在w上模擬M)。則{“M”,”w“}∈H,iffM’ 在任何串上停機,iff M’在空串停機 M‘∈L1。
②給定TM M, M是否在所有上停機的串?<NO>
設L = {M|M(a) where a∈Σ*} ,H = {<M,w>|M(w)停機}。尋找H到L的歸約。
令f(“M”,“w”) =M’(y) = “M(w)”, M’ 輸入任何y輸出都是M在w上的模擬結果(獲得的具體做法是刪除任何輸入,寫入w,再在w上模擬M)。{“M”,”w“}∈H,iffM’ 在任何串上停機,iff M’在任何串上停機,iff M’在所有a上停機(a∈Σ*), i.e. M’∈L。
設Finite = {L(M) where L(M) isfinite}; AH = {<M,w>|M accept w}
存在從AH(非遞迴)到﹁Finite的遞迴函式f,f(“M”,“w”)=M’(y) = “M(w)”, 顯然f可計算。則{M,w}∈AH iff M halts on w iff M’ accept any y∈Σ*ifff(M,w) is infinite, i.e. M’∈ ﹁Finite。由於AH歸約到﹁Finite,所以﹁Finite非確定,又∵確定性在補下封閉,所以Finite也是非確定的。
設Write_a = {<M,w>|M有一條在帶上寫a的規則};AH = {<M,w>|M accept w}
存在從AH(非遞迴)到﹁Finite的遞迴函式f,f(“M”,“w”)=M’(“T”,”a”) = Simulate M(w).
若M接受w,在帶上寫a;否則什麼也不寫。
則{M,w}∈AH iffM halts on w iffM’在帶上寫了一個aiff f(“M”,“w”)∈Write_a. 所以Write_a非確定。
設2Halts = {<M1,M2>|存在令他們都停機的串w};H = {<M,w>|M(w)停機}
構造新機器M’,在M’帶上寫w,模擬M1若停機則清空帶,寫w,再模擬M2,若M2在w上也停機,則M’停機。則有M’停機iff<M1,M2>∈2Halt iff<M1,w>∈H且<M2,w>∈H。
設S = {M| M accepts wRwhenever it accept w}; AH = {<M,w>|M acceptw}
遞迴函式f定義如下,f(M,w)= M’(y), 在M’上模擬M(w).
當M接受w時,create M’ 只接受串1111;當M拒絕w時,create M’只接受串01。
則<M,w>∈AH iff M接受w iff M’只接受1111 iffM’∈S,類似的<M,w>∉AHiffM’接受01不接受10iffM’∉S
判定語言Recursive/Recursive Enumerable / Not R.e.
1. L1 = {M| there exists an input on which M haltsin less than |<M>| steps} R.
Test on all w less than |M|
2. L2 = {M| |L(M)|<4} Not R.e.
a) Reductionfrom H , 說明是R.e.或非R.e.
b) <M,x>∈非H,當且僅當M’屬於L2
3. L3 = {M| |L(M)|>2} R.e. not R
由於本文有一些符號blog上無法顯示,整理成PDF放在這裡了,免費,歡迎下載。
本文整理於2013.01.10,最後更新2013.01.17,整理人Rachel_Zhang,感謝金小剛老師授課。