5 过程与文法

5.1 半Thue过程

  1. Q: \(\Rightarrow\)是部分函数吗?
    A: 一般来说,合法的结果可能不唯一。如果做一定人为约定(比如替换第一个出现的待考察字符串)则是。
  2. Q: \(\Rightarrow\)\(\mathop \Rightarrow\limits^*\)之间有何蕴涵关系?
    A: 互不蕴涵。请特别注意\(u=u_1\Rightarrow u_2\cdots\)中,如果只看第一个等号,则根据定义有\(u\mathop \Rightarrow\limits^* u\)

5.2 用半Thue过程模拟Turing机

  1. Q: 用半Thue过程模拟Turing机(NTM)时,新增几个字符进入字母表?分别有何含义?
    A: \(h\)作为Post字左右边界,作用是保持字符串有限长(如果越界则\(s_ih\)变为\(s_i s_0h\)这样)。
    两个新状态(可以称为\(q_{n+1},q_0\),但实际上你也可称为\(q_{toRight},q_{toLeft}\),分别指的是停机后让读写头“碰到”右边\(h\)和左边\(h\)
  2. Q: 产生式的“分组”使得容易说明派生出\(hq_0 h\)的一个必要条件是()派生出含有\(q_{n+1}\)的字符串,而进一步的一个必要条件是NTM()。
    反之,充分性:如果TM接受了,那么根据前面的各组产生式,一定能构造一个从()到()的()。这就证明了\(hq_1 s_0 xh\)()\(h q_0 h\)等价于()。
    A: \(hq_1 s_0 xh\),(至少存在一条计算路径)接受停机(注:需要关注由于\(q\)只有一个,故派生过程中每一步都唯一与NTM一条四元组对应且效果与NTM的一步执行等同)
    \(hq_1 s_0 xh\)\(h q_0 h\),派生,\(\mathop \Rightarrow \limits^*_{\Sigma(\mathscr M)}\)\(x\)被TM \(\mathscr M\)接受

5.3 文法

  1. Q: 短语结构文法\(G\)\(\Gamma\)的字母表是什么?
    A: \(V\cup T\)(无交并)
  2. Q: 相比上节,用文法模拟NTM又需要什么新字符?
    A: S表示起始符(一来就派生了\(hq_0 h\)),\(p\)\(hq_1 s_0\)派生得到,表示生成了某个TM接受的字符串,其作用是不断向右,把多余的\(h\)去掉。
    此时可以证明能被NTM接受的也能被文法生成。
  3. Q: 接上,反过来论证时需要注意只有一条产生式()不生成()中的字符,所以能被文法生成的字符串一定能生成字符(),进而一定应用过产生式()\(\to p\)且在首次应用该式前除了第一次应用\(S\to hq_0 h\)外用的全都是()中的产生式
    A: \(ph \to \epsilon\)\(V\)\(p\)\(hq_1s_0\)\(\Omega(\mathscr M)\)
  4. Q: 之前已知部分递归函数也部分可计算,(由\(\mathscr S\))部分可计算函数也Turing部分可计算,Turing部分可计算函数的定义域是()(原因是()),故该集合可被文法生成。
    现在最后一步:存在()函数使得可被文法生成的语言恰为其()。这样就构成了环。
    其中最后一步用到了极小化运算(递归相比原始递归多出的核心操作,隐藏着“无穷”次运算的可能性)的地方是:()。
    A: 能被TM(NTM或DTM)接受的语言,根据Turing机计算的定义知道有且仅有定义域内的输入会被接受
    部分递归,定义域
    依次枚举所有可能的派生对应的哥德尔编码\([u_1,\cdots,u_m,1]\)
    注:末尾的1是“终止符”,为了避免空串引起混乱。
    注:回忆TM和\(\mathscr S\)相互模拟时有“类型转换”。这里也有,因为文法的“类型”是字符串,递归函数的“类型”是自然数。

5.4 再论递归可枚举集

  1. Q: 回忆上节3.中“极小化运算”,这说明了若待考察\(B\)非空,则存在一个二元()谓词\(R(x,y)\),使得任意元素\(x\in B\)等价于()。
    A: 原始递归,\(\exists y,R(x,y)\)
  2. Q: 接上,由于\(R(x,y)\)原始递归,考察\(f(x)=l(x),当R(l(x),r(x))\).
    故存在值域恰为()的()以及值域恰为()的()。
    A: \(B\),原始递归函数,\(B\),部分可计算函数
  3. Q: 为了构成论证的“环”(cycle,不是ring),最后需要证明若某部分可计算函数()(另一个可以放在这的条件:若某可计算函数值域为\(B\)),则\(B\)非空r.e.
    证明思路是:构造()层循环遍历所有可能的“\(z\)作为输入运行了\(T\)步内停机得到\(f(z)=x\)
    A: 值域为\(B\)(且\(B\)非空),2
  4. Q: 2.3.构成的“环”一个应用:\(\{t|\Phi_t(x)是全函数\}\)不r.e.
    否则由于该集合是原始递归函数\(g\)的值域,故()一定\(\downarrow\),是可计算函数。接着用对角线方法如何证明?
    其实这也是一个()定理特例。
    A: \(\Phi(x,g(x))\)
    考察\(f(x)=\Phi(x,g(x))+1\)可计算则其对任意\(x_0\)\(x=x_0\)一点处与\(\Phi(x,g(x_0))\)函数值不同,\(f\)编码不为\(g(x_0)\)\(f\)不在“表中”(不在\(g\)值域中),和\(f\)可计算矛盾。
    莱斯

5.5 部分递归函数

  1. Q: 上节说到部分可计算函数的()是r.e.,此处特别考察了部分可计算函数\(\langle x,g(x)\rangle\),其目的是:对于r.e.的集合\(B\),存在二元原始递归谓词\(R\)使得(),从而对指定\(x\)可以枚举一切自然数并让\(R\)判断该自然数\(n\)是否满足\(R(\langle x,l(n)\rangle, r(n))\)。这个过程有穷则(),无穷则(),结论是()。
    A: 值域,\(x\in B\Leftrightarrow \exists y R(x,y)\)\(g(x)=l(n)\)\(g(x)\uparrow\)\(l(min_n(R(\langle x,l(n)\rangle, r(n))))=g(x)\)
  2. Q: 用自然语言描述上述结论的本质:在5.4节已经证明了可以用原始递归谓词判定一个字符串\(A\)和一个字符串序列\(B\)(用哥德尔编码)是否满足(),即枚举一切自然数看能否作为()从而判断\(x\)是否可被文法生成。
    本节0.则相当于枚举一切自然数对,看能否(),并在()时取该对中的第()个分量作为结果。
    A: \(A\)是某指定的文法\(G\)的派生且派生的过程用\(B\)表示,派生\(x\)的过程(的哥德尔编码)
    第一个分量是\(g(x)\)\(\langle x,g(x)\rangle\)可以被第二个分量表示的派生过程派生(其中所采用的文法是能生成一切合法\(\langle x,g(x)\rangle\)的文法),找到这样的自然数对,1
  3. Q: 对于多元函数,重新叙述1.的第二段。
    A:
    枚举一切自然数对,看能否满足:
    第一个分量是\(f(x_1,\cdots,x_n)\)\(\langle [x_1,\cdots,x_n], f(x_1,\cdots,x_n)\rangle\)可以被第二个分量表示的派生过程派生(其中所采用的文法是能生成一切合法\(\langle [x_1,\cdots,x_n], f(x_1,\cdots,x_n)\rangle\)的文法),并在找到这样的自然数对时取该对中的第1个分量作为结果。
  4. Q: 用本篇中5.3题3.重新审视本节。
    A: 部分可计算函数\(f(x_1,\cdots)\)诱导\(F(x):=f((x)_1,\cdots)\)部分可计算,从而F值域是某部分可计算函数定义域,F值域是某Turing机定义域,F值域被某TM接受,F值域可被文法生成,\(f=l(min_t DERIV(UPCHANGE(\langle x,l(t)\rangle),r(t)))\)为部分递归函数(当然,f部分递归就部分可计算,这样形成了环)

5.6 再论Church-Turing论题

  1. Q: 确定性和有限终止性说明之前的哪些计算模型并不能直接体现实际中的算法?
    A: 确定性:文法和NTM不行。
    有限终止性:不能保证总停机的DTM、不能保证终止的\(\mathscr S\)程序、含有不能保证找得到值的极小化运算的递归函数都不行。
  2. Q: 接上,Church-Turing论题欲表达的“可计算”直观上相当于存在()TM或()程序与之对应。
    A: 总停机的确定型,总终止计算的\(\mathscr S\)

5 过程与文法 习题

  1. Q: 考察课后习题5.1中\(aA\to ab\),习题5.2中\(AD\to AC\)的共同点,与TM相联系。
    A: 都有一些东西始终在边上(如\(a^n,A\)等),然后某些特定字符“靠边”了就做某固定操作(被替换成其它字符),如果在观念上把替换前后的该字符看成具有同一个“人格”,那么“这个人”相当于某种意义上的“图灵机指针”,其可“转换状态”,从而完成多种不同操作。
    举例:5.2中\(C,D,E\)类似于三种“不同状态”,\(C\)只能翻倍复制\(a\)\(D\)只能自己移动直至最左侧,\(E\)只能自己移动直至最左侧,等等。
  2. Q: 接上,构造5.3(1)的文法,其中在\(S\mathop\Rightarrow\limits^* Lwx^R\)(其中\(x\)\(w\)\(a\)\(A\)\(b\)\(B\)产生的)之后,运用\(x^R\)每个字符都具有“独立人格”的思想方法。
    A: 提示:每个\(A,B\)都具有独立人格,自己管理自己状态,不需被动依赖外部的图灵机指针干涉。例如:认为\(A,B\)表示“未完成”状态,可以有\(aA\to Aa,aB\to Ba\),即\(A,B\)“主动前往左边”,且互不越过。
    一旦到达\(L\)\(A\)主动“化为了”\(a\).(即\(LA\to La\)
  3. Q: 5.3(2)基本思想是先生成\(n\)\(A\)\(n\)\(B\),即得到\(LB^nA^n R\),再针对每一对()生成一个\(a\). 也可以看作每个\(B\)都具有人格,其自动扫描右侧内容,从而()。
    A: \(A,B\)
    针对每个遇到的\(A\)生成一个\(a\),忽略一切\(a\),且到最右侧即自行消失(具体地,\(BA\to AaB,Ba\to aB, BR\to R\)
  4. Q: 本篇博客5.3的题1.2.提到了“反之”,这里的“双向成立”指的就是文法(半Thue过程)和NTM互相模拟吗?
    A: 不是。这个“双向”只是文法模拟NTM时,构造出的文法生成的语言确实等价于NTM接受的语言。
    为了用NTM模拟文法,可以利用NTM的“猜想”能力,猜下个字符是某个产生式右侧字符串的开端。(注意要反向产生)
  5. Q: 由值域是()的可计算函数可以诱导出值域是一个子无穷集且具有()良好性质的可计算函数,可以说明()具有()的递归子集。
    A: 无穷集,单调增(严格),无穷r.e.集,无穷