В этом разделе мы изучим
Мы будем рассматривать частичные fn(x1, ..., xn): Nn -> N.
Здесь верхний индекс n у имени функции f обозначает
число ее аргументов ("
Определение 8.1. Fm и f1n,..., fmn
- Gn получена из Fm , f1n, ..., fmn с помощью оператора Gn=[Fm;f1n, ..., fmn] ), если для всех наборов аргументов (x1,...,xn)
При этом для каждого набора аргументов (a1, ..., an) функция $$G^{n}(a_{1}, \dots , a_{n})< \infty$$
(т.е. определена), если определены все значения f1n (a1, ..., an)=b1,..., fmn (a1, ..., an)=bm
и $$F^{m}(b_{1},\dots , b_{m}) < \infty$$.
Определение 8.2. Fn+1(x1,... ,xn,y) получена с помощью оператора
рекурсии из функций gn(x1,..., xn) и hn+2(x1, ..., xn, y, z), если она может быть задана схемой
В этом случае будем писать Fn+1 = R(gn,hn+2).
При этом $$F(a_1,\ldots, a_n,0)< \infty \ \Longleftrightarrow g^n(a_1,\ldots,a_n) <\infty$$ и для каждого b
$$F(a_1,\ldots, a_n,b+1)< \infty \ \Longleftrightarrow F(a_1,\ldots, a_n,b)=c <\infty$$ и $$h^{n+2}(a_1,\ldots, a_n,b,c) < \infty$$.
В случае, когда n=0, т.е. F зависит от одного
аргумента y, а аргументов x1,...,xn нет,
схема
где $$a \in N$$.
Заметим, что если исходные функции в операторах
Определение 8.3. Fn(x1,... ,xn) получена с помощью оператора минимизации( $$\mu$$ -оператора) из функции gn+1(x1,..., xn,y), если Fn(x1,...,xn)
определена и равна y тогда и только тогда, когда все
значения gn+1(x1,..., xn,0),...,gn+1(x1,..., xn,y-1)
определены и не равны 0, а gn+1(x1,..., xn,y)=0.
В этом случае будем писать
Определение 8.4. Простейшие функции. Функция называется простейшей, если она является одной из следующих функций:
o1(x)=0 - тождественный нуль;s1(x)= x+1 - следующее число (плюс один);Imn (x1, ... ,xn)=xm (1 <= m <= n).Заметим, что все простейшие функции вычислимы в интуитивном смысле.
Кроме того, операторы
Определение 8.5. f называется f1,f2,..., fn=f,
каждая из которых является либо простейшей, либо получена из предыдуших с помощью одного из указанных операторов. Указанная последовательность функций называется частично рекурсивным описанием функции f.
Функция f называется общерекурсивной функцией (о.р.ф.), если она
f называется f.
Нетрудно проверить, что каждая
Приведем некоторые примеры
Пример 8.1. Постоянные функции.
Пусть fn(x1,...,xn)=k
для всех наборов аргументов (x1,...,xn) и числа $$k \in N$$. Тогда
Пример 8.2. Сложение: +2(x,y)=x+y.
Функция сложения определяется следующей
Следовательно, +2 =R(I11,[s1;I33]).
Пример 8.3. Умножение: x2(x,y)=x x y.
Используя сложение, умножение можно задать следующей
Следовательно, x2 =R(o1,[+;I33,I13]).
Пример 8.4. Минус 1: $$\dot{-} 1(0)=0,\ \dot{-} 1(x+1)=x$$.
Нетрудно проверить, что $$\dot{-} 1 =R(0,I^2_1)$$.
Пример 8.5. Вычитание : $$\dot{ -} y = x-y$$, если x >= y
и $$x\dot{-} y=0$$, если x < y.
Вычитание определяется следующей примитивно рекурсивной схемой:
$$\left \{ \aligned x\dot{-} 0 =x = I^1_1(x) \\ x\dot{-} (y+1)=(x\dot{-} y)\dot{-}1= [\dot{-}1^1;I^3_3(x,y,x\dot{-} y)] \endaligned \right .$$Следовательно, $$\dot{-}^2 =R(I^1_1,[\dot{-}1^1;I^3_3])$$.
Пример 8.6. Предикаты равенства и неравенства нулю:
$$sg(x)=\left \{ \aligned 0,\qquad \textit{если}\ x=0\\ 1,\qquad \textit{если}\ x\neq 0 \endaligned \right . \qquad \overline{sg}(x)= \left \{ \aligned 1,\qquad \textit{ если }\ x=0\\ 0,\qquad \textit{если}\ x\neq 0 \endaligned \right .$$Примитивная рекурсивность этих функций следует из равенств $$sg=R(0,[s^1;[o^1;I^2_1]])\ $$ и $$\overline{sg}(x)=1 \dot{-} sg(x)$$.
Пример 8.7. Модуль разности: $$|x - y|=(x \dot{-}y)+(y \dot{-}x)$$.
Пример 8.8. rm(x,y)= остаток от деления y на x (при x=0 положим rm(0,y)=y ).
Заметим, что
$$rm(x, y+1)= \left\{ \begin{array}{ll} 0, \mbox{ если } rm(x,y)+1=x \\ rm(x,y)+1, \mbox{ если }rm(x,y)+1\ne x \end{array} \right.$$Тогда функцию rm(x,y) можно задать примитивно рекурсивной схемой
Правую часть второго равенства легко представить как
функцию g(x,y,rm(x,y)), полученную с помощью
Пример 8.9. Нигде не определенная функция $$\omega (x)$$.
Эта функция может быть задана, например, соотношением $$\omega (x)= mu y[ s^{1}(y)+x=0 ]$$.
Отметим, что все функции в примерах 8.1 - 8.8 являются примитивно рекурсивными.
В этом параграфе рассмотрим соотношение между программно вычислимыми и
Теорема 8.1. Каждая
Доказательство индукцией по определению ч.р.ф.
Базис: программная вычислимость простейших функций была установлена в примерах 1.1, 1.2 и 1.4.
Индукционный шаг: покажем программную вычислимость операторов
Fm и f1n,..., fmn
- i=1,...,n. Пусть переменные y1, ..., ym, z1,..., zn
не используются в программах $$\Pi , \Pi _{1}, \dots , \Pi _{m}$$. Кроме того, пусть все вспомогательные переменные этих программ - это w1, ... , wr. Рассмотрим следующую программу P:
В качестве входных переменных зафиксируем x1, ..., xn, а выходной - x1. Пусть в исходном состоянии x1=a1, ..., xn = an. Тогда в первой строке эти значения сохраняются в переменных z1, ..., zn, которые своих значений далее не меняют.
Поэтому для каждого i=1,...,m-1 после выполнения фрагмента
значением переменной yi является fin(a1,..., an), x1=a1, ..., xn = an,
а значения всех вспомогательных переменных равны 0. Тогда после выполнения
значением каждого xi также является fin(a1,..., an),
а после выполнения $$\Pi$$ значение x1 равно $$\Phi _{P,x1}(x_{1},\dots ,x_{m})= F^{m}(f_{1}^{n}(a_{1},\dots , a_{n}), \dots , f_{m}^{n}(a_{1},\dots , a_{n}))$$.
Таким образом, $$\Phi _{P, x1} = [F; f_{1}, \dots , f_{n}]$$.
Примитивная рекурсия.
Рассмотрим для простоты случай n=1. Пусть функция F2(x1,y) получена с помощью оператора g1(x1) и h3(x1, y, z), т.е. F2 =R(g1,h3).
Предположим, что существуют программы $$\Pi _{1}$$ и $$\Pi _{2}$$, вычисляющие функции g1 и h3 так, что $$\Phi _{\Pi 1},x_{1}\ (x_{1})=g^{1}(x_{1})$$ и $$\Phi _{\Pi 2,x1}(x_{1}, y,z)=h^{3}(x_{1},y,z)$$.
Пусть вспомогательные переменные $$\Pi _{2}$$ - это z1,..., zm и они не встречаются в $$\Pi _{1}$$, а переменные u1, y1 и v не используются в программах $$\Pi _{1}$$ и $$\Pi _{2}$$.
Рассмотрим программу P: $$u_{1} :=x_{1}; y_{1}:=y; v:=0; \Pi _{1};$$ пока v < y1 делай z:=x1; x1:=u1; y:=v; $$\Pi _{2}; z_{1}:=0; \dots ; z_{m}:=0; v:= v+1$$ все
В качестве входных переменных P возьмем x1 и y,
а выходной - x1.
Рассмотрим работу P на исходном состоянии $$\sigma,$$ в котором $$\sigma (x_{1})=a, \sigma (y)=b$$. При b=0 цикл не выполняется и в результирующем состоянии $$\sigma _{1}=P(\sigma )$$ имеем $$\sigma _{1}(x_{1})=\Pi _{1}(\sigma )(x_{1})=g^{1}(a)= F^{2}(a, 0)$$. При b > 0 цикл будет выполняться b раз, так как в его теле v всякий
раз увеличивается на 1, а значение y1=b и не меняется. Перед первым
выполнением $$\Pi _{2}$$ все ее zi равны 0, x1=a, y=0, z=F2(a, 0), а после ее выполнения x1=h3(a,0,F(a,0))=F(a,1).
Предположим теперь по индукции, что перед (i+1) -ым выполнением $$\Pi _{2}$$ все ее zi равны 0, x1=a, y=i и z=F2(a, i).
После этого выполнения x1=h3(a,i,z)=h3(a,i,F(a,i))=F(a,i+1). Тогда присваивания z1:=0; ... ; zm:=0; v:= v+1 после $$\Pi _{2}$$ и z:=x1; x1:=u1; y:=v; перед ее следующим выполнением установят значения переменных $$\Pi _{2}$$ так, что все ее zi равны 0, x1=a, y=i+1 и z=F2(a, i+1). Следовательно, после b -го выполнения тела цикла x1=h3(a,b-1,F(a,b-1))=F(a,b).
Fn(x1,... ,xn) получена с помощью оператора mu -оператора) из функции gn+1(x1,..., xn,y), т.е.
Пусть программа $$\Pi _{1}$$ вычисляет gn+1, так что $$\Phi_{\Pi_1, x_1}(x_1,\ldots, x_n,y)=g^{n+1}(x_1,\ldots, x_n,y)$$,
и пусть z1,..., zm. Зафиксируем переменные x1',... , xn', y';, u, z, не входяшие в $$Var_{\Pi_1}$$.
Рассмотрим следующую программу $$\Pi:$$
Рассмотрим работу $$\Pi$$ на входных значених xi = ai (i=1,...,n).
В первой строке они сохраняются в переменных x'i, которые
нигде в $$\Pi$$ не изменяются, z получает значение 0, которое тоже не меняется по ходу вычисления,
а u вначале получает значение 1. Поэтому условие цикла после первой строки
истинно и
он хотя бы один раз выполняется.
Докажем, что для каждого i >= 1, (i+1) -ая итерация цикла выполняется
тогда и только тогда, когда g(a1, ..., an,0)=b1 >0, ..., g(a1, ..., an, i-1)=bi-1 > 0, $$\Pi$$ останавливается после (i+1) -ой итерации цикла с результатом x1=i
тогда и только тогда, когда g(a1, ..., an,i)=0.
При этом
перед выполнением $$\Pi _{1}$$
входные переменные x1,...,xn,y имеют значения a1,...,an, i, соответственно, y'= i, а все zj (j=1,..., m) равны 0.
Действительно, предположив это условие, получим, что после очередного выполнения фрагмента
$$\Pi_1;\ z_1:=0;\ldots ; z_m:=0;\ u:=x_1;$$значение u = x1 = g(a1,...,an,i), а g(a1,...,an,i)=0, то u=z и в условном операторе x1 получает
значение y'=i. После этого условие цикла нарушено и $$\Pi$$ завершает работу с выходным
значением x1=i =F(a1,..., an).
Если же g(a1,...,an,i)> 0, то u>z и в условном операторе y' увеличивает значение до (i+1).
Тогда условие цикла выполнено и перед (i+2) -ым выполнением $$\Pi _{1}$$ ее входные переменные x1,...,xn,y имеют значения a1,...,an, i+1, соответственно, y'= i+1, а все
Из доказанного утверждения непосредственно следует, что
$$\Phi_{\Pi,x_1}(a_1,\ldots,a_n)= \mu y[g(a_1,\ldots,a_n,y)=0].$$Имеет место и утверждение, обратное теореме 8.1, которое мы приводим здесь без доказательства.
Теорема 8.2. Каждая программно вычислимая функция является
В этом параграфе мы установим примитивную (частичную) рекурсивность некоторых важных классов функций - таблиц и нумераций, и расширим возможности определения функций с помощью суммирования, произведения, разбора случаев и
Лемма 8.1. Рекурсивность табличных функций.
Пусть f(x) на всех аргументах,
кроме конечного числа, равна некоторой константе c
(такую функцию назовем табличной). Тогда она является примитивно рекурсивной.
Доказательство Пусть для функции f из условия леммы $$n_{f}= max\{ x | f(x)\ne c\}$$. Доказательство проведем индукцией по nf.
При nf=0 функция f является постоянной и поэтому примитивно рекурсивной (пример 8.1).
Предположим что все табличные функции g со значением ng <= k примитивно рекурсивны и пусть nf = k +1 и f(0)=a. Определим табличную функцию f'(x) = f(x+1). Ясно, что nf' = k, и по предположению индукции f' примитивно рекурсивна. Легко проверить, что тогда f задается следующей схемой:
и, следовательно, также примитивно рекурсивна.
Покажем замкнутость класса ч.р.ф. (п.р.ф.) относительно операций суммирования и произведения.
Лемма 8.2. Суммирование и произведение. Пусть функция f(x1,..., xn, y) является Fn+1 и Gn+1, заданные следующими равенствами
является
Доказательство Действительно, эти функции задаются следующими примитивно рекурсивными схемами:
$$\left \{ \aligned F(x_1,\ldots,x_n,0)= f(x_1,\ldots,0) \\ F(x_1,\ldots,x_n,y+1)=\/F(x_1\ldots,x_n,y)+ f(x_1,\ldots,x_n,y+1) \endaligned \right.$$ $$\left \{ \aligned G(x_1,\ldots,x_n,0)= f(x_1,\ldots,0) \\ G(x_1,\ldots,x_n,y+1)=\/G(x_1\ldots,x_n,y)\times f(x_1,\ldots,x_n,y+1) \endaligned \right.$$Приведем примеры использования леммы 8.2.
Пример 8.10. max_deg_div(x,y) = максимальная степень x, на которую нацело делится y.
Пусть exp(x,y) - экспоненциальная функция: exp(x,y) = xy. Ее примитивную рекурсивность легко установить, используя функцию умножения (см. задачу 8.1 (а) ). Тогда нетрудно проверить, что искомая функция задается соотношением
и, следовательно, является примитивно рекурсивной.
Пример 8.11. Ограниченная g(x,y) такова, что для каждого x найдется y <= x, для которого g(x,y) =0. Положим F(x) = mu y [g(x,y) = 0].
Тогда, по определению, F(x) является x $$y_{0} = \mu y [g(x,y) = 0]$$.
Тогда при i < y0 имеем h(x,i) = 1, а при i >= y0 h(x,i) =0. Поэтому искомая функция F задается равенством $$F(x) = \sum_{i=0}^y h(x,i)$$ и также является примитивно рекурсивной.
Лемма 8.3. Кусочное задание или разбор случаев. Пусть h1(x1,...,xn), ..., hk(x1,...,xn) - произвольные ч.р.ф., а всюду определенные ч.р.ф. f1(x1,...,xn), ..., fk(x1,...,xn)
таковы, что на любом наборе аргументов (a1, ..., an) одна и только одна из этих функций равна 0. Тогда функция g(x1,..., xn), определенная соотношениями:
является
Доказательство Действительно, gn можно представить как сумму k произведений:
Следующий класс функций, который нас будет интересовать, - это
функции для однозначной нумерации пар и n-ок целых чисел и обратные им. Определим для любой пары чисел (x,y) ее номер c2(x,y)=2x(2y+1) - 1.
Например, c2(0,0)=0, c2(1,0)=1, c2(0,1)=2, c2(1,1)=5, c2(2,1)= 19.
Из единственности разложения чисел на простые множители следует,
что функция c2: N2 -> N взаимно
однозначно нумерует пары целых чисел.
Нетрудно понять, что если c2(x,y) = z, то двоичная запись числа (z+1)
имеет следующий вид: (двоичная запись y ) 10x. Из такого представления можно однозначно извлечь значение x и значение y. Эти значения определяются следующими обратными функциями:
Из этих определений непосредственно следует, что для
любого z выполнено равенство c2(c21(z), c22(z))=z.
Определим теперь по индукции функции cn нумерации n-ок чисел при n > 2 и обратные им координатные функции cni (1 <= i <= n):
Из этих определений также непосредственно следует, что для любого z имеет место равенство cn(cn1(z), cn2 (z),..., cnn (z))=z. (Проверьте это свойство индукцией по n.)
Лемма 8.4. Рекурсивность нумерационных функций.
Для любых n >= 2 и 1 <= i <= n все определенные
выше функции cn и cni являются примитивно рекурсивными.
Доказательство Примитивная рекурсивность c2(x,y)
устанавливается непосредственно (см. задачу 8.1(а)). Функция c21(z)
задается равенством c21(z)= max_deg_div(2,z+1) и является примитивно рекурсивной (это показано в примере 8.10).
Для функции c22(z) справедливо определение c22(z) = div(2, div(2 c21(z)}, z+1) - 1) (здесь мы используем div(x,y) из задачи 8.1(e)). Примитивная рекурсивность остальных нумерационных функций следует по индукции из
их определений (см. задачу 8.10).
В следующей лемме обобщается оператор
Лемма 8.5. (совместная рекурсия) Пpедположим, что фyнкции $$\alpha _{i}^{n}(x_{1},\dots ,x_{n}) (1 \le i \le \ k)$$
и фyнкции $$\beta _{i}^{n+k+1}(x_{1}, \dots , x_{n}, y, y_{1}, \dots , y_{k}) (1 \le i \le k)$$ пpимитивно pекypсивны. Тогда фyнкции f1n+1(x1, ..., xn, y), ..., fkn+1(x1, ..., xn, y),
опpеделяемые следyющей совместной pекypсией
(1 <= i <= k) также являются пpимитивно pекypсивными.
Доказательство Обозначим чеpез $$\overline{x}$$ набоp пеpеменных x1,...,xn. Опpеделим
следyющие пpимитивно pекypсивные фyнкции: $$\ g^n(\overline{x})=
c_k(\alpha_1(\overline{x}),\ldots,\alpha_k(\overline{x}),\ \ \hat{\beta}_i(\overline{x},y,z)=\beta_i(\overline{x},y,c_{k1}(z), \ldots, c_{kk}(z))$$, $$1 \le i \le k$$, и положим
Фyнкция Fn+1 полyчена пpимитивной pекypсией из пpимитивно
pекypсивных фyнкций и, следовательно, сама пpимитивно pекypсивна.
Спpаведливость леммы тепеpь следyет из того, что для всякого $$\ i \in [1,k]\ \ f_i(\overline{x},y)= c_{ki}(F^{n+1}(\overline{x},y))$$.
Задача 8.1. Показать, что следующие функции являются
exp(x,y) = xy ;fact(x) = x ,!;min(x,y)= наименьшее из x и y ;max(x,y)= наибольшее из x и y ;div(x,y)= частное от деления y на x (пусть div(0,y)=y ).предикаты равенства и неравенства:
$$\def\text#1{#1} eq(x,y)=\left\{ \begin{array}{ll} 1, \text{ если \ x=y}\\ 0, \text{ если \ x\neq y}\end{array}\right. \qquad \overline{eq}(x)= \left\{ \begin{array}{ll} 0, \text{ если \ x=y}\\ 1, \text{ если \ x\neq y} \end{array}\right.$$Задача 8.2. Докажите, что если f(x1,...,xn) является ч.р.ф. (п.р.ф.), то и функция g(x1,...,xn)=f(x{i1},...,xin) является ч.р.ф. (п.р.ф.) для любой перестановки (i1, ..., in) чисел 1,2,...,n.
Задача 8.3. Оператор сдвига. Пусть g(x1,..., xn) - a и b >0 - числа из N. Тогда и функция
является
Задача 8.4. Показать, что следующие функции являются
n -ой степени из x (целая часть).x= 0 log(i,x) =0 ).p(x)=1, если x - простое число, и p(x)=0, если x составное.pn(k) - k -ое простое число в порядке возрастания (pn(0)=0, pn(1)=2, pn(2)=3, pn(3)=5...).t(x) = число pазличных делителей числа x (t(0)=0).d(n,m,i) - i -ый знак в m -ичном разложении числа n, т.е. если $$n=\sum_0^\infty a_i m^i$$, где 0 <= ai <= m-1, то d(n,m,i)=ai.nod(x, y)= наибольший общий делитель чисел x и y (пусть nod(0,y)=nod(x,0) =0 ).Задача 8.5.
Пусть F(x) задана соотношениями F(0)=1, F(1)=1, F(x+2)= F(x)+F(x+1)
( элементы последовательности F(x) называются числами Фибоначчи).
Покажите, что функция F(x) примитивно рекурсивна.
(Указание: покажите сначала, что функция g(x)= 2F(x) 3F(x+1) примитивно рекурсивна.)
Задача 8.6.
Докажите, что если значения общерекурсивной функции f(x) изменить
на конечном множестве, то получившаяся функция f'(x) также
будет общерекурсивной.
Задача 8.7.
Доказать, что из функции o(x)=0 и из функций выбора Imn(x1,...,xn)=xm с помощью s(x)=x+1 и функцию d(x) =2*x.
Задача 8.8. Пусть g(x1,...,xn,y) - примитивно рекурсивна. Доказать, что функция
примитивно рекурсивна.
Задача 8.9.
Доказать, что если функции f(x1,...,xn,y), g(x1,...,xn,y) и h(x1,..., xn,y)
является
Задача 8.10. Докажите, что определенные выше функция нумерации n -ок cn(x1, ... , xn) и обратные ей функции выбора i -го элемента набора cni(z) (1 <= i <= n) являются примитивно рекурсивными.
Задача 8.11. Предположим, что все пары (x,y) натуральных чисел упорядочены по возрастанию суммы (x+y), а внутри группы пар с одинаковой суммой - по возрастанию x -координаты. Этот порядок выглядит так: (0,0), (0,1), (1,0),(0,2),(1,1), (2,0),... , (0,x+y), (1, x+y-1), ... , (x,y), ... , (x+y, 0), ... .
Пусть d(x,y) - это номер пары (x,y) в этом порядке (будем считать, что пара (0,0) имеет номер 0). Тогда функция d2 однозначно нумерует все пары.
d1(z) и d2(z) такие, что d1(d(x,y))=x, d2(d(x,y))= y и, следовательно, d(d1(z), d2(z))=z.Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.