6 不可判定的問題
6.1 判定問題
- Q: \(HALT(x,y)\)對應什么單參數判定問題?
A:
\(\Pi = (N,Y_\Pi)\)
\(Y_\Pi = \{x|HALT(l(x),r(x))\}\)
注:一元謂詞\(HALT(l(x),r(x))\)不可計算,則\(\Pi\)不可判定。 - Q: 記號\(D_\Pi, P_\Pi, Y_\Pi\)分別是什么?
A: \(D_\Pi\)是待考察判定問題的參數取值范圍(“論域”)
\(Y_\Pi\)是待考察判定問題應當判定為是的元素集合。
\(P_\Pi\)是\(\Pi\)誘導出的\(N\)上謂詞,\(P_\Pi(x)\Leftrightarrow e^{-1}(x)\in Y_\Pi\),其中\(e^{-1}\)是解碼。我們一般認為編解碼是雙射。 - Q: \(I\in Y_{\Pi_1}\Leftrightarrow f(I)\in Y_{\Pi_2}\)是雙向,那歸約關系為啥不對稱?
A: \(f\)可計算,但\(f\)未必可逆。想判定\(I\in Y_{\Pi_1}\)時,可以能行計算出\(f(I)\),然而反過來不一定可以能行計算。
所以說此時\(\Pi_2\)解決了\(\Pi_1\)也解決了,\(\Pi_1\)歸約到\(\Pi_2\) - Q: 判定某程序計算的函數是否是全函數為何不是半可判定?
A: 如果其對應整數集\(A\) r.e.則\(A\)是某可計算函數\(g\)值域,則\(\Phi_{g(x)}(y)\)為全函數,且所有的\(g(x)\)對應了所有的全函數。
設\(f(x)=\Phi(x,g(x))+1\)則\(f\)可計算,且\(f(x)\ne \Phi_{g(x)}(x)\),\(f\)與任意\(\Phi_{g(x)}\)都不同,矛盾。 - Q: 本章的歸約和平時做題常見的歸約有什么異同?
A: 平時是未知歸約到可解。現在是不可判定歸約到未知。
本質是“逆否命題”,即A歸約到B,A不可判定則B不可判定,B可判定則A可判定。
6.2 Turing機的停機問題
- Q: 考察的是不指定接收狀態的TM. DTM \(\mathscr M\)的停機問題一定不可判定嗎?
A: 不一定。注意某個DTM的停機問題是以格局作為單參數的。 - Q: (一般的)TM停機問題如果可判定了,那么存在一個\(f\)是(),使得()通過\(f\)歸約到此問題,矛盾。
A: 把字符串\(x\)變為格局\(q_1 Bx\),判斷任意(自然數對應的)r.e.語言中是否有任意字符串。 - Q: 用歸約思想考察:“任給TM \(\mathscr M\)和格局\(\sigma\),從此開始是否可能到達狀態\(q\)?”不可判定。
A: 對TM \(\mathscr M\)和輸入\(x\),能行地計算初始格局\(q_1 Bx\),並能行地計算“誘導出的”新TM \(\mathscr M'\)(新增唯一停機狀態\(q_f\)且增加一系列\(qssq_f\)四元組)
則\(\mathscr M\)對\(x\)停機等價於\(\mathscr M'\)對\(q_1 Bx\)開始能達到狀態\(q_f\).
6.3 字問題和Post對應問題
- Q: 無論對於\(\Sigma(\mathscr M)\)還是\(\Omega(\mathscr M)\),都可以把()歸約到文法的字問題。
A: \(\mathscr M\)的停機問題(判斷某字符串是否屬於\(\mathscr M\)接受的語言) - Q: 引入特殊符號\([,],*,\tilde *\)作用是什么?假設存在奇長度派生的作用是什么?
A:
\([,]\):確保兩端是指定有序對(“骨牌”)(至少,有合題意的子串的兩端是),從而有\(u*,\tilde *v\)結構,以確保\(u\)為起點,\(v\)為終點.
\(*,\tilde *\):結合兩端出現的\(*,\tilde *\),歸納地依次出現\((*,\tilde *),(\tilde *,*)\),從而顯式分割整個字符串。
奇長度派生:確保是\(\tilde * v\)而不是相反的\(*\tilde v\),避免分類討論。 - Q: 歸約過程中,對於證明原字問題有解等價於新的Post對應問題有解的兩個方向,解\(w\)對應的派生有什么不同?
A: 提示:一個方向是通過已知的奇長度派生手動構造解\(w\),每個“分割段”恰好對應派生的一步。
另一個方向中對於任何(“剝開了兩側多余”)的解,每個分割段可能對應使用多個產生式,對應派生的若干步(若干個\(g_i\)各自變成\(h_i\),具體可能是0或1或多個)。只要使用的“區間”“互不重合”即可。
6.4 有關文法的不可判定問題
- Q: 本節和上節有何區別和聯系?
A: 提示:本質上是利用了想要派生出某些字符串的必要條件是能派生出某某(或:某字問題有解) - Q: 如何證明“任給一個(已知\(L(G)\)為有限的)文法\(G\),\(L(G)\)是否為奇數個元素的集合?”不可判定?
A: 提示:\(T=\{a,b\}\),\(S\to hq_1 s_0 uh, hq_0 h\to b, S\to a\).
6.5 一階邏輯中的判定問題
- Q: 對於本節中構造出的形式系統,為什么要求論域不能有空串,Thue過程左右側也都不能有空串?
A: 論域有空串則可能會“不斷拼接空串”,造成不便。因為論域沒有空串,\(g_i^\#,h_i^\#\)要作為謂詞的論據也不能有空串。 - Q: 公理中哪些是一般半群的性質?哪些是特有的?
A: 注意出現了等價關系的反身性(1)、傳遞性(2),半群的結合律(4,5),半群中運算良定義(3)。
\(5+i\)則對應了某個特別的Thue過程,且\(^\#\)記號(連續復合二元謂詞表示序列)也是具體的知識。
6 不可判定的問題 習題
- Q: 存在某半Thue系統,“任給字符串是否是定理”不可判定:一種證法是考察特例\(u_0=\)(),從而可以利用上()。
A: S,之前有關文法的不可判定問題結論
特別注意這個“特例”是原問題的子問題,而有一不可判定的問題可以歸約到此子問題。 - Q: 對只包含一個產生式的半Thue過程字問題,通過()容易看出停機需要的時間是(潛在)無限長的,故不能直接(用NTM等)模擬解決。必須通過某種更本質的考察。
我們利用算法正確性證明中常用的“考察嚴格單調函數”思想。例如:非負函數嚴格單調減,減至0時一定不能繼續派生,這就說明一定停機。
首先,若\(g,h\)長度不等則至少有一側(正或逆)使得字符串長度()。
其次,若\(g,h\)長度相等但至少有一個\(g\)中的字符不在(),則()。
再次,若\(g,h\)只是重排,但有某字符\(a\)的(),則()。
A: a通過\(a\to aa\)生成\(a^n\)
每次應用產生式時至少減1
\(h\)中,每次應用產生式時該字符的數量至少減1
在\(g\)各個出現位置形成的元組不同於\(h\)中的,每次應用產生式時\(a\)在全字符串中的各個出現位置形成的元組單調變化
注:課本做法也行:關鍵是整個派生過程中(不重復)出現的字符串長度已知為\(|u|\)至\(|v|\)間的整數(含端點),總的可能性有限。 - Q: 如何將一般的Post對應問題歸約到只有2個符號?
A: 二進制編碼 - Q: 習題6.7用字問題歸約直接還是對應問題歸約直接?
A: 對應問題。設想半Thue過程產生式\(aa\to \epsilon\)則\(a\)不能派生\(\epsilon\)但\(aa\)能,這說明不是“同態”。