Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 2 Демо.doc
Скачиваний:
5
Добавлен:
06.11.2018
Размер:
71.17 Кб
Скачать

Правила построения примитивно-рекурсивных функций

  1. Правило суперпозиции

Если F(y1, …, yn) примитивно рекурсивна и g1(x1,…,xk), g2(x1,…,xk), ... gn(x1,…,xk) примитивно рекурсивны, то

H(x1, …, xk) =df= F(g1( x1,…,xk), g2(x1,…,xk), . . . gn(x1,…,xk)) также примитивно рекурсивна

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

Если F(x1,…,xn-1), G(x1,…,xn, xn+1) примитивно-рекурсивные функции, то функция H(x1,…, xn), определяемая соотношениями

а) H(x1, … , xn-1, 0) =df= F(x1,…,xn-1)

b) H(x1, … , xn-1, s(y)) =df= G(x1,…,xn-1, y, H(x1, … , xn-1, y))

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

  1. Функция называется примитивно-рекурсивной, если она определена с помощью конечного числа правил 1, 2 из функций, определенных правилом 0 (из базисных примитивно-рекурсивных функций).

    Суть рекуррентных (рекурсивных) определений:

  • Определяются базисные (элементарные) объекты определяемого класса.

  • Определяются правила построения объектов – такие правила, применения которых к (уже определенным) объектам приводит к построению новых объектов определяемого класса.

  • Объектами определяемого класса объявляются только те, которые могут быть построены из базисных с применения помощью конечного числа правил построения.

Упражнение. Определить класс управляющих структур алгоритмов с помощью рекурсивных определений.

Многие классы функций, используемые в математике, обладают свойствами 0 и 1, т.е. содержат функции s(x), o(x), pi(x1, …, xn) и замкнуты относительно операции суперпозиции.

«Эксклюзивность» и, как следствие, имя классу примитивно-рекурсивных функций дает правило (схема) примитивной рекурсии.

Отметим, что функция проектирования pi(x1, …, xn) используется для решения технической проблемы представления функции одного переменного как функции многих переменных.

Обоснование вычислимости функций, определяемых правилом 2

Вход: x1,…,xn-1 , y

H := F(x1,…,xn-1),

Для i := 1 до y выполнить H := G( x1,…,xn-1 ,i, H )

Выход: H

Переменные x1,…,xn-1 играют роль параметров (не меняют значения в теле цикла). Переменная y - верхнее значение параметра цикла. Вычисление каждого следующего значения H использует предыдущее значение Н.

Пример: П. Р. Функция Add сложения двух натуральных чисел

Add(x, o) = x; {x + 0 = x}

Add(x,s(y)) = s(Add(x, y)) {x + (y + 1) = (x + y) + 1

Мю-оператор

Основной результат о примитивно-рекурсивных функциях и их связи с императивными алгоритмами можно сформулировать так:

Примитивно-рекурсивные функции вычислимы. Вычисление прими­тивно-рекурсивной функции можно реализовать в виде императивного алгоритма, использующего число 0, функцию s, оператор присваивания и оператор повторения с параметром.

Можно построить пример вычислимой функции, не принадлежащей классу примитивно-рекурсивных функций

Функция Аккермана

Функция Аккермана А(x, y) определена на множестве натуральных чисел рекурсивно:

A(0, y) = y + 1,

A(x, 0) = A(x - 1, 1),

A(x, y) = A(x - 1, A(x, y - 1));

Упражнение

a) Опишите функции A(1, y), A(2, y), A(3, y), A(4, y) явным образом;

б) Реализуйте рекурсивную программу вычисления A(x, y);

в) Реализуйте программу вычисления A(x, y) без рекурсии.

Для формализации класса вычислимых функций правила примитивной рекурсии недостаточно. Более того, никакое “разумное” расширение класса ПРФ до формально описанного класса всюду определенных функций, являющихся вычислимыми, невозможно.

Поэтому любой формализм неибежно приводит к частично-определенным функциям (функциям, не определенным при некоторых значениях аргумента). Свойство результативности алгоритма оказывается нетривиальным.

Правило -операции

Пусть F(x1,…,xn,y) – вычислимая функция. Тогда функция G(x1,…,xn), определенная правилом

G(x1,…,xn) = { Наименьшее y | F(x1, …, xn, y) = 0 }

является (по определению) результатом применения -операции к функции F(x1,…,xn, y). Стандартная форма записи -операции:

G(x1,…,xn) = y ( F(x1, …, xn, y) = 0 }

Говорят, что функция G – результат применения -оператора к функции F.

Решение уравне­ния F(x1, …, xn, y) = 0 для любой вычислимой функции F возможно осуществить последовательным пере­бо­ром значений y, однако такой способ решения не дает гарантии того, что перебор когда-нибудь завершится.

Если это уравнение не имеет решения, перебор не завершится, и, следовательно, значение функции G не будет найдено.