Рекурсивные функции — различия между версиями
(→Арифметические операции на примитивно рекурсивных функциях) |
(→Деление) |
||
Строка 97: | Строка 97: | ||
==== Деление ==== | ==== Деление ==== | ||
− | <tex> divide(x,y) = \frac{x}{y} </tex>, если <tex> y > 0 </tex>. Если же <tex> | + | <tex> divide(x,y) = \lfloor {\frac{x}{y}} \rfloor </tex>, если <tex> y > 0 </tex>. Если же <tex> y = 0 </tex>, то <tex> divide(x,0) </tex> и все связанные с делением функции равны каким то ,не интересными для нас, числами. |
Сначала определим <tex> divmax(x,y) </tex> {{---}} функция равна максимальному числу меньшему <tex> x </tex> и которое нацело делится на <tex> y </tex>. | Сначала определим <tex> divmax(x,y) </tex> {{---}} функция равна максимальному числу меньшему <tex> x </tex> и которое нацело делится на <tex> y </tex>. | ||
Строка 103: | Строка 103: | ||
<tex> divmax(0,y) =\textbf 0^{1} </tex> | <tex> divmax(0,y) =\textbf 0^{1} </tex> | ||
− | <tex> divmax(x+1,y) = h(x,y,divmax(x)) </tex>, где <tex> h(x,y,z) = if(eq(sub(I(x+1),z),y),x,z) </tex> | + | <tex> divmax(x+1,y) = h(x,y,divmax(x,y)) </tex>, |
+ | где <tex> h(x,y,z) = if(eq(sub(I(x),z),y),I(x),z) </tex>, | ||
+ | |||
+ | или не формально если <tex> x+1 - y = z </tex> то <tex> h(x,y,z) = x+1 </tex>, иначе <tex> h(x,y,z) = y </tex> | ||
+ | |||
+ | Теперь само деления | ||
+ | |||
+ | <tex> divide(0,y) =\textbf 0^{1} </tex> | ||
+ | |||
+ | <tex> divide(x,y) = h(x,y,divide(x,y)) </tex>, где <tex> h(x,y,z) = sum(z,eq(I(x),divmax(I(x),y))) </tex> | ||
+ | |||
+ | или не формально если <tex> x+1~\vdots z </tex> то <tex> h(x,y,z) = z+1 </tex>, иначе <tex> h(x,y,z) = z </tex> | ||
+ | |||
+ | Остаток от деления выражается так: | ||
+ | |||
+ | <tex> mod(x,y) = sub(x,mul(y,divide(x,y))) </tex> |
Версия 14:25, 19 января 2013
Эта статья находится в разработке!
Все рассматриваемые здесь функции действуют из подмножества
в , где - любое натуральное число.Также будем считать что натуральное число.Содержание
Примитивно рекурсивные функции
Основные определения
Рассмотрим следующие правила преобразования функций:
- Рассмотрим -местную функцию и -местных функций . Тогда после преобразования у нас появится - местная функция .
- Это правило называется правилом подстановки
- Рассмотрим -местную функцию и -местную функцию . Тогда после преобразования у нас будет -местная функция , которая определена следующим образом:
- Это правило называется правилом рекурсии,при этом будем говорить что рекурсия запускается по аргументу .
Определение: |
Примитивно рекурсивными называют функции, которые можно получить с помощью правил подстановки и рекурсии из константной функции | , функции и набора функций где .
Заметим, что если
— -местная примитивно рекурсивная функция, то она определена на всем множестве , так как получается путем правил преобразования из всюду определенных функций, и правила преобразование не портят всюду определенность. Говоря неформальным языком, рекурсивные функции напоминают программы, у которых при любых входных данных все циклы и рекурсий завершатся за конечное время.Благодаря проекторам мы можем делать следующие преобразования:
- В правиле подстановки можно использовать функции с разным числом аргументов. Например, подстановка эквивалентна , но если не константная функция то все подставляемые функции должны иметь хотя бы один аргумент.
- В рекурсии не обязательно вести индукцию по последнему аргументу. Следует из того что мы можем с помощью проекторов поставить требуемый аргумент на последнее место.
В дальнейшем вместо
будем писать просто , подразумевая требуемое нам .Арифметические операции на примитивно рекурсивных функциях
n -местный ноль
- функция нуля аргументов.
Выразим сначала
, где
Теперь выразим
, где
Константа
равна- n местная константа, получается аналогичным к образом.
Сложения
, где
Умножения
, где
Вычитания
Если
, то , иначе .Рассмотрим сначала вычитания единицы
, где
Теперь рассмотрим
, где
Операции сравнения
если , иначе
если , иначе если , иначе
Сначала выразим
, где
Теперь все остальные функции
IF
, где
Деление
, если . Если же , то и все связанные с делением функции равны каким то ,не интересными для нас, числами.
Сначала определим
— функция равна максимальному числу меньшему и которое нацело делится на .
, где ,
или не формально если
то , иначеТеперь само деления
, где
или не формально если
то , иначеОстаток от деления выражается так: