Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
98
Добавлен:
09.02.2015
Размер:
68.57 Кб
Скачать

Экстраалгоритм и неразрешимые проблемы

Вернемся на время к нормальным алгоритмам. Мы помним, что запись нормального алгоритма в алфавите А содержит, кроме букв в А, еще две буквы стрелка и точка.

Введем временно еще одну букву, не одинаковую ни с одной из указанных двух букв и не являющуюся буквой в А.

Пусть это будет для определенности λ. Запись нормального алгоритма можно превратить в слово, выписывая его формулы одну за другой и разделяя их буквами λ. Такое слово очень легко снова превратить в запись нормального алгоритма (столбец формул). Теперь можно придумать некоторый прием кодирования, в результате которого полученное слово станет словом в А, конечно при условии, что алфавит А состоит не менее, чем из двух букв. Этот способ кодирования, например, может быть следующим. Перенумеруем все буквы алфавита. Пусть при этом будут использованы номера 1, 2, ..., k (k – число букв, входящих в А). Далее, букве «→» присвоен номер k+1, букве «•» – номер k+2, а букве λ, – номер k+3. Возьмем теперь какие-либо две буквы в А. Пусть для определенности это будут а и b.

Будем кодом j-й буквы (по нашей нумерации) считать слово в A, начинающееся буквой а, содержащее затем j букв b и кончающееся снова буквой а. Например, код четвертой буквы будет иметь вид

a b b b b a.

Заменяя в слове, которое получили из записи нормального алгоритма, все буквы их кодами, получим (новое) слово в А, являющееся кодом нормального алгоритма.

Условимся, что алгоритм F: а) применим к алгоритму Ф, если он применим к его коду, и б) неприменим к алгоритму Ф, если он неприменим к его коду. Теперь можно говорить о самоприменимости нормального алгоритма или о его несамоприменимости.

Легко убедиться в том, что нормальный алгоритм в алфавите А, применимый ко всем несамоприменимым и только несамоприменимым алгоритмам, невозможен (не существует). Если бы он существовал, то не мог бы быть самоприменимым, так как он применим только к несамоприменимым алгоритмам. Одновременно он не мог бы быть и несамоприменимым, так как он применим ко всем несамоприменимым, а значит, и к себе.

Такой нормальный алгоритм, назовем его нормальным экстраалгоритмом в А, не существует. Можно доказать, что не существует и нормального экстраалгоритма над А.

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

Оказывается, что невозможен алгоритм, который распознавал бы несамоприменимость нормальных алгоритмов. Такой алгоритм, если бы он существовал, должен бы быть применимым к любому нормальному алгоритму и перерабатывать его в некоторое определенное слово, если он несамоприменим. Это определенное слово, если оно получится, будет обозначать ответ «да».

В случае отрицательного ответа может получаться либо какое-нибудь определенное слово, либо любое слово, отличное от слова, имеющего смысл «да» (естественно считать, что если не «да», то «нет»). В дальнейшем для краткости условное слово, обозначающее «да», будем называть словом «да».

Докажем, что алгоритм распознавания несамоприменимости нормальных алгоритмов невозможен. Для этого предположим, что такой алгоритм существует. Назовем его В. Тогда можно построить следующий алгоритм (обозначим его С).

1. Выполнить алгоритм В. Перейти к следующему пункту.

2. Если получен ответ «да», то перейти к п. 3, иначе перейти к п. 4.

3. Окончить процесс.

4. Перейти к п. 4.

Алгоритм С применим к каждому несамоприменимому нормальному алгоритму (и дает для него результат «да»), а в случае, когда алгоритм несамоприменим (ответ «да» алгоритмом В не получен), его выполнение продолжается бесконечно (он «зацикливается» на п. 4). Но тогда С применим ко всем несамоприменимым и только несамоприменимым нормальным алгоритмам в А. Он, следовательно, является экстраалгоритмом. Значит, разрешимость проблемы распознавания несамоприменимости привела бы к абсурду. Поэтому указанная проблема неразрешима.

Но теперь ясно, что неразрешима и проблема распознавания самоприменимости. В самом деле, если бы существовал алгоритм D, распознающий самоприменимость, то существовал бы и такой алгоритм.

1. Выполнить алгоритм D. Перейти к п. 2.

2. Если получено слово «да», перейти к п. 3, иначе перейти к п. 4.

3. Написать «нет». Конец.

4. Написать «да». Конец.

Но последний алгоритм распознавал бы несамоприменимость нормальных алгоритмов в А. Как мы знаем, это невозможно, значит, невозможен и алгоритм D.

Теорема 8.3. Проблема распознавания применимости произвольного нормального алгоритма в А к произвольному слову в А неразрешима.

Допустим противное. Пусть существует алгоритм E, который по заданному алгоритму в A и заданному слову в А распознает, применим ли указанный алгоритм к указанному слову.

Но отличить, является ли слово в А кодом заданного нормального алгоритма или не является, нетрудно. Будем считать, что для этого нами построен некоторый алгоритм G.

Тогда можно построить алгоритм Н:

1. Применить G к заданному слову в А. Перейти к и. 2.

2. Если G дал слово «да», перейти к п. 3, иначе перейти к п. 4.

3. Выполнить алгоритм Е. Конец.

4. Перейти к выполнению п. 4.

Алгоритм H является алгоритмом, распознающий самоприменимость нормальных алгоритмов в A. Следовательно, он невозможен. Но тогда невозможен и алгоритм Е, так как предположение о его возможности привело к противоречию. Тем самым теорема доказана.

