- •Практикум Теория алгоритмов и сложность вычислений.
- •0 Иначе
- •0 Иначе
- •0 Иначе
- •0 Иначе
- •5. Целая часть от деления аргумента X на y
- •6. Остаток от деления аргумента X на y
- •7. Число различных делителей X (включая число 1)
- •1. Экспонента числа px в числе y
- •2. Квадратичный остаток числа X
- •3. Нумерация пар чисел
0 Иначе
введем σ(x)=x 1
σ(0)=0
σ(x’)=(x+1) 1=x=U22
σ(x)=R0(U22)
f(0,y)= 0 y=0
f(x’,y)=(x+1) y=x (y 1)
f(x,0)= x 0=x=U11
f(x,y’)= x (y+1)=(x y) 1=f(x,y) 1=σ(f(x,y))=σ(U13)=S13(σ,U13)
Ответ: f(x,y)=R2[U11, S13(R0(U22),U13)].
5. Знаковая функция
0
если x=0
Sgn(x)=
1 если x>0
f(x)=1 (1 x)
f(0)=0
f(x’)=1 (1 (x+1))=1=C12
Ответ: R0(C12).
6. Равенство
1
если x=y
Eql(x,y)=
0 Иначе
f(x,y)=1 [(x y)+(y x)]
f(0,y)=1 [(0 y)+(y 0)]=1 y= (1,y)= (C11,U11)=S21( ,C11,U11)
f(x’,y)=1 [((x+1) y)+(y (x+1))]=1 [(S(x) y)+(y S(x))]=1 [ (S(x),y), (y,S(x))]=
=1 [(S23( ,S(U23),U33),S23( ,U33,S(U23))]=
= [C13,S23(,S23( ,S(U23),U33),S23( ,U33,S(U23)))]=
=S23[ ,C13,S23(,S23( ,S(U23),U33),S23( ,U33,S(U23)))]
Ответ: f(x,y)=R2[S21( ,C11,U11),S23( ,C13,S23(,S23( ,S(U23),U33),S23( ,U33,S(U23))))].
7. Степень
f(x,y)=xy
f(x,0)=x0=1=C11
f(x,y’)=xy+1=f(x,y)x=Π(U13,U23)= S23[Π,U13,U23]
Ответ: f(x,y)=R2[C11,S23(Π,U13,U23)].
8. Модуль разности
x y если x>=y
Mod(x,y)=
y x иначе
9. Больше
1 если x>y
More(x,y)=
0 Иначе
10. Больше или равно
1
если x>=y
Moreql(x,y)=
0 Иначе
СЕМИНАР 12
Примитивная рекурсивность функций (продолжение).
1. Минимум
min(x,y)
Функцию минимума можно представить в виде
(здесь и далее знак ÷ означает псевдоразность).
2. Максимум
max(x,y)
Функцию максимума можно представить в виде
3. Остаток от деления аргумента x на 2.
rest2(x)
Докажем, что rest 2(x) – ПРФ.
rest2
(0) = 0
rest2 (x’) = 1, если rest2 (x)=0
0, если rest2 (x)=1
rest2 (x’) = unsg (rest2 (x)) = unsg (U21) = S21(unsg, U21),
где unsg – функция, возвращающая 1, если аргумент =0; 0 – иначе.
Схема примитивной рекурсии rest2 (x) = R0 [S21(unsg, U21)]
4. Целая часть от деления аргумента x на 2.
div2(x)
Докажем, что div2(x) – ПРФ.
d
iv2(0)
= 0
div2(x’) = div2(x) + mod2(x)
div2(x’) = div2(U22) + mod2(U22) = U21 + S21(mod2,U22) =
= S22 [,U21, S21(mod2,U22)]
Схема примитивной рекурсии div2(x) = R0 { S22 [,U21, S21(mod2,U22)]
Здесь и далее я буду опускать этап собственно построения примитивно-рекурсивных схем, полагая, что рисовать нужные индексы у суперпозиций не составляет особого труда. Признаком доказательства того, что функция - примитивно рекурсивная, будет являться выражение функции через другие функции (примитивная рекурсивность которых доказана ранее) и разрешенные базисом Клини операции.
5. Целая часть от деления аргумента X на y
div (x,y)
Чтобы иметь дело с всюду определенными функциями, дополнительно положим, что
div (x,0)=0.
Согласно определению, при y>0 число div (x,y) = n удовлетворяет соотношениям
ny<=x<(n+1)y.
Отсюда видно, что n равно числу нулей в последовательности
1y • x, 2y • x, … , ny • x, … , xy • x.
Поэтому для y>0 имеем формулу
div (x,y) = ∑ (unsg(iy • x)) (i=1..x)
Непосредственная проверка показывает, что формула верна и при y=0. Так как функция (unsg(iy • x)), стоящая под знаком суммы, примитивно рекурсивная, то на основании теоремы о суммировании заключаем, что функция div (x,y) примитивно рекурсивна.
