4.8

Частично рекурсивные функции

[11/27%]
Показать
LaTeX
Пример 4.39

Покажите, что если множество AA можно представить в виде A={n(m)R(n,m)}A=\left\{ n \mid (\exists m) R(n, m)\right\} для некоторого рекурсивного предиката RR, то AA является р.п. Как следствие,

?
(a)

F={nn2,(a,b,c1)an+bn=cn}F=\left\{ n \mid n \geq 2,(\exists a, b, c \geq 1) a^{n}+b^{n}=c^{n}\right\} является р.п. 1

Footnotes

  1. Знаменитая Великая теорема Ферма утверждает, что F={2}F=\left\{ 2\right\}, и, значит, FF на самом деле рекурсивно.

(b)

Для любой рекурсивной функции ff множество Jf={nn1,(m)f(m)(n)=1}J_{f}=\left\{ n \mid n \geq 1,(\exists m) f^{(m)}(n)=1\right\} является р.п. 1

Footnotes

  1. Пусть f(n)=3n+1f(n)=3 n+1, если nn нечётно, и f(n)=n/2f(n)=n / 2, если nn чётно. Гипотеза (3n+1)(3n+1) утверждает, что JfJ_{f} состоит из всех положительных целых чисел.

Пример 4.41

Пусть

?
(a)

Σ={1,2,,8,9,X}\Sigma =\left\{ 1,2, \ldots , 8,9, X\right\} с порядком 1289X1 \prec 2 \prec \cdots \prec 8 \prec 9 \prec X.

(b)

Σ={0,1}\Sigma =\left\{ 0,1\right\} и 010 \prec 1.

Исследуйте ι(n)\iota (n).

Пример 4.42

Пусть Σ={s1,s2,,sk}\Sigma =\left\{ s_{1}, s_{2}, \ldots , s_{k}\right\} и s1s2sks_{1} \prec s_{2} \prec \cdots \prec s_{k}. Покажите, что следующие функции примитивно рекурсивны:

?
(a)

lengΣ(x)=x\operatorname {leng}_{\Sigma }(x)=\left|x\right|.

(b)

concatΣk(x1,x2,,xk)=x1x2xk,k1\operatorname {concat}_{\Sigma }^{k}\left(x_{1}, x_{2}, \ldots , x_{k}\right)=x_{1} x_{2} \cdots x_{k}, k \geq 1.

(c)

substrΣ(x,i,)=\operatorname {substr}_{\Sigma }(x, i, \ell )= подстрока yy строки xx, начинающаяся с ii-го символа и имеющая длину \ell, если 1ix1 \leq i \leq \left|x\right| и 1xi+11 \leq \ell \leq \left|x\right|-i+1; и 0 в противном случае.

(d)

subΣ(x,y)=[x\operatorname {sub}_{\Sigma }(x, y)=[x является подстрокой y]y].

(e)

head Σ(x,y)=[x{ }_{\Sigma }(x, y)=[x является префиксом y]y].

(f)

tail Σ(x,y)=[x_{\Sigma }(x, y)=[x является суффиксом y]y].

Задача 4.8.1

Разработайте многоленточную машину Тьюринга, которая «складывает» две строки над Σ={1,2,,X}\Sigma = \left\{ 1,2, \ldots , X\right\}, то есть на входах x,yΣx, y \in \Sigma^{*} вычисляет zΣz \in \Sigma^{*} такое, что ιΣ1(z)=ιΣ1(x)+ιΣ1(y)\iota_{\Sigma }^{-1}(z)=\iota_{\Sigma }^{-1}(x)+\iota_{\Sigma }^{-1}(y).

?
Задача 4.8.2

Завершите доказательство части теоремы 4.47, касающейся примитивной рекурсии. А именно, для данных многоленточных ДМТ MgM_{g} и MhM_{h}, вычисляющих функции gg и hh, разработайте многоленточную ДМТ MM, вычисляющую функцию ff, которая определена из функций gg и hh с помощью примитивной рекурсии.

?
Задача 4.8.3

Докажите, что каждая частично рекурсивная функция может быть получена из начальных функций конечным числом применений операций суперпозиции и примитивной рекурсии и одним применением операции неограниченной минимизации.

