- •Ф.К. Алиев, и.А. Юров
- •Введение
- •Основные способы задания двоичных функций
- •1.1. Табличный способ задания
- •1.2. Геометрический способ задания
- •1.3. Задание двоичных функций формулами
- •Основные способы задания двоичных функций (продолжение)
- •2.1. Нормальные формы двоичных функций
- •2.2. Многочлен Жегалкина и действительный многочлен двоичной функции
- •2.3. Теорема о разложении в ряд Фурье
- •Полнота и замкнутость. Критерий полноты системы. Функционально полные системы. Замкнутые классы булевых функций
- •3.1. Полнота и замкнутость. Функционально полные системы
- •3.2. Замкнутые классы булевых функций
- •3.3. Критерий полноты системы булевых функций
- •4.1. Псевдобулевы функции
- •4.2. Функции k-значной логики
- •5.1 Минимизация двоичных функции
- •5.2. Геометрическая интерпретация минимизации днф
- •6.1. Метод Квайна — Мак-Класки нахождения сокращённой днф двоичной функции
- •6.2. Метод нахождения тупиковых днф
- •6.3. Метод Петрика нахождения тупиковых днф
- •Алгебраические системы
- •7.1. Алгебраические системы. Булевы алгебры
- •7.2. Изоморфизм алгебраических систем
- •Алгебры высказываний. Предикаты и операции над ними
- •8.1. Основные логические операции и их свойства
- •8.2. Предикаты и операции над ними
- •Исчисление предикатов
- •9.1. Общее понятие о логическом исчислении
- •9.2. Формулы алгебры предикатов
- •9.3. Равносильность формул. Основные отношения равносильности
- •9.4. Использование равносильностей для упрощения формул
- •9.5. Построение исчисления предикатов
- •9.6. Выводимость и доказуемость формул
- •9.7. Семантика исчисления предикатов
- •Понятие о теории моделей
- •Элементы теории алгоритмов
- •11.1. Основные требования к алгоритмам
- •11.2. Машина Тьюринга и функции, вычислимые по Тьюрингу
- •11.3. Машины произвольного доступа и вычислимые функции
- •Частично рекурсивные функции и их вычислимость
- •Вычислимость суперпозиции
- •Вычислимость рекурсии
- •Вычислимость минимизации
- •Нумерация наборов чисел и слов
- •Нормальные алгоритмы
- •Нумерация алгоритмов
- •1. Нумерация машин Тьюринга
- •2. Нумерация мпд-программ
- •Универсальные функции
- •Алгоритмически неразрешимые проблемы
- •16.1. Алгоритмически неразрешимые проблемы
- •16.2. Примечательные алгоритмически неразрешимые проблемы
- •Характеристики сложности вычислений
- •Характеристика сложности вычислительных задач
- •18.1. Классы сложности p и np и их взаимосвязь
- •18.3. Основные np-полные задачи. Сильная np-полнота
- •Список Литературы
2. Нумерация мпд-программ
Приведем аналогичную конструкцию по нумерации МПД-программ, которая позволит получить нумерацию МПД-вычислимых функций. Сначала определим нумерацию команд. Положим
(Z(n)) = 4(n – 1),
(S(n)) = 4(n – 1) + 1,
(T(m, n)) = 4p(m – 1, n – 1) + 2,
(J(m, n, q)) = 4(m, n, q) + 3,
где p(x, y) = 2x(2y + 1) – 1, (x, y, z) = 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) — целочисленный полином является всюду определенной и не частично рекурсивной.