Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алиев Курс лекций по математической логике и теории алгоритмов 2003.doc
Скачиваний:
176
Добавлен:
16.08.2013
Размер:
4.53 Mб
Скачать

2. Нумерация мпд-программ

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

(Z(n)) = 4(n – 1),

(S(n)) = 4(n – 1) + 1,

(T(mn)) = 4p(m – 1, n – 1) + 2,

(J(m, n, q)) = 4(m, n, q) + 3,

где p(xy) = 2x(2y + 1) – 1, (x, yz) = p(p(x – 1, y – 1), z – 1).

Ясно, что функция  эффективно вычислима. Для вычисления действуем так:

Находим числа u, v, такие, что x = 4u + v, где . Тогда имеем:

Z(u + 1), если v = 0;

S(u + 1), если v = 1;

T(l(u) + 1, r(u) + 1), если v = 2;

J(m, n, q), если v = 3, где (m, n, q) = .

Следовательно, функция также эффективно вычислима.

Пусть теперь дана МПД-программа P = I1. . .Is. Определим ее номер (Р) = ((I1), …, (Is)), где

(x1, …, xs) = .

Ясно, что тем самым определена биекция  множества программ в множество натуральных чисел, причем функции  и -1 эффективно вычислимы, по программе Р эффективно находится ее номер n = (P), а по номеру n можно эффективно найти программу Р такую, что n = (P). Число (P) называется номером программы Р. Например, если Р = I1I2I3, где I1 = T(3, 1), I2 = S(4), I3 = Z(6), то

(T(3, 1)) = 18, (S(4)) = 13, (Z(6)) = 20.

Следовательно, (P) = 218232253 – 1. Пусть теперь дано n = 4127. Поскольку 4127 = 25 + 212 – 1, то Р = I1I2, где (I1) = 5, (I2) = = 18 – 5 – 1. Следовательно, I1 = S(2), I2 = T(2, 1).

Разумеется, существуют и другие способы нумерации программ, для нас важна лишь эффективная вычислимость функций  и -1.

Таким образом, получаем эффективную нумерацию МПД-программ:

P0, P1, P2, …, Pn, … .

Теперь, имея нумерацию МПД-программ, можно занумеровать МПД-вычислимые функции. Для любого a  N и n  1 определим n-местная функция, вычислимая программой с номером а. Это дает нумерацию n-местных МПД-вычислимых функций ,,, …

Например, если а = 4127, то согласно определению имеем:

, n = 1;

, n > 1.

Поскольку для всякой частично рекурсивной функции существует вычисляющая ее МПД-программаР, то , гдеa = (P). Число а называют номером (индексом) функции .

Приведем одно применение существования нумерации частично рекурсивных функций.

Теорема 15.2. Существует всюду определенная функция, не являющаяся частично рекурсивной.

Доказательство. Построим всюду определенную функцию , отличающуюся от каждой частично рекурсивной функции f0, f1, …, fn, … в перечислении одноместных частично рекурсивных функций. Полагаем

Функция  всюду определена и отличается от fn при x = n, n  N0. Действительно, если fn(n) определено, то (n) = fn(n) + 1, если fn(n) не определено, то (n) определено и равно 0. Поскольку  отличается от fn при всех n  N0, то  не может находиться в перечислении (10) и, значит, она не может быть частично рекурсивной, что и требовалось доказать.

Замечание. 15.3. Приведенный метод рассуждения есть пример диагональной конструкции Кантора, с помощью которой им была доказана несчетность множества действительных чисел. Данным методом можно установить нерекурсивность большого класса функций.

Например, функция

причем p(x) — целочисленный полином является всюду определенной и не частично рекурсивной.