跳转至

《计算模型导引》第五章习题

8

习题5.8

设机器 \(\boxed{\text{f}_1}\) 计算函数 \(f_1\) ,机器 \(\boxed{\text{f}_2}\) 计算函数 \(f_2\) ,这里 \(f_1,f_2\) 为一元数论全函数。构造机器 \(\boxed{\text{f}}\) 计算函数 \(f(x)=f_1(x)+f_2(x)\) .

解:

先 copy 一个 \(\overline{x}\) ,利用 \(f_1\) 计算结果,使用 compress 和 shiftl 得到 \(0\underset{\uparrow}{\overline{x}}0\overline{f_1(x)}\)

再 copy 一个 \(\overline{x}\) ,利用 \(f_2\) 计算结果。删掉第一个 \(\overline{x}\) 并将两个结果拼起来。

\[ \begin{align} & 0\underset{\uparrow}{\overline{x}}0\cdots \notag\\\\ \boxed{\text{copy}_1}\twoheadrightarrow & 0\overline{x}0\underset{\uparrow}{\overline{x}}0\cdots \notag\\\\ \boxed{\text{f}_1}\twoheadrightarrow & 0\overline{x}0^m\underset{\uparrow}{\overline{f_1(x)}}0\cdots \notag\\\\ \boxed{\text{compress}}\twoheadrightarrow & 0\overline{x}0\underset{\uparrow}{\overline{f_1(x)}}0\cdots \notag\\\\ \boxed{\text{shiftl}}\twoheadrightarrow & 0\underset{\uparrow}{\overline{x}}0\overline{f_1(x)}0\cdots \notag\\\\ \boxed{\text{copy}_2}\twoheadrightarrow & 0\overline{x}0\underset{\uparrow}{\overline{f_1(x)}}0\overline{x}0\cdots \notag\\\\ \boxed{\text{shiftr}}\twoheadrightarrow & 0\overline{x}0\overline{f_1(x)}0\underset{\uparrow}{\overline{x}}0\cdots \notag\\\\ \boxed{\text{f}_2}\twoheadrightarrow & 0\overline{x}0\overline{f_1(x)}0^n\underset{\uparrow}{\overline{f_2(x)}}0\cdots \notag\\\\ \boxed{\text{compress}}\twoheadrightarrow & 0\overline{x}0\overline{f_1(x)}0\underset{\uparrow}{\overline{f_2(x)}}0\cdots \notag\\\\ \boxed{\text{shiftl}}^2\twoheadrightarrow & 0\underset{\uparrow}{\overline{x}}0\overline{f_1(x)}0\overline{f_2(x)}0\cdots \notag\\\\ \boxed{\text{erase}}\twoheadrightarrow & 0^l\underset{\uparrow}{\overline{f_1(x)}}0\overline{f_2(x)}0\cdots \notag\\\\ \boxed{\text{add}}\twoheadrightarrow & 0^l\underset{\uparrow}{\overline{f(x)}}0\cdots \notag \end{align} \]

\[ \begin{align} \boxed{\text{f}} &= \boxed{\text{copy}_1} \Rightarrow \boxed{\text{f}_1} \Rightarrow \boxed{\text{compress}} \Rightarrow \boxed{\text{shiftl}} \\ & \Rightarrow \boxed{\text{copy}_2} \Rightarrow \boxed{\text{shiftr}} \Rightarrow \boxed{\text{f}_2} \Rightarrow \boxed{\text{compress}} \Rightarrow \boxed{\text{shiftl}}^2 \\ & \Rightarrow \boxed{\text{erase}} \Rightarrow \boxed{\text{add}} \end{align} \]

9

习题5.9

\(f(x)=h(g_1(x), g_2(x), g_3(x))\), 试由机器 \(\boxed{\text{g}_1}\), \(\boxed{\text{g}_2}\), \(\boxed{\text{g}_3}\)\(\boxed{\text{h}}\) 构造机器 \(\boxed{\text{f}}\) .

解:

先 copy 一个 \(\overline{x}\) ,利用 \(g_1\) 计算结果,使用 compress 和 shiftl 得到 \(0\underset{\uparrow}{\overline{x}}0\overline{g_1(x)}\)

copy 一个 \(\overline{x}\) ,利用 \(g_2\) 计算结果,使用 compress 和 shiftl 得到 \(0\underset{\uparrow}{\overline{x}}0\overline{g_1(x)}0\overline{g_2(x)}\)

copy 一个 \(\overline{x}\) ,利用 \(g_3\) 计算结果,使用 compress 和 shiftl 得到 \(0\underset{\uparrow}{\overline{x}}0\overline{g_1(x)}0\overline{g_2(x)}0\overline{g_3(x)}\)