?
Задача 4.8.4

Покажите, что следующие функции, определённые на {a,b}\left\{ a, b\right\}^{*}, примитивно рекурсивны:

?
(a)

f1(x,y)=[xf_{1}(x, y)=[x является подпоследовательностью y]y], где x=x1x2xkx=x_{1} x_{2} \cdots x_{k} является подпоследовательностью y=y1y2ymy=y_{1} y_{2} \cdots y_{m}, если существует последовательность целых чисел 1n1<n2<<nkm1 \leq n_{1}<n_{2}<\cdots <n_{k} \leq m такая, что ynt=xiy_{n_{t}}=x_{i} для i=1,,ki=1, \ldots , k.

(b)

f2(x,y)=f_{2}(x, y)= число вхождений xx в качестве подстроки в yy.

(c)

f3(x)=f_{3}(x)= строка, полученная из xx заменой каждого вхождения bab a в xx на aba b. Например, f3(babab)=ababbf_{3}(b a b a b)=a b a b b.

(d)

f4(x)=f_{4}(x)= длина самой длинной строки ww такой, что и ww, и wRw^{R} встречаются в качестве подстрок в xx.

Задача 4.8.5

Покажите, что каждый контекстно-свободный язык примитивно рекурсивен.

?
Задача 4.8.6

Пусть f(k,0)=ekf(k, 0)=\left\lfloor e^{k}\right\rfloor, а f(k,n)=f(k, n)= nn-я цифра справа от десятичной точки в десятичном разложении eke^{k}, где e=n=01/n!e=\sum_{n=0}^{\infty } 1 / n!. Покажите, что ff является рекурсивной функцией. Является ли ff примитивно рекурсивной функцией?

?
Задача 4.8.7

Пусть GG — грамматика над алфавитом Σ\Sigma. Покажите, что следующие функции g1,g2,g3g_{1}, g_{2}, g_{3} частично рекурсивны:

?
(a)

g1(x)=g_{1}(x)= минимальное число шагов в выводе xx, если xL(G)x \in L(G), и g1(x)g_{1}(x) \uparrow в противном случае.

(b)

g2(x)=g_{2}(x)= минимальная длина (число символов) вывода xx, если xL(G)x \in L(G), и g2(x)g_{2}(x) \uparrow в противном случае.

(c)

g3(x,y)=1g_{3}(x, y)=1, если существует вывод xx, более короткий, чем любой вывод yy, при условии, что оба xx и yy принадлежат L(G)L(G), и g3(x,y)g_{3}(x, y) \uparrow в противном случае.

(d)

Пусть g4(x,y)={1 если g3(x,y),0 иначе. g_{4}(x, y)=\begin{cases} 1 & \text{ если } g_{3}(x, y) \downarrow , \\ 0 & \text{ иначе. }\end{cases} Является ли g4g_{4} рекурсивной функцией?

Задача 4.8.8

(Функция Аккермана) Определим функцию A:N2NA: \mathbf{N}^{2} \rightarrow \mathbf{N} следующим образом:

A(0,n)={n+1 если n1n+2 иначе A(m+1,0)=1,A(m+1,n+1)=A(m,A(m+1,n)) \begin{aligned} A(0, n) & =\begin{cases} n+1 \quad \text{ если } n \leq 1 \\ n+2 \quad \text{ иначе } \end{cases} \\ A(m+1,0) & =1, \\ A(m+1, n+1) & =A(m, A(m+1, n)) \end{aligned}
?
(a)

Пусть Am(n)=A(m,n)A_{m}(n)=A(m, n). Чему равно A2(n)A_{2}(n)? A3(n)A_{3}(n)? Покажите, что каждая AmA_{m} примитивно рекурсивна.

(b)

Покажите, что AA является рекурсивной функцией.

(c)

Покажите, что для каждой примитивно рекурсивной функции f:NNf: \mathbf{N} \rightarrow \mathbf{N} существует целое число k0k \geq 0 такое, что f(n)Ak(n)f(n) \leq A_{k}(n) для почти всех n0n \geq 0 (т.е. для всех, кроме конечного числа, n0n \geq 0).

(d)

Покажите, что AA не является примитивно рекурсивной.