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={n∣n≥2,(∃a,b,c≥1)an+bn=cn}F=\left\{ n \mid n \geq 2,(\exists a, b, c \geq 1) a^{n}+b^{n}=c^{n}\right\} является р.п. [^fn1]

(b)

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

Пример 4.41

Пусть

?
(a)

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

(b)

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

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

Пример 4.42

Пусть Σ={s1,s2,…,sk}\Sigma =\left\{ s_{1}, s_{2}, \ldots , s_{k}\right\} и s1≺s2≺⋯≺sks_{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)=x1x2⋯xk,k≥1\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, если 1≤i≤∣x∣1 \leq i \leq \left|x\right| и 1≤ℓ≤∣x∣−i+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=x1x2⋯xkx=x_{1} x_{2} \cdots x_{k} является подпоследовательностью y=y1y2⋯ymy=y_{1} y_{2} \cdots y_{m}, если существует последовательность целых чисел 1≤n1<n2<⋯<nk≤m1 \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)=⌊ek⌋f(k, 0)=\left\lfloor e^{k}\right\rfloor, а f(k,n)=f(k, n)= nn-я цифра справа от десятичной точки в десятичном разложении eke^{k}, где e=∑n=0∞1/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, если x∈L(G)x \in L(G), и g1(x)↑g_{1}(x) \uparrow в противном случае.

(b)

g2(x)=g_{2}(x)= минимальная длина (число символов) вывода xx, если x∈L(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:N2→NA: \mathbf{N}^{2} \rightarrow \mathbf{N} следующим образом:

A(0,n)={n+1 если n≤1n+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:N→Nf: \mathbf{N} \rightarrow \mathbf{N} существует целое число k≥0k \geq 0 такое, что f(n)≤Ak(n)f(n) \leq A_{k}(n) для почти всех n≥0n \geq 0 (т.е. для всех, кроме конечного числа, n≥0n \geq 0).
(d)
  • Покажите, что AA не является примитивно рекурсивной.