Примитивно рекурсивные функции — различия между версиями
ExileHell (обсуждение | вклад)  (→IF)  | 
				ExileHell (обсуждение | вклад)   (→Деление)  | 
				||
| Строка 133: | Строка 133: | ||
<tex> \mathrm{divmax}(0,y) =\textbf 0^{1} </tex>  | <tex> \mathrm{divmax}(0,y) =\textbf 0^{1} </tex>  | ||
| − | <tex> \mathrm{divmax}(x+1,y) = \mathrm{  | + | <tex> \mathrm{divmax}(x+1,y) = \mathrm{if}(\mathrm{eq}(\mathrm{sub}(\mathrm{N}(x),\mathrm{divmax}(x,y)),y),\mathrm{N}(x),\mathrm{divmax}(x,y)) </tex>  | 
| − | |||
или не формально если <tex> x+1 - y = z </tex> то <tex> \mathrm{h}(x,y,z) = x+1  </tex>, иначе <tex> \mathrm{h}(x,y,z) = z </tex>  | или не формально если <tex> x+1 - y = z </tex> то <tex> \mathrm{h}(x,y,z) = x+1  </tex>, иначе <tex> \mathrm{h}(x,y,z) = z </tex>  | ||
Версия 22:05, 27 ноября 2016
Содержание
Рекурсивные функции
Рассмотрим примитивы, из которых будем собирать выражения:
- — ноль.
 - — функция следования.
 - — проекция.
 - — подстановка.
 - — примитивная рекурсия.
 - — минимизация.
 
,
, , где .
,
Если и , то . При этом
Если и , то , при этом
Если , то , при этом — такое минимальное число , что . Если такого нет, результат данного примитива неопределен.
| Определение: | 
| Если некоторая функция может быть задана с помощью данных примитивов(англ. primitive), то она называется рекурсивной(англ. recursive). | 
Примитивно рекурсивные функции
| Определение: | 
| Примитивно рекурсивными называют функции, которые можно получить с помощью правил, описанных выше, рекурсии из константной функции и набора функций где . | 
Заметим, что если — -местная примитивно рекурсивная функция, то она определена на всем множестве , так как получается путем правил преобразования из всюду определенных функций, и правила преобразования не портят всюду определенность. Говоря неформальным языком, рекурсивные функции напоминают программы, у которых при любых входных данных все циклы и рекурсий завершатся за конечное время.
Благодаря проекторам мы можем делать следующие преобразования:
- В рекурсии не обязательно вести индукцию по последнему аргументу. Следует из того что мы можем с помощью проекторов поставить требуемый аргумент на последнее место.
 
В дальнейшем вместо будем писать просто , подразумевая требуемое нам .
Арифметические операции на примитивно рекурсивных функциях
n-местный ноль
— функция нуля аргументов.
Выразим сначала
Теперь выразим
Константа
Константа равна
— -местная константа, получается аналогичным к образом.
Сложение
Умножения
Вычитания
Если , то , иначе .
Рассмотрим сначала вычитания единицы
Теперь рассмотрим
Операции сравнения
если , иначе
если , иначе
если , иначе
Сначала выразим
, где
Теперь все остальные функции
IF
Деление
, если . Если же , то и все связанные с делением функции равны каким то ,не интересными для нас, числами.
Сначала определим — функция равна максимальному числу меньшему или равному , которое нацело делится на .
или не формально если то , иначе
Теперь само деления
, где
или не формально если , то , иначе
Остаток от деления выражается так:
Работа со списками фиксированной длины
С помощью описанных выше арифметических операций можно выразить проверку на простоту числа и поиск - ого простого числа. Рассмотрим список из натуральны чисел , тогда ему в соответствия можно поставить число , где -тое простое число. Как видно из представления,создания списка, взятие - того элемента и остальные операции являются простыми арифметическими операциями, а следовательно примитивно рекурсивными. Поэтому будем считать что у примитивно рекурсивной функций аргументы и результат могут быть списками из натуральных чисел.
Теорема о примитивной рекурсивности вычислимых функций
| Теорема: | 
Если для  вычислимой функции  существует примитивно рекурсивная функция , такая что для любых аргументов  максимальное количество шагов, за которое будет посчитана   на МТ равно  , то   примитивно рекурсивная функция.  | 
| Доказательство: | 
| 
 Каждому состоянию МТ поставим в соответствие список из четырех чисел , где: — состояние МТ слева от головки ленты, представлено в виде числа в системы счисления с основанием равным алфавиту МТ. Младшие разряды находятся возле головки. Пробелу соответствует ноль, чтобы число было конечным. — состояние МТ справа от головки, представлено аналогично только возле головки МТ находятся старшие разряды. — номер текущего состояния — символ на который указывает головка ленты. Тогда всем переходам соответствует функция принимающая состояние МТ и возвращающая новое состояние. Покажем что она примитивно рекурсивная . При применении перехода в записывается новый символ,затем из-за сдвига головки в и в конец добавляется новая цифра или удаляется старая, затем в записываетcя символ после сдвига, и в конце перехода в записывается новое состояние автомата. Операции добавления в конец цифры или удаления последней цифры легко выражаются через простые арифметические операции, следовательно они примитивно рекурсивные. Все остальные операции являются простыми операциями над списками, а значит они тоже примитивно рекурсивные. Из этого следует что применения перехода — примитивно рекурсивная функция. В силу того что нужный переход можно выбрать используя конечное число функций следует что и также является примитивно рекурсивной функцией. Функции преобразование аргументов в формат входных данных для МТ и получения ответа по состоянию МТ также выражаются через простые арифметические операции а значит они примитивно рекурсивные. Назовем их и . Рассмотрим функцию двух аргументов которая принимает состояние МТ , число шагов и возвращает состояние МТ после шагов. Покажем что — примитивно рекурсивная функция. 
 , где Вместо подставим и в итоге получим что — примитивно рекурсивная функция. |