
- •Вопросы к экзамену
- •Образцы экзаменационных билетов
- •1. Дедуктивный характер математики. Предмет математической логики, ее роль в вопросах обоснования математики.
- •1. Днф. Теорема о разложении функций по переменным. Алгоритм приведения к сднф.
- •Приложение 1
- •Аксиоматические теории
- •1. Понятие аксиоматической теории
- •2. Как возникают аксиоматические теории
- •3. Примеры аксиоматических теорий
- •4. Интерпретации и модели аксиоматической теории
- •5. Свойства аксиоматических теорий
- •Упражнения
- •Упражнения
- •6. Формулировка аксиоматической теории
- •Упражнения
- •Литература
- •Приложение 2
- •Вычислимость. Введение в теорию алгоритмов
- •Введение
- •1. Интуитивное понятие алгоритма
- •Упражнения
- •2. Свойства алгоритмов
- •3. Уточнение понятия алгоритма
- •Упражнение
- •Упражнения
- •Упражнение
- •4. Нумерация программ для мнр
- •5. Нумерация вычислимых функций
- •Упражнение
- •Упражнения
- •6. Универсальные программы
- •7. Алгоритмически неразрешимые проблемы
- •Упражнения
Упражнения
5.2. Используя диагональный метод, докажите что множество всех функций из N в N несчетно (Кантор).
5.3. Докажите, что множество всех невычислимых всюду определенных функций из N в N несчетно.
6. Универсальные программы
В этом разделе мы докажем несколько неожиданный результат, состоящий в том, что существуют универсальные программы, то есть программы, которые в некотором смысле реализуют все другие программы. Этот результат является одним из основных результатов теории вычислимости.
Определение 6.1. Универсальной функцией для n-местных вычислимых функций называется (n+1)-местная функция
.
Для примера
рассмотрим функцию
.
Эта функция реализует все одноместные
вычислимые функции
.
Действительно, для произвольного
неотрицательного целого числа т
функция
совпадает с функцией
.
Таким образом, название функции
вполне соответствует классу вычисляемых
ею одноместных функций.
Ниже для простоты
вместо
будем писать
.
Теорема
6.1. Для каждого натурального
числа n универсальная
функция
вычислима.
Доказательство.
Покажем, как можно вычислить значение
функции
для заданного числа m
и фиксированного набора (x1,
..., xn).
Неформальная процедура вычисления
значения
состоит в следующем: «Декодируйте число
m и восстановите
программу Рm.
Затем имитируйте вычисление по этой
программе. Если вычисление по программе
заканчивается, требуемое значение
содержится в регистре R1».
По тезису Черча заключаем, что
функция
вычислима.
Определение 6.2. Любая программа Р(n), вычисляющая функцию , называется универсальной программой.
Универсальные программы полностью соответствуют своему названию. Действительно, так как универсальная программа Р(n) позволяет вычислить любую n-местную вычислимую функцию, то, по сути дела, программа Р(n) заменяет абсолютно все программы для вычисления n-местных функций.
Проиллюстрируем теперь, как использовать вычислимость универсальных функций в диагональных построениях.
7. Алгоритмически неразрешимые проблемы
Основным стимулом, приведшим к выработке понятия алгоритма и созданию теории алгоритмов, явилась потребность доказательства неразрешимости многих проблем, возникших в различных областях математики. Специалист, решая задачу, всегда должен считаться с возможностью того, что она может оказаться неразрешимой.
При доказательстве неразрешимости той или иной проблемы часто используется так называемый метод сводимости, заключающийся в следующем. Пусть, например, в результате некоторых рассуждений удалось показать, что решение проблемы Pr1 приводит к решению другой проблемы Pr2. В этом случае говорят, что проблема Pr2 сводится к проблеме Pr1. Таким образом, если проблема Pr2 сводится к проблеме Pr1, то из разрешимости Pr1 следует разрешимость Pr2 и, наоборот, из неразрешимости Pr2 следует неразрешимость Pr1. В данном разделе метод сводимости используется при доказательстве теоремы 7.3.
Ниже доказывается неразрешимость ряда известных проблем.
Теорема
7.1. Проблема «функция
всюду определена» неразрешима.
Доказательство. Пусть g - характеристическая функция этой проблемы
Нам надо показать, что функция g невычислима.
От противного, предположим, что g - вычислимая функция. Рассмотрим функцию
Функция f всюду определена и отличается от каждой вычислимой функции .
Применяя g и универсальную функцию , запишем f в виде:
Из вычислимости функций g и по тезису Черча следует вычислимость функции f.
Полученное противоречие доказывает невычислимость функции g. Таким образом, проблема «функция всюду определена» неразрешима.
Обозначим область
определения
и множество значений
функции
через
и
соответственно.
Теорема
7.2. Проблема «
»
неразрешима.
Доказательство. Характеристическая функция этой проблемы задается следующим образом:
Предположим, что функция g вычислима, и приведем это предположение к противоречию.
Рассмотрим функцию
Так как функция g
вычислима, то по тезису Черча функция
f также вычислима. С
другой стороны, для любого x
область определения Dom(f)
функции f отлична от
области определения
,
и, следовательно,
.
Таким образом, предположение о вычислимости характеристической функции g неверно. Поэтому проблема « » неразрешима.
Замечание
7.1. Доказанная теорема вовсе не
утверждает, что мы не можем для любого
конкретного числа a
сказать, будет ли определено значение
.
В теореме лишь утверждается, что не
существует единого общего метода решения
вопроса о том, будет ли значение
определено.
Замечание
7.2. Проблему «
»
называют также проблемой самоприменимости.
Такое название связано с формулировкой
проблемы в форме: «Остановится ли МНР,
работая по программе
с начальной конфигурацией (x)?».
Другими словами: «Применима ли программа
к своему кодовому номеру?».
Теорема
7.3. Проблема «
»
неразрешима.
Доказательство. Если бы проблема « » была разрешима, то была бы разрешима более простая проблема « », что противоречит доказанной выше теореме.
Замечание 7.3. Доказанную теорему часто интерпретируют как утверждение о неразрешимости проблемы остановки, в которой говорится, что не существует общего метода, устанавливающего, остановится ли некоторая конкретная программа, запущенная с некоторым конкретным набором начальных данных.
Смысл этого утверждения для теоретического программирования очевиден: не существует общего метода проверки программ на наличие в них бесконечных циклов.
В доказательстве теоремы мы показали, что проблема остановки « », по крайней мере, не проще, чем проблема самоприменимости « ». Мы свели вопрос о неразрешимости одной проблемы к другой. Это прием часто используется при доказательстве неразрешимости проблем.
8. s-m-n-теорема
В этом разделе мы докажем теорему, принадлежащую к числу основных результатов теории алгоритмов. Суть теоремы в следующем. Допустим, что f(х, у) - вычислимая функция. Для каждого фиксированного значения a переменной х функция f порождает одноместную вычислимую функцию ga(y) = f(a, у). Из вычислимости функции ga следует существование индекса b такого, что f(a, у) = fb(у). Оказывается индекс b можно эффективно вычислить по параметру а.
Теорема 8.1 (s-m-n-теорема, простая форма). Пусть f(х, у) -вычислимая функция. Существует всюду определенная вычислимая функция s(x), такая, что f(х, у) = fs(x)(у).
Доказательство. Из вычислимости функции f(х, у) следует существование МНР-программы Pr, которая, исходя из начальной конфигурации (x, y, 0, 0, ...), вычисляет значение функции f от двух аргументов х и у. Изменим программу Pr, добавив спереди команды, преобразующие начальную конфигурацию
-
R1
R2
R3
R4
...
y
0
0
0
...
(*)
в конфигурацию
-
R1
R2
R3
R4
...
a
y
0
0
...
следующим образом:
T(1, 2)
Z(1)
Pr
Новая программа Pr1, примененная к начальной конфигурации (*), вычисляет значение функции ga(y) = f(a, у) от одного аргумента у.
Теперь рассмотрим
функцию s(a) = (Pr1),
сопоставляющую произвольному
неотрицательному целому числу a
геделев номер программы Pr1.
Функция s всюду
определена и по тезису Черча вычислима.
Кроме того, по построению fs(a)(у)
= f(a, у) для каждого
.
Замечание 8.1. Сформулированную теорему называют также теоремой параметризации, поскольку она позволяет по заданной вычислимой функции f(x, у) и фиксированному параметру a найти геделев номер s(a) программы, вычисляющей функцию fs(a)(у) = f(a, у).
Доказанная выше теорема 8.1 является частным случаем более общей теоремы.
Теорема
8.2 (s-m-n-теорема). Пусть m,
n – натуральные
числа,
- вычислимая функция с геделевым номером
a. Существует всюду
определенная вычислимая функция
такая, что
.
Доказательство сформулированного утверждения аналогично доказательству теоремы 8.1.
Замечание
8.2. Название теоремы 8.2 связано с
обозначением
для функций в формулировке теоремы.
Покажем теперь, как можно использовать s-m-n-теорему для доказательства неразрешимости проблем. s-m-n-теорема часто используется для сведения проблемы « » к другим проблемам.
Теорема
8.3. Проблема «
»
неразрешима.
Доказательство. Рассмотрим функцию
По тезису Черча
функция f(x, y)
вычислима. Отсюда по s-m-n-теореме вытекает
существование всюду определенной
вычислимой функции s(x)
такой, что
.
По определению функции f(x, y)
имеем:
.
Следовательно,
истинность условия
можно установить, определив справедливость
равенства
.
Тем самым мы свели проблему «
»
к проблеме «
».
Поскольку первая из них неразрешима,
то неразрешима и вторая.
Замечание 8.3. Теорема 8.3 показывает, что в области проверки правильности компьютерных программ имеются принципиальные ограничения. В ней говорится о том, что не существует алгоритма проверки того, будет ли программа вычислять нулевую функцию. Несколько изменив доказательство теоремы 8.3, можно убедиться в том, что то же самое справедливо и для любой другой конкретной вычислимой функции.
Теорема
8.4. Проблема
неразрешима.
Доказательство.
Допустим, что проблема
разрешима. Тогда разрешима и проблема
,
где c – индекс функции
0
.
Однако, это противоречит теореме 8.3.
Таким образом, проблема
неразрешима.
Замечание 8.4. Из теоремы 8.4 следует, что вопрос о том, вычисляют ли две программы одну и ту же одноместную функцию, неразрешим. Важность этого результата для теоретического программирования очевидна.