
- •Основы теории алгоритмов и нумераций
- •Оглавление
- •Введение*
- •Глава 1. Рекурсивные и примитивно-рекурсивные функции
- •Обозначения
- •Примитивно рекурсивные функции
- •Примеры
- •Функции Аккермана
- •Примеры
- •Общерекурсивные и частично рекурсивные функции
- •Глава 2. Машины тьюринга
- •Определения
- •Табличноеиграфическоезадания машинТьюринга
- •Графическое представление
- •Табличное значение машины
- •Некоторые операции над машинами Тьюринга
- •Композиция машин Тьюринга
- •Разветвление машин Тьюринга
- •Универсальная машина Тьюринга
- •Тезис Черча. Связь рекурсивных функций с машинами Тьюринга
- •Примеры
- •Глава 3. Вычислимость и разрешимость
- •Обсуждение
- •Нумерации алгоритмов
- •Некоторые теоремы в теории алгоритмов.
- •Глава 4. Рекурсивные и рекурсивно перечислимые множества.
- •Характеристические функции множеств.
- •Рекурсивные и примитивно рекурсивные множества.
- •Рекурсивно перечислимые множества.
- •Основная теорема.
- •Примеры.
- •Глава 5. Основные нумерации в теории алгоритмов
- •Нумерация пар и-ок чисел.
- •Кодирование всех-ок.
- •Нумерация конечных множеств.
- •Нумерации Клини и Поста.
- •Нумерация семейства всех двухэлементных множеств.
- •Глава 6. Степени неразрешимости.
- •- Сводимость.
- •- Степени.
- •Теорема о редукции.
- •Примеры.
- •Глава 7. Нумерованные совокупности.
- •Нумерации множества.
- •Некоторые теоремы о нумерациях множеств
- •Глава 8. Приложения теории алгоритмов к разрешимости некоторых проблем.
- •Теорема Райса.
- •Разрешимость проблем распознавания и классификации.
- •Литература
- •Основы теории алгоритмов и нумераций.
Нумерации алгоритмов
Множество всех алгоритмов счетно. Ведь
любой алгоритм можно задать конечным
описанием (например, в алфавите знаков,
используемых при наборе математических
книг), а множество всех конечных слов в
фиксированном алфавите счетно. Счетность
множества алгоритмов означает наличие
взаимно-однозначного соответствия
между алгоритмами и числами натурального
ряда, т.е. функции типа
,
взаимно-однозначно отображающей слова
в алфавите
,
выбранном для описания алгоритмов в
числа натурального ряда. Такая функция
называетсянумерациейалгоритмов,
а ее аргумент
-
номером алгоритма
при нумерации
.
Из взаимной однозначности отображения
следует существование обратной функции
,
восстанавливающей по описанию алгоритма
его номер
.
Функцию
можно назвать перечислением множества
алгоритмов.
Нумерация всех алгоритмов является
одновременно и нумерацией всех вычислимых
функций в следующем смысле: номер функции
- это номер некоторого алгоритма
вычисляющего
.
В любой нумерации всякая функция будет
иметь бесконечное множество различных
номеров. Это ясно из того, что к любой
машине Тьюринга можно добавить любое
количество недостижимых состояний
(т.е. состояний, не встречающихся в правых
частях команд), все полученные машины
имеют различные номера, но вычисляют
одну и ту же функцию. Говоря о нумерации,
будем считать, что она выбрана так, что
алгоритм
и вычислимая им функция
нигде не определена. Существование
нумерации позволяет работать с алгоритмами
как с числами. Это удобно при исследовании
алгоритмов.
Некоторые теоремы в теории алгоритмов.
Теорема 1. (о
существовании универсального алгоритма).
Существует универсальный алгоритм
такой, что для любого алгоритма
с номером
;
в других обозначениях
,
-
номер алгоритма
Теорема 2.
Не существует алгоритма, который по
номеру
любого алгоритма и исходным данным
определял бы, остановится алгоритм при
этих данных или нет; иначе говоря, не
существует алгоритма
такого, что для любого алгоритма
(c
номером
),
Теорема 2 – переформулировка в инвариантом виде теоремы 3 о неразрешимости проблемы остановки.
Теорема 3. (о
неразрешимости проблемы остановки).
Не существует машины Тьюринга
,
решающей проблему остановки для
произвольной машины Тьюринга
.
Теорема 4. (о
самоприменимости алгоритмов).
Проблема самоприменимости алгоритмов
алгоритмически неразрешима: не существует
алгоритма
такого, что для любого алгоритма
:
Самоприменимость
– частный случай проблемы остановки и
именно поэтому теорему 4 нельзя получить
из теоремы 2 простой подстановкой
вместо
в
:
частный случай алгоритмически неразрешимой
проблемы может оказаться и разрешимым.
Теоремы 2, 4 являются мощным средством для доказательства различных неразрешимостей.
Теорема 5.
Для любого перечисления семейства
всюду определенных вычислимых (т.е.
общерекурсивных) функций существует
общерекурсивная функция, не входящая
в это перечисление.
Доказательство.
Пусть
— перечисление
,
порождающее последовательность
,
,
,
… всюду определенных функций. Введем
функцию
.
Так как
общерекурсивна, то и
общерекурсивна. Если
принадлежит
,
то
имеет номер
и, следовательно,
. (*)
Заметим, что
– о.р.ф.,
– п.р.ф.,
– о.р.ф.
Тогда в точке
по определению
:
,
а в силу (*) :
.
Получаем противоречие, откуда следует,
что
не входит в перечисление, порождаемое
.
Если же в перечислении
допускаются частичные
функции, то
определение
не приводит к противоречию, а означает
лишь, что в точке
не определена.
Cледовательно теорема 5 для ч.р.ф. не имеет места, а верна только для о.р.ф.
Из теоремы 5 следует весьма важный результат.
Теорема 6.
Проблема определения общерекурсивности
алгоритмов неразрешима: не существует
алгоритма
такого, что для любого алгоритма
:
Доказательство.
Пусть алгоритм
существует, тогда он определяет
общерекурсивную функцию
.
Определим функцию
следующим образом:
где
– оператор минимизации.
Так как номеров
всюду определенных функций (и,
следовательно, точек
,
в которых
)
— бесконечное множество, то
всюду определена. Очевидно, что функция
из списка
,
,
,…
всех алгоритмов отбирает все всюду
определенные алгоритмы, т.е. является
перечислением множества всех
общерекурсивных функций. Из теоремы 5
следует, что такое перечисление невозможно
и, следовательно, алгоритма
,
определенного в условии теоремы 6, не
существует.
Теоремы 4, 5, 6 проливают свет на роль понятия частичной определенности в теории алгоритмов. Еще вначале говорилось о желательности такого требования, как результативность алгоритма. (Отметим, что существенность такого требования проявляется в понятии неразрешимости: неразрешимость проблемы истолковывается как отсутствие всюду определенного алгоритма, решающего эту проблему).
Первым ударом по
этому требованию была неразрешимость
проблемы остановки, означающая, что
если алгоритм
может бытьчастичным,
то по алгоритму
и данным
нельзя узнать, дает ли
результат по данным
.
Возникает естественное желание:
1) либо вообще убрать частичные алгоритмы из общей теории алгоритмов, т.е. не считать их алгоритмами;
2) либо ввести стандартный метод доопределения частичных алгоритмов.
Однако ни первое, ни второе эффективными методами сделать нельзя. Первая идея не годится, из-за теоремы 6 — нет эффективного способа распознать частичные алгоритмы среди множества всех алгоритмов, и, следовательно, предлагаемый отбор невозможен. Что же касается второй идеи, то для нее имеется не менее убедительное опровержение.
Теорема 7.
Существует такая частично рекурсивная
функция
,
что никакая общерекурсивная функция
не является ее доопределением.
Доказательство.
Определим
следующим образом:
Как и прежде
предполагается, что зафиксирована
нумерация
и
.
Очевидно, что
вычислима. Пусть теперь
— произвольная общерекурсивная функция,
и
- ее номер:
.
Так как
всюду определена, то
определена
и, следовательно,
.
Таким образом, для любой общерекурсивной
функций
,
в точке
.
Следовательно, существуют частичные алгоритмы, которые нельзя доопределить до всюду определенных алгоритмов.
Наконец, еще одна идея: построить язык, описывающий все всюду определенные алгоритмы, и только их — не может осуществиться потому, что описания в этом языке можно упорядочить (например, лексикографически) и, следовательно, наличие такого языка означало бы существование полного перечисления всех всюду определенных функций, что .противоречит теореме 5.
Таким образом, при формулировке общего понятия алгоритма неизбежно возникает дилемма — либо определение алгоритма должно быть достаточно общим, чтобы в число объектов, удовлетворяющих этому определению, заведомо вошли все объекты, которые естественно считать алгоритмами, либо требование об обязательной результативности алгоритма сохраняется. В первом случае этому определению будут удовлетворять частичные алгоритмы и избавиться от них конструктивными методами нельзя; во втором случае никакую процедуру нельзя назвать алгоритмом до тех пор, пока для нее не будет решена проблема остановки, а единого метода решения этой проблемы не существует. В обшей теории алгоритмов (для того, чтобы она действительно была общей) используется первый вариант. Впрочем, еще раз отметим, что, когда речь идет об алгоритме, решающем данную задачу, теория алгоритмов обязательно требует сходимости (результативности), и только в случае, когда алгоритм решения всюду определен, соответствующая задача считается разрешимой.