擦除最左边的 \(\overline{x}\) ,利用 \(h\) 计算结果。

\[ \begin{align} \boxed{\text{f}} &= \boxed{\text{copy}_1} \Rightarrow \boxed{\text{g}_1} \Rightarrow \boxed{\text{compress}} \Rightarrow \boxed{\text{shiftl}} \\ & \Rightarrow \boxed{\text{copy}_2} \Rightarrow \boxed{\text{shiftr}} \Rightarrow \boxed{\text{g}_2} \Rightarrow \boxed{\text{compress}} \Rightarrow \boxed{\text{shiftl}}^2 \\ & \Rightarrow \boxed{\text{copy}_3} \Rightarrow \boxed{\text{shiftr}}^2 \Rightarrow \boxed{\text{g}_3} \Rightarrow \boxed{\text{compress}} \Rightarrow \boxed{\text{shiftl}}^3 \\ & \Rightarrow \boxed{\text{erase}} \Rightarrow \boxed{\text{h}} \end{align} \]

10

习题5.10

\(f:\mathbb{N}\rightarrow\mathbb{N}\) 定义如下: $$ \begin{align} f(0) &= 0,\\ f(x+1) &= g(f(x)). \end{align} $$ 证明:若 \(g\) 为Turing-可计算,则 \(f\) 为Turing-可计算。

证:

参考定理5.14的证明。我们只需要在5.14的证明的基础上,做一个预处理,添加一个输入 \(\overline{0}\) 即可。

构造机器 \(M_3\) 实现添加输入 \(\overline{0}\)

0 1
1 0R2 1R1
2 1L3
3 0L4
4 0R5 1L4

按照定理5.14的证明构造机器 \(\boxed{f'}\)

注意

在作业或考试中,这里需补充 \(\boxed{f'}\) 的完整构造过程。

\[ \begin{align} f'(0, 0) &= 0,\\\\ f'(x+1, 0) &= g(f'(x, 0)). \end{align} \]

最后结果为 \(M_3 \Rightarrow \boxed{f'}\)

11

习题5.11

构造机器计算函数 \(f(x,y)=x \dot- y\).

解:

分情况处理:

\[ 0 \dot- y = 0 \]
\[ x \dot- 0 = x \]
\[ (x+1) \dot- (y+1) = x \dot- y \]
0 1 解释
1 0R2 减少一个 \(\overline x\)
2 0R3 1R4 若为0,则 \(x=0\),进入状态3;否则 \(x>0\),进入状态4
3 1Ou 0R3 擦除 \(\overline y\),添加 \(\overline 0\) 作为结果,停机
4 0R5 1R4 右移过 \(\overline x\)
5 0R5 0R6 右移过若干0,到达 \(\overline y\) ,减小一个 \(\overline y\)
6 0L7 1L9 若为0,则 \(y=0\),进入状态7;否则 \(y>0\),进入状态9
7 0L7 1L8 左移过若干0,到 \(\overline x\) 右侧末端
8 1Ov 1L8 左移过 \(\overline x\),增加一个 \(\overline x\),作为结果停机
9 0L9 1L10 左移过若干0,到 \(\overline x\) 右侧末端
10 0R1 1L10 左移到 \(\overline x\),进入状态1,继续循环

12

习题5.12

证明:\(Even=\{2x:x\in\mathbb{N}\}\) 是Turing-可计算的。

解:

构造机器 \(E\) 满足:

\(E|1:0\underset{\uparrow}{1^{2x+1}}0\cdots \twoheadrightarrow u:0\cdots 0\underset{\uparrow}{1}0\cdots\)

\(E|1:0\underset{\uparrow}{1^{2x}}0\cdots \twoheadrightarrow u:0\cdots 0\underset{\uparrow}{1}10\cdots\)

0 1
1 1L3 0R2
2 1O3 0R1
3 1O3

13

习题5.13

证明:\(S=\{a_1,a_2,\cdots,a_k\}\) 是Turing-可计算的。

解:

\(S\) 的特征函数为 \(\chi_{S}\)

\[ f(x) = N(x \ddot- a_1) + N(x \ddot- a_2) + \cdots + N(x \ddot- a_k) \]

显然 \(f\in\mathcal{GRF}\) ,由定理5.18,\(f\) 是Turing-可计算的。

14

习题5.14

\(f:\mathbb{N}\rightarrow\mathbb{N}\) 是Turing-可计算的,构造机器 \(M\) 使其输出 \(f\) 的最小零点。

解:

这里空白的地方太小,写不下。请听习题课讲解。