wordpress如何修改用戶名密碼北京推廣優(yōu)化經(jīng)理
文章目錄
- 一、正則語(yǔ)言
- 預(yù)備知識(shí)
- 確定性有窮自動(dòng)機(jī)(DFA)
- 設(shè)計(jì)DFA
- 正則運(yùn)算
- 非確定性有窮自動(dòng)機(jī)(NFA,含有 ε \varepsilon ε,下一個(gè)狀態(tài)可以有若干種選擇(包括0種))
- 正則表達(dá)式
- 定義
- 計(jì)算優(yōu)先級(jí)
- 定理
- GNFA(廣義非確定自動(dòng)機(jī),NFA的推廣)
- CONVERT(G)(過(guò)程函數(shù))
- 轉(zhuǎn)化方法
- 泵引理(一個(gè)正則語(yǔ)言一定存在泵長(zhǎng)度)
- 二、上下文無(wú)關(guān)文法(CFG)
- CFG生成
- 合并
- 正則語(yǔ)言生成
- 語(yǔ)法分析樹
- 文法歧義性
- 喬姆斯基范式(CNF)
- 生成CNF
- 下推自動(dòng)機(jī)(PDA,通常指的是非確定性下推自動(dòng)機(jī))
- 上下文無(wú)關(guān)語(yǔ)言CFL
- CFL的泵引理(一個(gè)CFL必定有泵)
- 三、圖靈機(jī)
- 單帶圖靈機(jī)(TM)
- 圖靈機(jī)的等價(jià)變形
- 多帶圖靈機(jī)(同時(shí)多個(gè)紙帶)
- 非確定性圖靈機(jī)(NTM)
- 圖靈機(jī)算法
- 遞歸定理
- 圖靈機(jī)接受性問(wèn)題
- 圖靈機(jī)極小性問(wèn)題
- 不動(dòng)點(diǎn)(x=f(x))
- 四、可計(jì)算問(wèn)題/不可計(jì)算問(wèn)題
- 對(duì)于正則語(yǔ)言的可判定問(wèn)題
- 關(guān)于上下文無(wú)關(guān)語(yǔ)言(CFL)的可判定問(wèn)題
- 不可計(jì)算問(wèn)題
- 用對(duì)角化方法證明不可計(jì)算問(wèn)題
- 非圖靈可識(shí)別語(yǔ)言
- 歸約法
一、正則語(yǔ)言
預(yù)備知識(shí)
字母表:任意非空有窮集合
字符串:用字母表中的字母組成的序列,比如 Σ = { 0 , 1 } , x = 01001 \Sigma=\{0,1\},x=01001 Σ={0,1},x=01001
連接:首尾連接,如 x = 01001 , w = a b c d e , x w = 01001 a b c d e x=01001,w=abcde,xw=01001abcde x=01001,w=abcde,xw=01001abcde
(特別地, x . . . x = x n x...x=x^n x...x=xn,表示n個(gè)x首尾連接)
串長(zhǎng)度: x = 01001 , ∣ x ∣ = 5 x=01001,|x|=5 x=01001,∣x∣=5
空串: ε , ∣ ε ∣ = 0 , x 0 = ε \varepsilon,|\varepsilon|=0,x^0=\varepsilon ε,∣ε∣=0,x0=ε。
(空串 ≠ \neq =空格!)
子串&子序列:略
串的標(biāo)準(zhǔn)序:并非字典序!而是先比較長(zhǎng)度,再逐位比較大小!
語(yǔ)言:由字符串組成的集合,令字母表為 Σ \Sigma Σ(里面的串要根據(jù)標(biāo)準(zhǔn)序排列)
Σ ? \Sigma^* Σ?: Σ \Sigma Σ上有窮長(zhǎng)度的串(包括 ε \varepsilon ε)
Σ + \Sigma^+ Σ+: Σ \Sigma Σ上正有窮長(zhǎng)度的串(不包括 ε \varepsilon ε)
Σ ’ \Sigma^’ Σ’: Σ \Sigma Σ上無(wú)窮長(zhǎng)度的串
Φ \varPhi Φ:空語(yǔ)言
(與空串語(yǔ)言 { ε } \{\varepsilon\} {ε}不同!空串語(yǔ)言 { ε } \{\varepsilon\} {ε}也與空串 ε \varepsilon ε不同!)
語(yǔ)言連接:類似于笛卡爾積,兩兩搭配。 A B = { x y ∣ x ∈ a , y ∈ b } AB=\{xy|x\in a,y\in b\} AB={xy∣x∈a,y∈b}
(特殊地, { ε } A = A { ε } = A \{\varepsilon\}A=A\{\varepsilon\}=A {ε}A=A{ε}=A, Φ A = A Φ = Φ \varPhi A=A\varPhi =\varPhi ΦA=AΦ=Φ)
確定性有窮自動(dòng)機(jī)(DFA)
M = ( Q , Σ , δ , q 0 , F ) M=(Q,\Sigma,\delta,q_0,F) M=(Q,Σ,δ,q0?,F)
Q Q Q:有窮狀態(tài)集
Σ \Sigma Σ:輸入字母表
δ : Q × Σ → Q \delta:Q \times \Sigma \rightarrow Q δ:Q×Σ→Q(轉(zhuǎn)移函數(shù),也就是映射關(guān)系)
(特殊地, Q × Σ ? → Q Q \times \Sigma^* \rightarrow Q Q×Σ?→Q(多了個(gè)空串)為擴(kuò)展轉(zhuǎn)移函數(shù))
q 0 q_0 q0?:初始狀態(tài)
F F F:接受狀態(tài)/終止?fàn)顟B(tài)
語(yǔ)言:能夠被自動(dòng)機(jī)接受的串集合, L ( M ) = { w ∈ Σ ? ∣ δ ( q 0 , w ) ∈ F } L(M)=\{w\in \Sigma^*|\delta(q_0,w)\in F\} L(M)={w∈Σ?∣δ(q0?,w)∈F}
正則語(yǔ)言:可以被有窮自動(dòng)機(jī)接受的語(yǔ)言/可以用正則表達(dá)式描述的語(yǔ)言
設(shè)計(jì)DFA
- 確定狀態(tài)集
- 確定轉(zhuǎn)移函數(shù)
- 標(biāo)注初始狀態(tài)&終結(jié)狀態(tài)
正則運(yùn)算
正則語(yǔ)言對(duì)正則計(jì)算封閉!
正則語(yǔ)言的**交并補(bǔ)、差、對(duì)稱差、連接、*(星號(hào))**封閉!
A ∪ B = { x ∣ x ∈ A 或 x ∈ B } A\cup B=\{x|x\in A或x\in B\} A∪B={x∣x∈A或x∈B}
A B = { x y ∣ x ∈ A 且 y ∈ B } AB=\{xy|x\in A且y\in B\} AB={xy∣x∈A且y∈B}
A ? = A 0 ∪ A 1 ∪ A 2 ∪ . . . A^*=A^0\cup A^1\cup A^2\cup... A?=A0∪A1∪A2∪...(見(jiàn)前,包括 ε \varepsilon ε)
非確定性有窮自動(dòng)機(jī)(NFA,含有 ε \varepsilon ε,下一個(gè)狀態(tài)可以有若干種選擇(包括0種))
籌碼集:字符集中只有 ε \varepsilon ε與一種字符的語(yǔ)言
M = ( Q , Σ ε , δ , q 0 , F ) M=(Q,\Sigma_{\varepsilon},\delta,q_0,F) M=(Q,Σε?,δ,q0?,F)
Q Q Q:有窮狀態(tài)集
Σ \Sigma Σ:輸入字母表( Σ ε = Σ ∪ { ε } \Sigma_{\varepsilon}=\Sigma\cup\{\varepsilon\} Σε?=Σ∪{ε})
δ : Q × Σ ε → P ( Q ) \delta:Q \times \Sigma_{\varepsilon} \rightarrow P(Q) δ:Q×Σε?→P(Q)(轉(zhuǎn)移函數(shù))
q 0 q_0 q0?:初始狀態(tài)
F F F:接受狀態(tài)/終止?fàn)顟B(tài)
任何一個(gè)NFA都有等價(jià)的DFA!
一個(gè)語(yǔ)言是正則語(yǔ)言,當(dāng)且僅當(dāng)只有一個(gè)NFA可以識(shí)別!
(具體轉(zhuǎn)換見(jiàn)其他)
正則表達(dá)式
定義
對(duì)于 R R R,有
- a a a表示語(yǔ)言 { a } \{a\} {a},其中 a ∈ Σ a\in\Sigma a∈Σ(包括 ε \varepsilon ε)
- Φ \varPhi Φ表示空語(yǔ)言
- R = ( R 1 ∪ R 2 ) R=(R_1\cup R_2) R=(R1?∪R2?)是正則表達(dá)式
- R = ( R 1 ° R 2 ) R=(R_1\circ R_2) R=(R1?°R2?)是正則表達(dá)式
- R = ( R 1 ? ) R=(R_1^*) R=(R1??)是正則表達(dá)式
則 R R R是正則表達(dá)式
eg:數(shù)值常量:
{ + , ? , ε } ( D D ? ∪ D D ? . D ? ∪ D ? . D D ? ) , D = { 0 , 1 , 2 , . . . , 9 } \{+,-,\varepsilon\}(DD^*\cup DD^*.D^*\cup D^*.DD^*),D=\{0,1,2,...,9\} {+,?,ε}(DD?∪DD?.D?∪D?.DD?),D={0,1,2,...,9}
eg:72、3.14159、+7.、-.01
計(jì)算優(yōu)先級(jí)
星號(hào) ? > *> ?>連接 > > >并 ∪ \cup ∪
定理
Φ ? = { ε } \varPhi^*=\{\varepsilon\} Φ?={ε}
R ∪ Φ = R R\cup\varPhi=R R∪Φ=R
R ε = R R\varepsilon=R Rε=R
R ∪ ε = R ∪ { ε } ≠ R R\cup \varepsilon=R\cup \{\varepsilon\}\neq R R∪ε=R∪{ε}=R
R Φ = Φ ≠ R R\varPhi=\varPhi\neq R RΦ=Φ=R
正則表達(dá)式與一個(gè)確定自動(dòng)機(jī)等價(jià)!
GNFA(廣義非確定自動(dòng)機(jī),NFA的推廣)
(與NFA不同的是,轉(zhuǎn)移用的并非是單個(gè)字符,而是一個(gè)正則表達(dá)式!)
G = ( Q , Σ , δ , q s t a r t , q a c c e p t ) G=(Q,\Sigma,\delta,q_{start},q_{accept}) G=(Q,Σ,δ,qstart?,qaccept?)
Q Q Q:有窮狀態(tài)集
Σ \Sigma Σ:輸入字母表( Σ ε = Σ ∪ { ε } \Sigma_{\varepsilon}=\Sigma\cup\{\varepsilon\} Σε?=Σ∪{ε})
δ : ( Q ? { q a c c e p t } ) × ( Q ? { q s t a r t } ) → R \delta:(Q-\{q_{accept}\}) \times (Q-\{q_{start}\}) \rightarrow R δ:(Q?{qaccept?})×(Q?{qstart?})→R
(與NFA不同的是,轉(zhuǎn)移狀態(tài)用的并非是單個(gè)字符,而是一個(gè)正則表達(dá)式!)
q s t a r t q_{start} qstart?:初始狀態(tài)
q a c c e p t q_{accept} qaccept?:接受狀態(tài)/終止?fàn)顟B(tài)
CONVERT(G)(過(guò)程函數(shù))
對(duì)于任意GNFA G, C O N V E R T ( G ) CONVERT(G) CONVERT(G)與 G G G等價(jià)!
對(duì)于 G G G的狀態(tài)數(shù) k k k, k = 2 k=2 k=2時(shí), C O N V E R T ( G ) = δ ( q s t a r t , q a c c e p t ) CONVERT(G)=\delta(q_{start},q_{accept}) CONVERT(G)=δ(qstart?,qaccept?)。
當(dāng) k > 2 k>2 k>2時(shí),令 q r i p ∈ Q ? { q s t a r t } ? { q a c c e p t } , Q ′ = Q ? q r i p q_{rip}\in Q-\{q_{start}\}-\{q_{accept}\},Q'=Q-{q_{rip}} qrip?∈Q?{qstart?}?{qaccept?},Q′=Q?qrip?。
構(gòu)造 G ′ = ( Q ′ , Σ ε , δ ′ , q s t a r t , q a c c e p t ) G'=(Q',\Sigma_{\varepsilon},\delta',q_{start},q_{accept}) G′=(Q′,Σε?,δ′,qstart?,qaccept?),如此循環(huán)直到 k = 2 k=2 k=2。
其中,對(duì)于每個(gè)非起始態(tài) q i q_i qi?與每個(gè)非終結(jié)態(tài) q j q_j qj?, δ ′ ( q i , q j ) = ( R 1 ) ( R 2 ) ? ( R 3 ) ∪ ( R 4 ) \delta'(q_i,q_j)=(R_1)(R_2)*(R_3)\cup(R_4) δ′(qi?,qj?)=(R1?)(R2?)?(R3?)∪(R4?)
其中 R 1 = δ ( q i , q r i p ) , R 2 = δ ( q r i p , q r i p ) , R 3 = δ ( q r i p , q j ) , R 4 = δ ( q i , q j ) R_1=\delta(q_i,q_{rip}),R_2=\delta(q_{rip},q_{rip}),R_3=\delta(q_{rip},q_{j}),R_4=\delta(q_i,q_j) R1?=δ(qi?,qrip?),R2?=δ(qrip?,qrip?),R3?=δ(qrip?,qj?),R4?=δ(qi?,qj?)
(選擇 i → j i\rightarrow j i→j和 i → ( r i p ) ? → j i\rightarrow (rip)^*\rightarrow j i→(rip)?→j的并集來(lái)轉(zhuǎn)移狀態(tài)不斷遞歸)
轉(zhuǎn)化方法
- 增加新的起始點(diǎn)與終結(jié)點(diǎn),并將其與原來(lái)的起始點(diǎn)/終結(jié)點(diǎn)用 ε \varepsilon ε連接
(類似最大流的源點(diǎn)與匯點(diǎn),使得起始點(diǎn)沒(méi)有入度,終結(jié)點(diǎn)沒(méi)有出度) - 合并平行邊
- 去除中心點(diǎn)(使得點(diǎn)減少更精簡(jiǎn))
以下圖為例。
1.添加新起始點(diǎn)s與新終結(jié)點(diǎn)a,用 ε \varepsilon ε連接。
2.將狀態(tài)2去消除中心點(diǎn),變?yōu)?span id="vxwlu0yf4" class="katex--inline"> b ( a ∪ b ) ? b(a\cup b)^* b(a∪b)?后刪除狀態(tài)2
3.將狀態(tài)1去消除中心點(diǎn),變?yōu)?span id="vxwlu0yf4" class="katex--inline"> a ? b ( a ∪ b ) ? a^*b(a\cup b)^* a?b(a∪b)?,結(jié)束。
(合并的時(shí)候,如果有不含 ε \varepsilon ε的部分,則消去所有 ε \varepsilon ε,否則不消去!)
以下圖為例。
1.添加新起始點(diǎn)s與新終結(jié)點(diǎn)a,用 ε \varepsilon ε連接。
2.將狀態(tài)1去消除中心點(diǎn)。
(消除路徑經(jīng)過(guò)1的、且不是回路的)
(1)把 2 → a 1 → b 3 2\xrightarrow{a}1\xrightarrow3 2a?1b?3變?yōu)?span id="vxwlu0yf4" class="katex--inline"> 2 → a b 3 2\xrightarrow{ab}3 2ab?3
(2)把 3 → b 1 → a 2 3\xrightarrow1\xrightarrow{a}2 3b?1a?2與 3 → a 2 3\xrightarrow{a}2 3a?2變?yōu)?span id="vxwlu0yf4" class="katex--inline"> 3 → b a ∪ a 2 3\xrightarrow {ba\cup a}2 3ba∪a?2
(消除新起始點(diǎn)/新終結(jié)點(diǎn)相關(guān)的)
(3)把 s → ε 1 → a 2 s\xrightarrow{\varepsilon}1\xrightarrow{a}2 sε?1a?2變?yōu)?span id="vxwlu0yf4" class="katex--inline"> s → a 2 s\xrightarrow{a}2 sa?2
(4)把 s → ε 1 → b 3 s\xrightarrow{\varepsilon}1\xrightarrow3 sε?1b?3變?yōu)?span id="vxwlu0yf4" class="katex--inline"> s → b 3 s\xrightarrow3 sb?3
(消除路徑經(jīng)過(guò)1的、且是回路的)
(5)把 2 → a 1 → a 2 2\xrightarrow{a}1\xrightarrow{a}2 2a?1a?2與 2 → b 2 2\xrightarrow2 2b?2變?yōu)?span id="vxwlu0yf4" class="katex--inline"> 2 → a a ∪ b 2 2\xrightarrow {aa\cup b}2 2aa∪b?2
(6)把 3 → b 1 → b 3 3\xrightarrow1\xrightarrow3 3b?1b?3變?yōu)?span id="vxwlu0yf4" class="katex--inline"> 3 → b b 3 3\xrightarrow{bb}3 3bb?3
3.將狀態(tài)2去消除中心點(diǎn)。
(1)將 s → a 2 → ε a s\xrightarrow{a}2\xrightarrow{\varepsilon}a sa?2ε?a與 2 → a a ∪ b 2 2\xrightarrow{aa\cup b}2 2aa∪b?2變?yōu)?span id="vxwlu0yf4" class="katex--inline"> s → a ( a a ∪ b ) ? a s\xrightarrow{a(aa\cup b)^*}a sa(aa∪b)??a
(2)將 s → b 3 s\xrightarrow3 sb?3與 s → a 2 → a a ∪ b 2 → a b 3 s\xrightarrow{a}2\xrightarrow{aa\cup b}2\xrightarrow{ab}3 sa?2aa∪b?2ab?3變?yōu)?span id="vxwlu0yf4" class="katex--inline"> s → a ( a a ∪ b ) ? a b ∪ b 3 s\xrightarrow{a(aa\cup b)^*ab\cup b}3 sa(aa∪b)?ab∪b?3
(因?yàn)?span id="vxwlu0yf4" class="katex--inline"> 3 → ε a 3\xrightarrow{\varepsilon}a 3ε?a,所以狀態(tài)3也是終結(jié)狀態(tài))
(3)將 3 → b b 3 3\xrightarrow{bb}3 3bb?3與 3 → b a ∪ a 2 → a a ∪ b 2 → a b 3 3\xrightarrow{ba\cup a}2\xrightarrow{aa\cup b}2\xrightarrow{ab}3 3ba∪a?2aa∪b?2ab?3變?yōu)?span id="vxwlu0yf4" class="katex--inline"> 3 → ( b a ∪ a ) ( a a ∪ b ) ? a b ∪ b b 3 3\xrightarrow{(ba\cup a)(aa\cup b)^*ab\cup bb}3 3(ba∪a)(aa∪b)?ab∪bb?3
(4)將 3 → ε a 3\xrightarrow{\varepsilon}a 3ε?a與 3 → b a ∪ a 2 → a a ∪ b 2 → ε a 3\xrightarrow{ba\cup a}2\xrightarrow{aa\cup b}2\xrightarrow{\varepsilon}a 3ba∪a?2aa∪b?2ε?a變?yōu)?span id="vxwlu0yf4" class="katex--inline"> 3 → b a ∪ a ( a a ∪ b ) ? ∪ ε a 3\xrightarrow{ba\cup a(aa\cup b)^*\cup\varepsilon}a 3ba∪a(aa∪b)?∪ε?a
4.將狀態(tài)3去消除中心點(diǎn)。
將 s → a ( a a ∪ b ) ? a b ∪ b 3 s\xrightarrow{a(aa\cup b)^*ab\cup b}3 sa(aa∪b)?ab∪b?3、 3 → ( b a ∪ a ) ( a a ∪ b ) ? a b ∪ b b 3 3\xrightarrow{(ba\cup a)(aa\cup b)^*ab\cup bb}3 3(ba∪a)(aa∪b)?ab∪bb?3、 3 → b a ∪ a ( a a ∪ b ) ? ∪ ε a 3\xrightarrow{ba\cup a(aa\cup b)^*\cup\varepsilon}a 3ba∪a(aa∪b)?∪ε?a,
與 s → a ( a a ∪ b ) ? a s\xrightarrow{a(aa\cup b)^*}a sa(aa∪b)??a變?yōu)?br /> s → ( a ( a a ∪ b ) ? a b ∪ b ) ( ( b a ∪ a ) ( a a ∪ b ) ? a b ∪ b b ) ? ( b a ∪ a ( a a ∪ b ) ? ∪ ε ) ∪ ( a ( a a ∪ b ) ? ) a s\xrightarrow{(a(aa\cup b)^*ab\cup b)((ba\cup a)(aa\cup b)^*ab\cup bb)^*(ba\cup a(aa\cup b)^*\cup\varepsilon)\cup(a(aa\cup b)^*)}a s(a(aa∪b)?ab∪b)((ba∪a)(aa∪b)?ab∪bb)?(ba∪a(aa∪b)?∪ε)∪(a(aa∪b)?)?a
泵引理(一個(gè)正則語(yǔ)言一定存在泵長(zhǎng)度)
若 A A A是正則語(yǔ)言,則存在常數(shù) p p p( p p p為泵長(zhǎng)度,類似最大循環(huán)節(jié)長(zhǎng)度),若 s ∈ A s\in A s∈A, ∣ s ∣ ≥ p |s|\geq p ∣s∣≥p,
則 s = x y z s=xyz s=xyz,并且滿足:
(1) ? i ≥ 0 , x y i z ∈ A \forall i\geq0,xy^iz\in A ?i≥0,xyiz∈A。
(2) ∣ y ∣ > 0 |y|>0 ∣y∣>0
(3) ∣ x y ∣ ≤ p |xy|\leq p ∣xy∣≤p
如果要證明一個(gè)語(yǔ)言不是正則的,則用反證法 。找一個(gè)反例即可。
二、上下文無(wú)關(guān)文法(CFG)
G = ( V , Σ , R , S ) G=(V,\Sigma,R,S) G=(V,Σ,R,S)
V V V:有窮變?cè)?br /> Σ \Sigma Σ:有窮終結(jié)符集
R R R:有窮規(guī)則集(形如 A → w , w ∈ ( V ∪ Σ ) ? A\rightarrow w,w\in(V\cup\Sigma)^* A→w,w∈(V∪Σ)?)
S ∈ V S\in V S∈V:初始變?cè)?br /> 一個(gè)上下文無(wú)關(guān)語(yǔ)言(CFL)與上下文無(wú)關(guān)文法等價(jià)!
CFG生成
合并
對(duì)于原本的初始變?cè)?span id="vxwlu0yf4" class="katex--inline"> S 1 , S 2 , . . . S k S_1,S_2,...S_k S1?,S2?,...Sk?,新增規(guī)則 S → S 1 ∣ S 2 ∣ . . . S k S\rightarrow S_1|S_2|...S_k S→S1?∣S2?∣...Sk?
正則語(yǔ)言生成
用DFA轉(zhuǎn)化為等價(jià)的CFG(正則語(yǔ)言都是上下文無(wú)關(guān)語(yǔ)言!)
對(duì)于原DFA中 δ ( q i , a ) = q j \delta(q_i,a)=q_j δ(qi?,a)=qj?(即 q i → a q j q_i\xrightarrow{a}q_j qi?a?qj?),則令 R i → a R j R_i\rightarrow aR_j Ri?→aRj?
對(duì)于原DFA中 q i ∈ F q_i\in F qi?∈F(即 q i q_i qi?為終止?fàn)顟B(tài)),則令 R i → ε R_i\rightarrow \varepsilon Ri?→ε
語(yǔ)法分析樹
文法歧義性
最左派生:每一步都優(yōu)先替換最左邊的變?cè)?/strong>
eg1: < E X P R > <EXPR> <EXPR>
? < E X P R > + < E X P R > \Rightarrow <EXPR>+<EXPR> ?<EXPR>+<EXPR>
? a + < E X P R > \Rightarrow a+<EXPR> ?a+<EXPR>
? a + < E X P R > × < E X P R > \Rightarrow a+<EXPR>\times<EXPR> ?a+<EXPR>×<EXPR>
? a + a × < E X P R > \Rightarrow a+a\times<EXPR> ?a+a×<EXPR>
? a + a × a \Rightarrow a+a\times a ?a+a×a
eg2: < E X P R > <EXPR> <EXPR>
? < E X P R > × < E X P R > \Rightarrow <EXPR>\times<EXPR> ?<EXPR>×<EXPR>
? < E X P R > + < E X P R > × < E X P R > \Rightarrow <EXPR>+<EXPR>\times<EXPR> ?<EXPR>+<EXPR>×<EXPR>
? a + < E X P R > × < E X P R > \Rightarrow a+<EXPR>\times<EXPR> ?a+<EXPR>×<EXPR>
? a + a × < E X P R > \Rightarrow a+a\times<EXPR> ?a+a×<EXPR>
? a + a × a \Rightarrow a+a\times a ?a+a×a
注意到最左派生產(chǎn)生歧義性,因此這是歧義文法。
喬姆斯基范式(CNF)
初始變?cè)荒茉谑阶佑曳匠霈F(xiàn)
只允許如下形式規(guī)則:
S → ε S\rightarrow \varepsilon S→ε
A → B C A\rightarrow BC A→BC
A → a A\rightarrow a A→a(任意終結(jié)符)
生成CNF
任何的CFG都有等價(jià)的CNF!
- 添加新初始變?cè)?/strong> S 0 S_0 S0?與新規(guī)則 S 0 → S S_0\rightarrow S S0?→S(舊初始變?cè)?#xff09;
- 處理所有的 ε \varepsilon ε規(guī)則:
若有非初始變?cè)?span id="vxwlu0yf4" class="katex--inline"> A → ε A\rightarrow\varepsilon A→ε,則刪除之,并修改所有等式右邊與 A A A相關(guān)的內(nèi)容。
B → u A v B\rightarrow uAv B→uAv變?yōu)?span id="vxwlu0yf4" class="katex--inline"> B → u v B\rightarrow uv B→uv。
B → u A v A w B\rightarrow uAvAw B→uAvAw變?yōu)?span id="vxwlu0yf4" class="katex--inline"> B → u v A w ∣ u A v w ∣ u v w B\rightarrow uvAw|uAvw|uvw B→uvAw∣uAvw∣uvw(三種不同的可能情況)
B → A B\rightarrow A B→A變?yōu)?span id="vxwlu0yf4" class="katex--inline"> B → ε B\rightarrow\varepsilon B→ε。
重復(fù)以上,知道刪除所有 ε \varepsilon ε相關(guān)規(guī)則為止( S 0 → ε S_0\rightarrow\varepsilon S0?→ε除外) - 處理所有的單一規(guī)則:(左邊單個(gè)對(duì)應(yīng)右邊單個(gè))
刪除 A → B A\rightarrow B A→B,并修改所有相關(guān)的內(nèi)容。
若有 B → u B\rightarrow u B→u,則添加 A → u A\rightarrow u A→u。
重復(fù)以上,直到刪除所有單一規(guī)則為止。 - 處理 A → u 1 u 2 . . . u k A\rightarrow u_1u_2...u_k A→u1?u2?...uk?長(zhǎng)規(guī)則:
將其換成 A → u 1 A 1 , A 1 → u 2 A 2 , . . . . . . , A k = u k ? 1 u k A\rightarrow u_1A_1,A_1\rightarrow u_2A_2,......,A_{k}=u_{k-1}u_k A→u1?A1?,A1?→u2?A2?,......,Ak?=uk?1?uk?。 - 處理終結(jié)符:
引入新變?cè)?span id="vxwlu0yf4" class="katex--inline"> U i U_i Ui?與新規(guī)則 U i → a i U_i\rightarrow a_i Ui?→ai?。
A → a i a j A\rightarrow a_ia_j A→ai?aj?換成 A → U i U j A\rightarrow U_iU_j A→Ui?Uj?
A → a i B A\rightarrow a_iB A→ai?B換成 A → U i B A\rightarrow U_iB A→Ui?B
A → B a i A\rightarrow Ba_i A→Bai?換成 A → B u i A\rightarrow Bu_i A→Bui?
G : S → A S A ∣ a B G:S\rightarrow ASA|aB G:S→ASA∣aB
A → B ∣ S A\rightarrow B|S A→B∣S
B → b ∣ ε B\rightarrow b|\varepsilon B→b∣ε
求等價(jià)CNF。
(1)添加新初始變?cè)?span id="vxwlu0yf4" class="katex--inline"> S 0 S_0 S0?
S 0 → S S_0\rightarrow S S0?→S
S → A S A ∣ a B S\rightarrow ASA|aB S→ASA∣aB
A → B ∣ S A\rightarrow B|S A→B∣S
B → b ∣ ε B\rightarrow b|\varepsilon B→b∣ε
(2)處理B的 ε \varepsilon ε規(guī)則
S 0 → S S_0\rightarrow S S0?→S
S → A S A ∣ a B ∣ a S\rightarrow ASA|aB|a S→ASA∣aB∣a
A → B ∣ S ∣ ε A\rightarrow B|S|\varepsilon A→B∣S∣ε
B → b B\rightarrow b B→b
(3)處理A的 ε \varepsilon ε規(guī)則
S 0 → S S_0\rightarrow S S0?→S
S → A S A ∣ a B ∣ a ∣ S A ∣ A S S\rightarrow ASA|aB|a|SA|AS S→ASA∣aB∣a∣SA∣AS( S → S S\rightarrow S S→S沒(méi)有用,可以刪去)
A → B ∣ S A\rightarrow B|S A→B∣S
B → b B\rightarrow b B→b
(4)處理單一規(guī)則 S 0 → S S_0\rightarrow S S0?→S
S 0 → A S A ∣ a B ∣ a ∣ S A ∣ A S S_0\rightarrow ASA|aB|a|SA|AS S0?→ASA∣aB∣a∣SA∣AS
S → A S A ∣ a B ∣ a ∣ S A ∣ A S S\rightarrow ASA|aB|a|SA|AS S→ASA∣aB∣a∣SA∣AS
A → B ∣ S A\rightarrow B|S A→B∣S
B → b B\rightarrow b B→b
(5)處理單一規(guī)則 A → B A\rightarrow B A→B
S 0 → A S A ∣ a B ∣ a ∣ S A ∣ A S S_0\rightarrow ASA|aB|a|SA|AS S0?→ASA∣aB∣a∣SA∣AS
S → A S A ∣ a B ∣ a ∣ S A ∣ A S S\rightarrow ASA|aB|a|SA|AS S→ASA∣aB∣a∣SA∣AS
A → S ∣ b A\rightarrow S|b A→S∣b
B → b B\rightarrow b B→b
(6)處理單一規(guī)則 A → S A\rightarrow S A→S
S 0 → A S A ∣ a B ∣ a ∣ S A ∣ A S S_0\rightarrow ASA|aB|a|SA|AS S0?→ASA∣aB∣a∣SA∣AS
S → A S A ∣ a B ∣ a ∣ S A ∣ A S S\rightarrow ASA|aB|a|SA|AS S→ASA∣aB∣a∣SA∣AS
A → A S A ∣ a B ∣ S A ∣ A S ∣ a ∣ b A\rightarrow ASA|aB|SA|AS|a|b A→ASA∣aB∣SA∣AS∣a∣b
B → b B\rightarrow b B→b
(7)處理長(zhǎng)規(guī)則 A S A ASA ASA
S 0 → A A 1 ∣ a B ∣ a ∣ S A ∣ A S S_0\rightarrow AA_1|aB|a|SA|AS S0?→AA1?∣aB∣a∣SA∣AS
S → A A 1 ∣ a B ∣ a ∣ S A ∣ A S S\rightarrow AA_1|aB|a|SA|AS S→AA1?∣aB∣a∣SA∣AS
A → A A 1 ∣ a B ∣ S A ∣ A S ∣ a ∣ b A\rightarrow AA_1|aB|SA|AS|a|b A→AA1?∣aB∣SA∣AS∣a∣b
B → b B\rightarrow b B→b
A 1 → S A A_1\rightarrow SA A1?→SA
(8)處理終結(jié)符 a a a
S 0 → A A 1 ∣ U B ∣ U ∣ S A ∣ A S S_0\rightarrow AA_1|UB|U|SA|AS S0?→AA1?∣UB∣U∣SA∣AS
S → A A 1 ∣ U B ∣ U ∣ S A ∣ A S S\rightarrow AA_1|UB|U|SA|AS S→AA1?∣UB∣U∣SA∣AS
A → A A 1 ∣ U B ∣ S A ∣ A S ∣ U ∣ B A\rightarrow AA_1|UB|SA|AS|U|B A→AA1?∣UB∣SA∣AS∣U∣B
A 1 → S A A_1\rightarrow SA A1?→SA
B → b B\rightarrow b B→b
U → a U\rightarrow a U→a
于是得到 G G G對(duì)應(yīng)的喬姆斯基范式。
下推自動(dòng)機(jī)(PDA,通常指的是非確定性下推自動(dòng)機(jī))
由棧組成,每次讀入字符后選擇與棧頂字符匹配或壓入棧。
M = ( Q , Σ , Γ , δ , q 0 , F ) M=(Q,\Sigma,\Gamma,\delta,q_0,F) M=(Q,Σ,Γ,δ,q0?,F)
Q Q Q:有窮狀態(tài)集
Σ \Sigma Σ:輸入字母表( Σ ε = Σ ∪ { ε } \Sigma_\varepsilon=\Sigma\cup\{\varepsilon\} Σε?=Σ∪{ε})
Γ \Gamma Γ:棧字母表( Γ ε = Γ ∪ { ε } \Gamma_\varepsilon=\Gamma\cup\{\varepsilon\} Γε?=Γ∪{ε})
δ : Q × Σ ε × Γ ε → P ( Q × Γ ε ) \delta:Q\times\Sigma_{\varepsilon}\times\Gamma_{\varepsilon}\rightarrow P(Q\times\Gamma_{\varepsilon}) δ:Q×Σε?×Γε?→P(Q×Γε?)(轉(zhuǎn)移函數(shù))
q 0 q_0 q0?:初始狀態(tài)( q 0 ∈ Q q_0 \in Q q0?∈Q)
F F F:終結(jié)狀態(tài)集( F ? Q F\subseteq Q F?Q)
以此圖為例,可以繪制出此自動(dòng)機(jī)。
在棧的初始插入一個(gè) $符號(hào),用于判斷是否為空棧。
上下文無(wú)關(guān)語(yǔ)言CFL
如果一個(gè)語(yǔ)言是上下文無(wú)關(guān)語(yǔ)言(CFL) ? \Longleftrightarrow ?有下推自動(dòng)機(jī)(PDA)識(shí)別這個(gè)語(yǔ)言。
CFL對(duì)正則運(yùn)算封閉!
CFL對(duì)交 ∩ \cap ∩不封閉!(語(yǔ)言 A , B A,B A,B是CFL, A ∩ B A\cap B A∩B不一定是CFL)
CFL對(duì)補(bǔ)運(yùn)算不封閉!(語(yǔ)言 A A A是CFL, A c A^c Ac不一定是CFL)
CFL的泵引理(一個(gè)CFL必定有泵)
假設(shè) A A A為上下文無(wú)關(guān)語(yǔ)言,則存在常數(shù) p p p(泵長(zhǎng)度,類似循環(huán)節(jié)最大長(zhǎng)度),若 s ∈ A s\in A s∈A,且 ∣ s ∣ ≥ p |s|\geq p ∣s∣≥p,
則 s = u v x y z s=uvxyz s=uvxyz,其中
(1) ? i ≥ 0 , u v i x y i z ∈ A \forall i\geq 0,uv^ixy^iz\in A ?i≥0,uvixyiz∈A
(2) ∣ v y ∣ > 0 |vy|>0 ∣vy∣>0
(3) ∣ v x y ∣ ≤ p |vxy|\leq p ∣vxy∣≤p
同正則文法一樣,找出一個(gè)反例證明不是CFL即可!
eg1:證明 C = { a i b j c k ∣ 0 ≤ i ≤ j ≤ k } C=\{a^ib^jc^k|0\leq i\leq j\leq k\} C={aibjck∣0≤i≤j≤k}不是CFL。
prove:假設(shè) C C C為上下文無(wú)關(guān)語(yǔ)言,設(shè) p p p為泵長(zhǎng)度,不妨令 s = a p b p c p s=a^pb^pc^p s=apbpcp。
則 s = u v x y z s=uvxyz s=uvxyz,其中
(1) ? i ≥ 0 , u v i x y i z ∈ C \forall i\geq 0,uv^ixy^iz\in C ?i≥0,uvixyiz∈C
(2) ∣ v y ∣ > 0 |vy|>0 ∣vy∣>0(即 v v v與 y y y至少含一種符號(hào))
(3) ∣ v x y ∣ ≤ p |vxy|\leq p ∣vxy∣≤p(即 v v v與 y y y至多含兩種符號(hào),理由同上)
(1): v v v與 y y y僅含一種符號(hào)
①: a a a不在 v v v與 y y y之中,此時(shí)只可能是 a . . . a ? p 個(gè) ∣ ? ∣ b . . . b ? p 個(gè) ∣ ? ∣ c . . . c ? p 個(gè) \underbrace{a...a}_{p個(gè)}|\emptyset|\underbrace{b...b}_{p個(gè)}|\emptyset|\underbrace{c...c}_{p個(gè)} p個(gè) a...a??∣?∣p個(gè) b...b??∣?∣p個(gè) c...c??,違背了 ∣ v y ∣ > 0 |vy|>0 ∣vy∣>0,矛盾。
②: b b b不在 v v v與 y y y之中,此時(shí)只可能是 a . . . a ? p ? i 個(gè) ∣ a . . . a ? i 個(gè) ∣ b . . . b ? p 個(gè) ∣ c . . . c ? i 個(gè) ∣ c . . . c ? p ? i 個(gè) \underbrace{a...a}_{p-i個(gè)}|\underbrace{a...a}_{i個(gè)}|\underbrace{b...b}_{p個(gè)}|\underbrace{c...c}_{i個(gè)}|\underbrace{c...c}_{p-i個(gè)} p?i個(gè) a...a??∣i個(gè) a...a??∣p個(gè) b...b??∣i個(gè) c...c??∣p?i個(gè) c...c??,違背了 ∣ v x y ∣ ≤ q |vxy|\leq q ∣vxy∣≤q,矛盾。
③: c c c不在 v v v與 y y y之中,同①,矛盾。
(2): v v v與 y y y含兩種符號(hào)
此時(shí)易知當(dāng) i > 1 i>1 i>1時(shí),就不具有 a p b p c p a^pb^pc^p apbpcp的形式,即 i = 0 i=0 i=0或 i = 1 i=1 i=1,矛盾。( ? i ≥ 0 \forall i\geq 0 ?i≥0才算成立)
綜上, C C C不是CFL,證畢。
eg2:證明 D = { w w ∣ w ∈ { 0 , 1 } ? } D=\{ww|w\in\{0,1\}^*\} D={ww∣w∈{0,1}?}不是CFL。
prove:假設(shè) C C C為上下文無(wú)關(guān)語(yǔ)言,設(shè) p p p為泵長(zhǎng)度,不妨令 s = 0 p 1 p 0 p 1 p s=0^p1^p0^p1^p s=0p1p0p1p。
則 s = u v x y z s=uvxyz s=uvxyz,其中
(1) ? i ≥ 0 , u v i x y i z ∈ C \forall i\geq 0,uv^ixy^iz\in C ?i≥0,uvixyiz∈C
(2) ∣ v y ∣ > 0 |vy|>0 ∣vy∣>0(即 v v v與 y y y至少含一種符號(hào))
(3) ∣ v x y ∣ ≤ p |vxy|\leq p ∣vxy∣≤p(即 v v v與 y y y至多含兩種符號(hào))
(注意這里一定要挑一個(gè)合適的反例,例如 0 p 1 0 p 1 0^p10^p1 0p10p1可以拆分為 0...0 ? p ? 1 個(gè) ∣ 0 ∣ 1 ∣ 0 ∣ 0...0 ? p ? 1 個(gè) 1 \underbrace{0...0}_{p-1個(gè)}|0|1|0|\underbrace{0...0}_{p-1個(gè)}1 p?1個(gè) 0...0??∣0∣1∣0∣p?1個(gè) 0...0??1,是合法的。)
(1) v x y vxy vxy在前半部分里,即 v x y vxy vxy在第一個(gè) 0 p 1 p 0^p1^p 0p1p內(nèi)。此時(shí)隨著 i i i的變化,后半個(gè) 0 p 1 p 0^p1^p 0p1p的數(shù)量會(huì)與前半個(gè)不同,不匹配,矛盾。
(2) v x y vxy vxy在后半部分里,同上,矛盾。
(3) v x y vxy vxy橫跨中間,則 v v v與 y y y不可以含兩種符號(hào),故 v v v為 1 i 1^i 1i, y y y為 1 i 1^i 1i,同理 i i i的變化會(huì)讓頭尾的兩個(gè) 0 p 0^p 0p與 1 p 1^p 1p數(shù)量與內(nèi)部的兩個(gè)不同,不匹配,矛盾。
綜上, D D D不是CFL,證畢。
三、圖靈機(jī)
單帶圖靈機(jī)(TM)
有一個(gè)紙帶序列與一個(gè)可以左右雙向移動(dòng)的讀寫頭
M = ( Q , Σ , Γ , δ , q 0 , q a c c , q r e j ) M=(Q,\Sigma,\Gamma,\delta,q_0,q_{acc},q_{rej}) M=(Q,Σ,Γ,δ,q0?,qacc?,qrej?)
Q Q Q:有窮狀態(tài)集
Σ \Sigma Σ:輸入字母表(注意空格符 B ? Σ B\notin\Sigma B∈/Σ)
Γ \Gamma Γ:帶字母表, Σ ∪ { B } ? Γ \Sigma\cup\{B\}\subseteq\Gamma Σ∪{B}?Γ
δ \delta δ: Q × Γ → Q × Γ × { L , R } Q\times\Gamma\rightarrow Q\times\Gamma\times\{L,R\} Q×Γ→Q×Γ×{L,R}(轉(zhuǎn)移函數(shù),L/R表示左移/右移)
q 0 ∈ Q q_0\in Q q0?∈Q:初始狀態(tài)
q a c c ∈ Q q_{acc}\in Q qacc?∈Q:停機(jī)接受狀態(tài)
q r e q ∈ Q q_{req}\in Q qreq?∈Q:停機(jī)拒絕狀態(tài), q a c c ≠ q r e j q_{acc}\neq q_{rej} qacc?=qrej?
單帶圖靈機(jī)的格局(序列的當(dāng)前狀態(tài)): u q a v uqav uqav
q q q:當(dāng)前狀態(tài)
u a v uav uav:當(dāng)前帶上的內(nèi)容
a a a:當(dāng)前的掃描符號(hào)
(即之前的序列 u u u|當(dāng)前的狀態(tài) q q q|當(dāng)前的掃描符號(hào) a a a|后面的序列 v v v)
eg:對(duì)于帶 101101111 101101111 101101111,狀態(tài) q 7 q_7 q7?正在掃描第五個(gè)字符 0 0 0,其格局為 1011 q 7 01111 1011q_701111 1011q7?01111
初始格局: q 0 w q_0w q0?w(w為輸入串)
接受格局: u q a c c a v uq_{acc}av uqacc?av
拒絕格局: u q r e j a v uq_{rej}av uqrej?av
停機(jī)格局: u q a c c a v / u q r e j a v uq_{acc}av/uq_{rej}av uqacc?av/uqrej?av
(圖靈機(jī)的計(jì)算結(jié)果只能是停機(jī)接受、停機(jī)拒絕、不停機(jī))
若 δ ( q i , b ) = ( q j , c , L ) \delta(q_i,b)=(q_j,c,L) δ(qi?,b)=(qj?,c,L)(L表示左移),則
u a q i b v uaq_ibv uaqi?bv產(chǎn)生 u q j a c v uq_jacv uqj?acv(將 b b b變?yōu)?span id="vxwlu0yf4" class="katex--inline"> c c c, q i q_i qi?變?yōu)?span id="vxwlu0yf4" class="katex--inline"> q j q_j qj?后左移)
q i b v q_ibv qi?bv產(chǎn)生 q j c v q_jcv qj?cv(已經(jīng)在帶最左端,不可再左移)
若 δ ( q i , b ) = ( q j , c , R ) \delta(q_i,b)=(q_j,c,R) δ(qi?,b)=(qj?,c,R)(R表示右移),則
u a q i b v uaq_ibv uaqi?bv產(chǎn)生 u a c q j v uacq_jv uacqj?v(因?yàn)?strong>帶一定可以繼續(xù)右移,所以不需要分情況)
如何判斷當(dāng)前狀態(tài)已經(jīng)在帶最左端:在當(dāng)前位置寫下某個(gè)特殊符號(hào),讓帶頭向左移動(dòng),若仍然檢測(cè)到該符號(hào)則說(shuō)明在最左端,否則恢復(fù)原來(lái)的符號(hào)。
圖靈可識(shí)別=遞歸可枚舉=計(jì)算可枚舉=半可判定=半可計(jì)算
圖靈可判定=遞歸=可解=能行=可判定=可計(jì)算
圖靈可識(shí)別 ≠ \neq =圖靈可判定!
圖靈機(jī)的等價(jià)變形
多帶圖靈機(jī)(同時(shí)多個(gè)紙帶)
δ : Q × Γ k → Q × Γ k × { L , R } k \delta:Q\times\Gamma^k\rightarrow Q\times\Gamma^k\times\{L,R\}^k δ:Q×Γk→Q×Γk×{L,R}k
δ : ( q i , a 1 , . . . , a k ) = ( q j , b 1 , . . . , b k , L / R , L / R , . . . , L / R ? k 個(gè) ) \delta:(q_i,a_1,...,a_k)=(q_j,b_1,...,b_k,\underbrace{L/R,L/R,...,L/R}_{k個(gè)}) δ:(qi?,a1?,...,ak?)=(qj?,b1?,...,bk?,k個(gè) L/R,L/R,...,L/R??)
多帶圖靈機(jī)可轉(zhuǎn)換為等價(jià)的單帶圖靈機(jī)!
圖靈可識(shí)別 ? \Leftrightarrow ?可用多帶圖靈機(jī)識(shí)別!
非確定性圖靈機(jī)(NTM)
在左移/右移的基礎(chǔ)上增加了“停止”狀態(tài) S S S
d e l t a : Q × Γ → P ( Q × Γ × { L , R , S } ) delta:Q\times\Gamma\rightarrow P(Q\times\Gamma\times\{L,R,S\}) delta:Q×Γ→P(Q×Γ×{L,R,S})
因此計(jì)算NTM格局的方式變?yōu)榱?strong>計(jì)算樹(擁有多個(gè)非確定性分支)
每個(gè)非確定性圖靈機(jī)(NTM)都有等價(jià)的確定性圖靈機(jī)(DTM)!
圖靈可識(shí)別 ? \Leftrightarrow ?可用非確定性圖靈機(jī)識(shí)別!
圖靈可判定 ? \Leftrightarrow ?可用非確定性圖靈機(jī)判定!
識(shí)別器:輸入 x x x,輸出 0 / 1 / ? 0/1/? 0/1/?(停機(jī)拒絕/停機(jī)接受/不停機(jī))
判定器:輸入 x x x,輸出 0 / 1 0/1 0/1(停機(jī)拒絕/停機(jī)接受,沒(méi)有不停機(jī))
轉(zhuǎn)換器:輸入 x x x,輸出 y y y(輸出一個(gè)串而非一位,通常用于計(jì)算函數(shù))
產(chǎn)生器:輸入 0 n 0^n 0n,輸出 x n x_n xn?(生成序列)
枚舉器:輸入 ε \varepsilon ε,輸出 x 1 , x 2 , x 3 , . . . x_1,x_2,x_3,... x1?,x2?,x3?,...(無(wú)輸入,無(wú)遺漏,無(wú)多余,無(wú)順序,可重復(fù))
圖靈可識(shí)別 ? \Leftrightarrow ?圖靈可枚舉!
圖靈機(jī)算法
對(duì)象編碼寫作< O 1 , O 2 , . . . , O k O_1,O_2,...,O_k O1?,O2?,...,Ok?>,表示對(duì)串 O 1 O 2 . . . O k O_1O_2...O_k O1?O2?...Ok?進(jìn)行一種編碼轉(zhuǎn)換。
eg:設(shè)定一種對(duì) 01 01 01串編碼的方式,將所有的字符重復(fù)出現(xiàn)1次,多個(gè)串拼接時(shí)用兩個(gè)不同的字符作為間隔符拼接。
x = 010 , y = 11 , x=010,y=11, x=010,y=11,< x , y x,y x,y> = 001100101111 =001100101111 =001100101111( 001100 ∣ 10 ∣ 1111 001100|10|1111 001100∣10∣1111)
遞歸定理
存在可計(jì)算函數(shù) q : Σ ? → Σ ? q:\Sigma^*\rightarrow\Sigma^* q:Σ?→Σ?, ? w \forall w ?w, q ( w ) q(w) q(w)是圖靈機(jī) P w P_w Pw?的描述,單帶圖靈機(jī) P w P_w Pw?打印出 w w w,然后停機(jī)。(一個(gè)函數(shù)如果可計(jì)算,則和圖靈機(jī)等價(jià)!)
自我復(fù)制機(jī):自己打印自己的圖靈機(jī)。 ? x , S E L F ( x ) = < S E L F > \forall x,SELF(x)=<SELF> ?x,SELF(x)=<SELF>(不斷地進(jìn)行自我復(fù)制)
遞歸定理:假設(shè)單帶圖靈機(jī) T T T有計(jì)算函數(shù) t : Σ ? × Σ ? → Σ ? t:\Sigma^*\times\Sigma^*\rightarrow\Sigma^* t:Σ?×Σ?→Σ?,則存在單帶自動(dòng)機(jī) R R R,其計(jì)算函數(shù) r : Σ ? × Σ ? → Σ ? r:\Sigma^*\times\Sigma^*\rightarrow\Sigma^* r:Σ?×Σ?→Σ?, ? w , r ( w ) = t ( \forall w,r(w)=t( ?w,r(w)=t(< R R R> , w ) ,w) ,w)
( T T T可以用 R R R來(lái)代替,從而實(shí)現(xiàn)遞歸運(yùn)算,將問(wèn)題轉(zhuǎn)化)
圖靈機(jī)接受性問(wèn)題
定義 A T M = { < M , w > ∣ 圖靈機(jī) M 能接受串 w } A_{TM}=\{<M,w>|圖靈機(jī)M能接受串w\} ATM?={<M,w>∣圖靈機(jī)M能接受串w}
一個(gè)圖靈機(jī)能接受某些給定的串構(gòu)成的語(yǔ)言, 是圖靈可識(shí)別的!是不可判定的!
通用機(jī):存在一個(gè)固定的圖靈機(jī) U U U,對(duì)于任意圖靈機(jī) M M M與輸入 w w w, U ( < M , w > ) = M ( w ) U(<M,w>)=M(w) U(<M,w>)=M(w)
圖靈機(jī)極小性問(wèn)題
極小圖靈機(jī):對(duì)于圖靈機(jī) M M M,其描述的字符< M M M>是最短的。
(因?yàn)閳D靈機(jī)有無(wú)窮多種,每種都有等價(jià)的極小圖靈機(jī),因此 M I N T M MIN_{TM} MINTM?是無(wú)窮語(yǔ)言。)
M I N T M MIN_{TM} MINTM?不是圖靈可識(shí)別!
不動(dòng)點(diǎn)(x=f(x))
遞歸定理的不動(dòng)點(diǎn)形式:對(duì)于 ? \forall ?可計(jì)算函數(shù) t : Σ ? → Σ ? t:\Sigma^*\rightarrow\Sigma^* t:Σ?→Σ?,存在一個(gè)圖靈機(jī) F F F,使得 t ( < F > ) t(<F>) t(<F>)描述一個(gè)與 F F F等價(jià)的圖靈機(jī)。
四、可計(jì)算問(wèn)題/不可計(jì)算問(wèn)題
算法可解:存在處處停機(jī)的等價(jià)圖靈機(jī)。
對(duì)于正則語(yǔ)言的可判定問(wèn)題
A D F A = { < B , w > ∣ D F A B 接受串 w } A_{DFA}=\{<B,w>|DFA\ B接受串w\} ADFA?={<B,w>∣DFA?B接受串w}是可判定語(yǔ)言。
同理 A N F A A_{NFA} ANFA?是可判定語(yǔ)言。
A R E X = { < R , w > ∣ 正則表達(dá)式? R 派生串 w } A_{REX}=\{<R,w>|正則表達(dá)式\ R派生串w\} AREX?={<R,w>∣正則表達(dá)式?R派生串w}是可判定語(yǔ)言。
(因?yàn)镈FA、NFA、REX提供給圖靈機(jī)的都是等價(jià)的,圖靈機(jī)能在這三種之間進(jìn)行轉(zhuǎn)換)
(DFA空性) E D F A = { < A > ∣ A 是 D F A 且 L ( A ) = ? } E_{DFA}=\{<A>|A是DFA且L(A)=\empty\} EDFA?={<A>∣A是DFA且L(A)=?}是可判定語(yǔ)言
(DFA等價(jià)性) E Q D F A = { < A , B > ∣ A 與 B 都是 D F A 且 L ( A ) = L ( B ) } EQ_{DFA}=\{<A,B>|A與B都是DFA且L(A)=L(B)\} EQDFA?={<A,B>∣A與B都是DFA且L(A)=L(B)}是可判定語(yǔ)言。
關(guān)于上下文無(wú)關(guān)語(yǔ)言(CFL)的可判定問(wèn)題
每一個(gè)CFL是可判定的!
A C F G = { < G , w > ∣ C F G G 派生串 w } A_{CFG}=\{<G,w>|CFG\ G派生串w\} ACFG?={<G,w>∣CFG?G派生串w}是可判定語(yǔ)言。
(CFG空性) E C F G = { < G > ∣ C F G G , L ( G ) = ? } E_{CFG}=\{<G>|CFG\ G,L(G)=\emptyset\} ECFG?={<G>∣CFG?G,L(G)=?}是可判定語(yǔ)言。
(CFG等價(jià)性) E Q C F G = { < G , H > ∣ C F G G , H , L ( G ) = L ( H ) } EQ_{CFG}=\{<G,H>|CFG\ G,H,L(G)=L(H)\} EQCFG?={<G,H>∣CFG?G,H,L(G)=L(H)}是不可判定語(yǔ)言!
不可計(jì)算問(wèn)題
有理數(shù)集可數(shù),實(shí)數(shù)集不可數(shù)!
用對(duì)角化方法證明不可計(jì)算問(wèn)題
對(duì)角化方法:在判定結(jié)果圖上構(gòu)造一個(gè)非圖靈機(jī)后觀察對(duì)角線上的判定結(jié)果。
eg:定義 A T M = { < M , w > ∣ 圖靈機(jī) M 能接受串 w } A_{TM}=\{<M,w>|圖靈機(jī)M能接受串w\} ATM?={<M,w>∣圖靈機(jī)M能接受串w},
證明: A T M A_{TM} ATM?不可判定。
證:
那只需用對(duì)角化法證明 D T M D_{TM} DTM?不可判定。
假設(shè)存在圖靈機(jī) H H H可判定 A T M A_{TM} ATM?,即:
H ( < M > , w ) = { 接受 M 接受 w 拒絕 M 不接受 w H(<M>,w)=\left\{\begin{array}{ll} 接受 & M接受w \\ 拒絕 & M不接受w\end{array}\right. H(<M>,w)={接受拒絕?M接受wM不接受w?
構(gòu)造 D D D=“對(duì)于輸入< M M M>, M M M是圖靈機(jī)”
在輸入" M , < M > M,<M> M,<M>"上運(yùn)行 H H H,如果 H H H接受則拒絕 D D D,反之接受,即:
D ( < M > ) = { 接受 M 不接受 < M > 拒絕 M 接受 < M > D(<M>)=\left\{\begin{array}{ll} 接受 & M不接受<M> \\ 拒絕 & M接受<M>\end{array}\right. D(<M>)={接受拒絕?M不接受<M>M接受<M>?
(M串是圖靈機(jī)自己的編碼,即所有w中的一部分,即 D T M D_{TM} DTM?是 A T M A_{TM} ATM?的特例。)
不妨令 M = D M=D M=D,即:
D ( < D > ) = { 接受 D 不接受 < D > 拒絕 D 接受 < D > D(<D>)=\left\{\begin{array}{ll} 接受 & D不接受<D> \\ 拒絕 & D接受<D>\end{array}\right. D(<D>)={接受拒絕?D不接受<D>D接受<D>?
顯然矛盾,故原命題得證。
如圖所示,對(duì)于 H ( < M , < M > > ) H(<M,<M>>) H(<M,<M>>), D D D的結(jié)果是反過(guò)來(lái)的,而 D < D > D<D> D<D>上的結(jié)果卻并不是全部接受。
非圖靈可識(shí)別語(yǔ)言
對(duì)于 A A A和 A A A的補(bǔ)集 A c / A  ̄ = Σ ? ? A A^c/\overline{A}=\Sigma^*-A Ac/A=Σ??A,A可判定 ? \Leftrightarrow ?A與 A c A^c Ac圖靈可識(shí)別。(可判定語(yǔ)言對(duì)布爾運(yùn)算封閉)
歸約法
(圖靈機(jī)的停機(jī)問(wèn)題) H A L T T M = { < M , w > ∣ 圖靈機(jī) M 在輸入 w 上停機(jī) } HALT_{TM}=\{<M,w>|圖靈機(jī)M在輸入w上停機(jī)\} HALTTM?={<M,w>∣圖靈機(jī)M在輸入w上停機(jī)}是不可判定的。
(圖靈機(jī)空性問(wèn)題) E T M = { < M > ∣ M 是圖靈機(jī)且 L ( M ) = ? } E_{TM}=\{<M>|M是圖靈機(jī)且L(M)=\emptyset \} ETM?={<M>∣M是圖靈機(jī)且L(M)=?}是不可判定的。
(圖靈機(jī)正則性問(wèn)題) R E G U L A R T M = { < M > ∣ M 為圖靈機(jī)且 L ( M ) 正則 } REGULAR_{TM}=\{<M>|M為圖靈機(jī)且L(M)正則\} REGULARTM?={<M>∣M為圖靈機(jī)且L(M)正則}是不可判定的。
(圖靈機(jī)等價(jià)性問(wèn)題) E Q T M = { < M 1 , M 2 > ∣ M 1 和 M 2 是圖靈機(jī)且 L ( M 1 ) = L ( M 2 ) } EQ_{TM}=\{<M_1,M_2>|M_1和M_2是圖靈機(jī)且L(M_1)=L(M_2)\} EQTM?={<M1?,M2?>∣M1?和M2?是圖靈機(jī)且L(M1?)=L(M2?)}是不可判定的。