1. 程式人生 > >計算理論重點——Theory of Computation

計算理論重點——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的定義。

PNP的區別:

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)      LNP,且

(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.   證明語言LR./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是不可解的



1.       一個圖靈機有至少481個狀態。<YES>
我們可以給出這樣一個TMN進行enc(M),
a)       數M中狀態數,直到481.

b)       如果達到了481,N就接受,否則拒絕。



2.       給定圖靈機在空串上走了481步還沒停機。<YES>
構造2帶圖靈機N,
a)       2nd 帶: 寫481個0
b)       1st 帶在空串上模擬M,每走一步,第2帶就刪掉一個0

c)        如果M在所有0都刪掉之後停機,則N接受,否則不接受



3.       給定圖靈機,判定它是否在一些輸入上經過481步還沒停機?<YES>
a)       按字典序找出所有length<=481的串x
b)       在每個x上面run M,看是否在481步以內停機

c)        是則接受,否則reject



4.       給定圖靈機,判定在所有輸入上是否經過481步還沒停機?<YES>

a)       原因同(3)類似



5.       給定圖靈機是否接受空串?<NO>
設兩個語言: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。



6.       ①給定TM M,是否存在在M上停機的串?<NO>
②給定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。



7.       給定TM M,is L(M) finite? <NO>
設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也是非確定的。



8.       給定TM M, 帶上是否出現過a(a∈Σ)?<NO>
設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非確定。



9.       給定M1,M2,它們是否在一個相同串上停機?<NO>
設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。



10.   給定M,只要M接受w,M就接受wR  <NO>
設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,感謝金小剛老師授課。






           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述