4.6

Примитивно рекурсивные функции

[17/59%]
Показать
LaTeX
Пример 4.21

Покажите, что add (m,n)=m+n(m, n)=m+n является примитивно рекурсивной.

?
Пример 4.22

Покажите, что mult (m,n)=mn(m, n)=m n является примитивно рекурсивной.

?
Пример 4.23

Покажите, что постоянные функции Kjk(n1,,nk)=jK_{j}^{k}\left(n_{1}, \cdots , n_{k}\right)=j, k,j1k, j \geq 1, являются примитивно рекурсивными.

?
Пример 4.24

Покажите, что функция minus: N2N\mathbf{N}^{2} \rightarrow \mathbf{N}, определённая как

minus(m,n)=mn={0 если mn,mn если m>n, \operatorname {minus}(m, n)=m-n= \begin{cases} 0 & \text{ если } m \leq n, \\ m-n & \text{ если } m>n,\end{cases}

является примитивно рекурсивной.

?
Пример 4.25

Предположим, что f:NNf: \mathbf{N} \rightarrow \mathbf{N} примитивно рекурсивна. Тогда функция g:N2Ng: \mathbf{N}^{2} \rightarrow \mathbf{N}, определённая как

g(m,n)=f(n)(m)= def f(f((f(m)))),n g(m, n)=f^{(n)}(m) \stackrel{\text{ def }}{=} \underbrace{f(f(\cdots (f(m)) \cdots )),}_{n}

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

?
Пример 4.26

Покажите, что следующие функции примитивно рекурсивны:

?
(a)

neg(x)={0 если x1,1 если x=0.\operatorname {neg}(x)= \begin{cases} 0 & \text{ если } x \geq 1, \\ 1 & \text{ если } x=0.\end{cases}

(b)

and(x,y)={1 если x1 и y1,0 иначе. \operatorname {and}(x, y)= \begin{cases} 1 & \text{ если } x \geq 1 \text{ и } y \geq 1, \\ 0 & \text{ иначе. }\end{cases}

(c)

or(x,y)={1 если x1 или y1,0 иначе. \operatorname {or}(x, y)= \begin{cases} 1 & \text{ если } x \geq 1 \text{ или } y \geq 1, \\ 0 & \text{ иначе. }\end{cases}

(d)

if-then-else(x,y,z)={y если x1,z иначе .\operatorname {if\text{-}then\text{-}else}(x, y, z)= \begin{cases} y & \text{ если } x \geq 1, \\ z & \text{ иначе }.\end{cases}

Пример 4.27

Покажите, что следующие функции примитивно рекурсивны:

?
(a)

eq(x,y)={1 если x=y,0 если xy.\operatorname {eq}(x, y)= \begin{cases} 1 & \text{ если } x=y, \\ 0 & \text{ если } x \neq y.\end{cases}

(b)

gr(x,y)={1 если x>y,0 если xy.\operatorname {gr}(x, y)= \begin{cases} 1 & \text{ если } x>y, \\ 0 & \text{ если } x \leq y.\end{cases}

(c)

geq(x,y)={1 если xy,0 если x<y.\operatorname {geq}(x, y)= \begin{cases} 1 & \text{ если } x \geq y, \\ 0 & \text{ если } x<y.\end{cases}

(d)

ls(x,y)={1 если x<y,0 если xy.\operatorname {ls}(x, y)= \begin{cases} 1 & \text{ если } x<y, \\ 0 & \text{ если } x \geq y.\end{cases}

(e)

leq(x,y)={1 если xy,0 если x>y.\operatorname {leq}(x, y)= \begin{cases} 1 & \text{ если } x \leq y, \\ 0 & \text{ если } x>y.\end{cases}

Пример 4.28

Для каждого k1k \geq 1 функция maxk(n1,n2,,nk)=max{n1,n2,,nk}\max^{k}\left(n_{1}, n_{2}, \ldots , n_{k}\right)= \max \left\{ n_{1}, n_{2}, \ldots , n_{k}\right\} примитивно рекурсивна.

?
Пример 4.30

Следующие функции примитивно рекурсивны.

?
(a)

quot(m,n)={mn если n>0,0 иначе. q u o t(m, n)= \begin{cases} \left\lfloor \frac{m}{n}\right\rfloor & \text{ если } n>0, \\ 0 & \text{ иначе. }\end{cases}

(b)

mod(m,n)={mmnn если n>0,0 иначе .\bmod (m, n)= \begin{cases} m-\left\lfloor \frac{m}{n}\right\rfloor \cdot n & \text{ если } n>0, \\ 0 & \text{ иначе }.\end{cases}

(c)

prime (n)={1 если n простое число ,0 иначе .(n)= \begin{cases} 1 & \text{ если } n \text{ простое число }, \\ 0 & \text{ иначе }.\end{cases}

Пример 4.31

Пусть f(0)=1f(0)=1 и при n1n \geq 1 f(n)=f(n)= nn-я цифра справа от десятичной точки в десятичном разложении 2\sqrt{2}. Докажите, что ff примитивно рекурсивна.

?
Задача 4.6.1

Покажите, что следующие функции примитивно рекурсивны:

?
(a)

factorial(n)=n!\operatorname {factorial}(n)=n!.

(b)

f1(n)=nnn}n\left.f_{1}(n)=n^{n^{\cdot n}}\right\} n уровней. [Подсказка: сначала рассмотрите более общую функцию g1(n,m)=nn.n}m\left.g_{1}(n, m)=n^{n^{. n}}\right\} m уровней.]

(c)

f2(n)=log2nf_{2}(n)=\left\lfloor \log_{2} n\right\rfloor.

(d)

f3(n)={1 если n является суммой двух простых чисел, 0 иначе. f_{3}(n)= \begin{cases} 1 & \text{ если } n \text{ является суммой двух простых чисел, } \\ 0 & \text{ иначе. }\end{cases}

(e)

ϕ(n)=\phi (n)= число простых чисел, не превосходящих nn.

(f)

lcm(n,m)=\operatorname {lcm}(n, m)= наименьшее общее кратное nn и mm.

(g)

s(n)=s(n)= число цифр в десятичной записи nn.

(h)

h(n,m)=h(n, m)= mm-я по значимости цифра десятичной записи nn, если 1ms(n)1 \leq m \leq s(n)h(n,m)=0h(n, m)=0, если m=0m=0 или m>s(n)m>s(n)).

Задача 4.6.2

Что не так со следующим доказательством примера 4.25?

Мы докажем это индукцией по nn, как в примере 4.28. При n=0n=0 g(m,n)=π11(n)g(m, n)=\pi_{1}^{1}(n); следовательно, g(m,0)g(m, 0) примитивно рекурсивна. При n0n \geq 0 g(m,n+1)=f(g(m,n))g(m, n+1)=f(g(m, n)). Поскольку ff примитивно рекурсивна и, по индуктивному предположению, g(m,n)g(m, n) примитивно рекурсивна, получаем, что g(m,n+1)g(m, n+1) также примитивно рекурсивна. Отсюда следует, что g(m,n)g(m, n) примитивно рекурсивна при всех n0n \geq 0, а значит, gg примитивно рекурсивна.

?
Задача 4.6.3

Предположим, что R:Nk+1NR: \mathbf{N}^{k+1} \rightarrow \mathbf{N} — примитивно рекурсивный предикат. Покажите, что следующая функция f:Nk+1Nf: \mathbf{N}^{k+1} \rightarrow \mathbf{N} также примитивно рекурсивна:

f(n1,,nk,m)={(maxi)imR(n1,,nk,i) если (i)imR(n1,,nk,i)0 иначе.  f\left(n_{1}, \ldots , n_{k}, m\right)= \begin{cases} (\max i)_{i \leq m} R\left(n_{1}, \ldots , n_{k}, i\right) \\ & \text{ если }(\exists i)_{i \leq m} R\left(n_{1}, \ldots , n_{k}, i\right) \\ 0 & \text{ иначе. }\end{cases}
?
Задача 4.6.4

Предположим, что f:Nk+1Nf: \mathbf{N}^{k+1} \rightarrow \mathbf{N} примитивно рекурсивна. Покажите, что следующие функции также примитивно рекурсивны:

?
(a)

g(n1,,nk,m)=i=0mf(n1,,nk,i)g\left(n_{1}, \ldots , n_{k}, m\right)=\sum_{i=0}^{m} f\left(n_{1}, \ldots , n_{k}, i\right).

(b)

h(n1,,nk,m)=i=0mf(n1,,nk,i)h\left(n_{1}, \ldots , n_{k}, m\right)=\prod_{i=0}^{m} f\left(n_{1}, \ldots , n_{k}, i\right).

Задача 4.6.5

Предположим, что f:NNf: \mathbf{N} \rightarrow \mathbf{N} примитивно рекурсивна и удовлетворяет f(0)=0f(0)=0 и f(n)<f(n+1)f(n)<f(n+1) при всех n0n \geq 0. Покажите, что функция h(m)=[h(m)=[ целое число nn такое, что f(n)m<f(n+1)]f(n) \leq m<f(n+1)] также примитивно рекурсивна.

?
Задача 4.6.6

Предположим, что f:NNf: \mathbf{N} \rightarrow \mathbf{N} и g:NNg: \mathbf{N} \rightarrow \mathbf{N} обе примитивно рекурсивны. Покажите, что следующая функция h:N2Nh: \mathbf{N}^{2} \rightarrow \mathbf{N} также примитивно рекурсивна:

h(n,0)=f(n)h(n,m+1)=g(h(n,m+12)). \begin{aligned} h(n, 0) & =f(n) \\ h(n, m+1) & =g\left(h\left(n,\left\lfloor \frac{m+1}{2}\right\rfloor \right)\right). \end{aligned}
?
Задача 4.6.7

Предположим, что f:NNf: \mathbf{N} \rightarrow \mathbf{N} примитивно рекурсивна. Покажите, что следующая функция g:N2Ng: \mathbf{N}^{2} \rightarrow \mathbf{N} также примитивно рекурсивна:

g(n,0)=f(n)g(n,m+1)=g(g(n,m),m) \begin{aligned} g(n, 0) & =f(n) \\ g(n, m+1) & =g(g(n, m), m) \end{aligned}
?