Очевидно, что некоторые массовые проблемы, вовсе не имеющие абсурдного характера, неразрешимы потому, что из их разрешимости можно было бы вывести абсурд. Нужно заметать, что неразрешимость (массовой) проблемы распознавания применимости нормального алгоритма в А к слову в А совсем не означает, что мы вообще не можем распознавать применимость конкретного алгоритма к конкретному слову или к различным словам.

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

Не значит ли это, что неразрешимость связана с тем, что исследуемая проблема является «слишком массовой»? Нет, не значит, потому что, вводя ограничения на алгоритмы или на слова, или и на то и другое, можно все множество одиночных проблем, входящих в состав массовой проблемы, оставить бесконечным (счетным), имеющим то же кардинальное число, что и исходное множество, но тем не менее получить разрешимую проблему. В некоторых случаях множество одиночных проблем неразрешимой проблемы оказывается подмножеством аналогичного множества одиночных проблем, образующих разрешимую проблему.

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

В частности, для машины Тьюринга можно провести следующие рассуждения.

Рассмотрим МТ и множество всех программ этой машины.

Будем называть МТ самоприменимой, если она применима к коду своей программы. Напомним, что применимость означает, что существует конечный алгоритм преобразования.

Разделим все программы МТ на самоприменимые (СП) и несамоприменимые (НСП).

Предположим, что существует программа, которая может распознавать СП по коду программы МТ, тогда запишем 1 – если алгоритм СП и 0 – если алгоритм НСП

.

Построим программу F’, которая будет действовать следующим образом: если СП, то она возвращает 1 и переходит в начало, если НСП, то 0 и заканчивает работу. Очевидно, эта программа построена с помощью программы F. Если F дает 0, то F’ останавливается, если 1, то возвращается в начало. Таким образом, программа F’ будет применима к любой НСП с результатом 0 и не будет применима ник одной СП, так как будет зацикливаться. Так как программа F’ является программой МТ, то она должна быть либо СП, либо НСП. Проверим это.

  1. Пусть F’ СП, тогда она должна быть применима к собственному коду, но по смыслу F’ не применима ни к одной СП программе, следовательно, F’ не может быть СП.

  2. Пусть F’ НСП, тогда по смыслу она должна быть применима к собственному коду с результатом 0. Однако, F’ является НСП, то есть получили противоречие

Очевидно, что F’ – экстра алгоритм (невозможный алгоритм). Данная ситуация полностью аналогична парадоксам теории множеств, в частности, парадоксу «брадобрея» (см. лекцию 1).

От нашего предположения о существовании алгоритма F мы пришли к экстра алгоритму, следовательно, алгоритм F не существует, то есть, наше предположение не верно. Мы доказали теорему самоприменимости.

Теорема самоприменимости 8.4. Невозможно существование МТ, которая проверяет самоприменимость МТ.

Пользуясь тезисом Тьюринга, условие теоремы можно переформулировать для алгоритмов.

Невозможен алгоритм, который бы проверял применимость алгоритма к самому себе.

Из этого вывода можно сделать более широкий вывод.

Вывод. Нельзя создать алгоритм, который проверял бы применимость произвольного алгоритма к произвольным данным.

Проблема остановки – это возможность проверки кода программы на её остановку (то есть проверка возможности зацикливания).

Поскольку программа – это запись алгоритма, то обеспечить 100%-ную проверку остановки можно только алгоритмом, который убеждается в конечности работы другого алгоритма по его коду. Так как исходные данные для этой программы считаются любыми. То отсюда следует, что эта задача эквивалентна применимости произвольного алгоритма к произвольным данным. В общем виде задача не разрешима. Данное утверждение не отрицает возможности создания алгоритма проверки остановки для частных случаев. Таким образом, разработанный в классической теории алгоритмов метод экстра алгоритмов позволил определить невозможность алгоритмического решения проблем.

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

Из широко известных неразрешимых проблем укажем 10-ю проблему Гильберта, выдвинутую им в числе других в 1901 г. на Международном математическом конгрессе в Париже. Она гласит: найти алгоритм, определяющий для любого диофантова уравнения, имеет ли оно целочисленное решение. Диофантово уравнение обычно пишут в виде F(х, у,...)=0, где F(х, у,...) – многочлен с целыми показателями степеней и целыми коэффициентами.

Для частного случая диофантова уравнения аnхп + ап-1хп-1+... + а1х+а0 = 0 проблема решена. Известно, что всякий целый корень такого уравнения является делителем числа а0. Искомый алгоритм поэтому заключается в разложении а0 на простые множители, построении всех делителей числа а0 и последовательной проверке каждого делителя подстановкой его в левую часть. При этом все целые решения будут найдены.

В общем случае 10-я проблема Гильберта долго оставалась нерешенной и только в 1970 г. ленинградский математик Ю. В. Матиясевич доказал неразрешимость ее.

Есть некоторые проблемы, которые уже много лет привлекают внимание математиков, но до сих пор остались нерешенными. Одна из них — проблема Гольдбаха, в которой ставится вопрос о существовании алгоритма нахождения хотя бы одного разложения на три простых слагаемых любого числа, большего шести, другая – известная великая теорема Ферма. Последняя формулируется так: нет таких целых положительных чисел а, b, c, n (n>2), для которых справедливо равенство an+bn = cn.

Эта теорема доказана для многих значений п и проверена для ряда частных случаев. Все проверки ее подтверждают. Тем не менее, общего доказательства до сих пор нет.

Соседние файлы в папке Мат. логика все лекции