Помощь в написании студенческих работ
Антистрессовый сервис

Неразрешимость. 
Сложность вычислений

РефератПомощь в написанииУзнать стоимостьмоей работы

Из схемы работы машины видно, что если M допускает вход, то M ' допускает свой вход x, который первоначально был записан на ленте, следовательно, M ' Lne. В противном случае, если M не допускает вход, то M ' не допускает любой свой вход x, записанный на ленте, тогда M ' Lne. Таким образом, Lu сводимо к Lne с помощью алгоритма, который строит M' по данным M и. Поскольку, Lu не является… Читать ещё >

Неразрешимость. Сложность вычислений (реферат, курсовая, диплом, контрольная)

§ 1. Неперечислимый язык.

§ 2. Коды машины Тьюринга.

§ 3. Язык диагонализации Ld

§ 4. Рекурсивные языки.

§ 5. Универсальный язык Lu

§ 6. Языки Le и Lne

§ 7. Проблема соответствий Поста.

Самостоятельные занятия:

[1], глава 9.

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

Допускает ли машина Тьюринга сама себя (свой код) в качестве входа ?

Допускает ли данная машина данный вход ?

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

Как уже было сказано, допустимые машинами Тьюринга языки называются рекурсивно перечислимыми. Допускающие язык L машины M останавливаются на словах (цепочках) L=L (M), а на словах L могут также останавливаться, не допуская, такие языки L будем называть рекурсивными (разрешимыми), или — работать бесконечно, назовем такие языки нерекурсивными (неразрешимыми). К неразрешимым языкам отнесем и не рекурсивно перечислимые (неперечислимые) языки, существование которых нам предстоит доказать.

Неперечислимый язык.

Перечислим машины Тьюринга и входы, перечисляя их коды в алфавите {0,1}. Пустой цепочке припишем номер 1, цепочке «0» — номер 2, цепочке «1» — номер 3, цепочке «00» — номер 4, цепочке «01» — номер 5, остальное перечисление цепочек становится очевидным. В дальнейшем цепочку с номером i будем обозначать через i .

Представим код машины Тьюринга M как двоичную цепочку. Состояние qi и ленточный символ Xi кодируются в виде i нулей, отделяемых 1, пустой символ кодируется цепочкой 1. Направления R, L, S представим как некоторые цепочки Dm из 0. Переход qi Xj Xl R q k закодируется естественным образом цепочкой 0i10j10l10m10k (где i, j, l, m, k 1). Если C1,…, — коды всех переходов машины Тьюринга, то C111С21111Cк — код самой машины M.

Коды машин Тьюринга представлены двоичными цепочками, которые в свою очередь являются представлениями натуральных чисел в двоичной системе. Такое натуральное число будем считать номером машины в перечисление машин Тьюринга. Иначе машина Mi, или i-ая машина, Тьюринга имеет своим кодом цепочку i, и номер i. Очевидно, что не все двоичные цепочки i являются правильными кодами машин Тьюринга, в этом случае будем считать, что машина Mi имеет одно состояние и у нее нет переходов, т. е. такая машина Mi останавливается сразу на любом входе. Также для нее L (Mi) = .

Теперь можно представить таблицу, у которой по горизонтали стоят номера всех цепочек, а по вертикали номера всех машин Тьюринга (все натуральные числа), а на пересечении i-й строки и j-го столбца стоит 1, если машина Mi допускает цепочку j, и 0 — если не допускает.

Числа по главной диагонали показывают, допускает ли машина Mi цепочку i. Построим язык Ld такой, что i Ld i Mi .

Ld называют языком диагонализации. Очевидно, что он не попадает в перечисление языков машин Тьюринга, т. е. нет допускающей его машины Тьюринга.

Теорема. Язык Ld не является рекурсивно перечислимым, т. е. не существует допускающей его машины Тьюринга.

Доказательство. Допустим противное, что существует машина Mi, допускающая язык Ld, так что Ld = L (Mi). Теперь, если Mi допускает i ,.

то i L (Mi) = Ld, однако согласно определению языка Ld, i Ld; если Mi не допускает i, т. е. i L (Mi) = Ld, но по определению языка Ld, i Ld. Откуда i Ld i Ld, что образует противоречие. Таким образом, не существует машины, допускающей язык Ld, а следовательно, язык диагонализации Ld не является рекурсивно перечислимым языком.

Рекурсивные языки. Неразрешимая РП — проблема

Язык L называется рекурсивным, если он допускается некоторой машиной Тьюринга M, т. е. L=L (M) и :

  • 1) если L, то M допускает вход, следовательно, останавливается;
  • 2) если L, то M в конце концов остановится, не допуская.

Если мы рассматриваем язык L как проблему, то проблема называется разрешимой, если язык L рекурсивный. В противном случае проблема называется неразрешимой.

Можно ввести разделение языков и проблем на следующие три класса:

Рекурсивные языки.

Рекурсивно перечислимые (РП), не являющиеся рекурсивными.

Неперечислимые (не — РП) языки.

Теорема. Если L — рекурсивный язык, то язык L, дополнение языка L, также рекурсивный.

Доказательство. Пусть L=L (M), где машина M останавливается на всех входах. Построим машину Тьюринга M, у которой L = L (M). Для чего надо переделать заключительные состояния машины M в недопускающие, не имеющие переходов, и добавив новое допускающее состояние r, передать управление из каждого недопускающего состояния в r.

Теорема (Поста). Если язык L и его дополнение рекурсивно перечислимы, то L рекурсивен.

Доказательство. Пусть L=L (M1) и L =L (M2). Возьмем машину Тьюринга M с двумя лентами, имитирующими соответственно машины M1 и M2.

Пусть вход L, тогда M1 допускает, а машина M допускает и останавливается; в противном случае машина M останавливается, не допуская. Таким образом, машина M останавливается на любом входе и L= L (M), т. е. L рекурсивный язык.

Следствие. Из девяти способов соотношений языков L и L' возможны следующие четыре:

  • 1. Оба языка L и L' рекурсивны.
  • 2. Ни L, ни L' не являются рекурсивно перечислимыми.

L является рекурсивно перечислимым, а L' не рекурсивно перечислим.

L' является рекурсивно перечислимым, а L не рекурсивно перечислим.

Универсальный язык Lu определяется как множество цепочек в алфавите {0,1}, являющихся кодами упорядоченных пар (M,), где M — машина Тьюринга с входным алфавитом {0,1} и — цепочка из {0,1}*, принадлежащая L (M). Код упорядоченной пары (M,) представляется кодом машины M, отделенным 111 от кода цепочки. Другими словами, язык Lu — это множество цепочек, кодов упорядоченных пар (M,), представляющих машину Тьюринга и допускаемый ею вход. Покажем, что существует машина Тьюринга U, называемая универсальной машиной, для которой Lu = L (U).

Опишем машину U в виде многоленточной машины Тьюринга, имитирующей работу машины M на входе, когда сама она получает на вход цепочку, представляющую код упорядоченной пары (M,).

Пусть на 1-й ленте машины U хранятся переходы машины M вместе с входом; на 2-й ленте — двоичный код машины M; на 3-й — состояние машины M; 4-ая — рабочая лента.

Машина U производит следующие операции:

1. Исследует вход, и если код M правильный, записывает на 2-ю ленту код входной цепочки. Для неправильных кодов M машина U не допускает никакого входа.

На 2-й ленте все клетки, кроме занятых кодом входа, заполняются символом, представляемым как 1000.

На 3-й ленте записывается 0, т. е. начальное состояние q0 машины M, и считывающая головка обозревает первый символ кода .

Чтобы отобразить переход машины M, машина U отыскивает его на первой ленте, например, 0i 10j 10k 10l 10m (m=1,2,3 — кодирует R, L, S),.

и выполняет следующие действия:

изменяет содержимое 3-ей ленты на 0k;

заменяет 0j на второй ленте на 0l ;

перемещает головку на 2-й ленте согласно 0m .

Если M не имеет перехода, то M останавливается, и U останавливается.

Если M попадает в допускающее состояние, то U допускает.

Таким образом, U допускает вход (M,) тогда и только тогда, когда M допускает .

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

Теорема. Язык Lu рекурсивно перечислим, но не рекурсивен.

Доказательство. Была доказана рекурсивная перечислимость языка Lu. Допустим, что Lu рекурсивен, тогда по теореме язык Lu рекурсивен и существует допускающая его машина M, т. е. Lu = L (M). Преобразуем M в машину M ', допускающую Lu: если вход есть i, т. е. код машины Mi, то M ' определяет, допускает ли Mi вход i. Поскольку M допускает Lu, то M допускает i, если Mi не допускает i, т. е. когда i Ld.

Таким образом, M ' допускает тогда и только тогда, когда Ld.

Поскольку по теореме машины M ' не существует, получено противоречие, следовательно, язык Lu не является рекурсивным.

Неразрешимые проблемы, связанные с машинами Тьюринга В математической логике рассматриваются разные типы сведений, образующие целую ветвь математической логики, теорию степеней неразрешимости. В общем виде, проблема P1 сводима к проблеме P2 (P1 < f P2), если существует вычислимая функция f такая, что.

xP1 f (x)P2 (xP1 f (x)P2).

В этом случае говорят, что проблема P2 не менее трудна, чем проблема P1.

Теорема. Если P1 < f P2, то.

если P1 не является рекурсивной, то P2 также не рекурсивна (не-Р);

если P1 не является рекурсивно перечислимой, то P2 не рекурсивно перечислима (не-РП).

Доказательство. a) Допустим, что P1 не рекурсивно, а P2 рекурсивно.

На входе P1, так как P1 < f P2, то f ()P2. Так как P2 рекурсивно, существует алгоритм A:

A (x)=0, если x P2, где x = f (), тогда и только тогда, когда P1;

A (x)=1, если x P2, где x = f (), тогда и только тогда, когда P1.

Откуда следует, что P1 рекурсивно, по противоречию P2 — не рекурсивно.

Пусть P1 не-РП, а P2 — рекурсивно перечислимо. Тогда P2 имеет допускающую ее машину M2. Если на входе x P2 машина M2 допускает, тогда P1, где x=f (); в противном случае машина M2 работает бесконечно, следовательно, и P1. Таким образом, машина, языком котором является P1, допускает или не допускает свой вход одновременно с машиной M2, и, следовательно, допускает язык P1, что противоречит условию.

Наряду с введенными выше языками Ld и Lu в теории сложности представляют интерес взаимо дополняющие друг друга в {0,1}* языки:

Le = {M: L (M) = } (кодов мащин, допускающих пустой язык) и.

Lne = {M: L (M) }, над алфавитом {0,1}, представленные кодами машин Тьюринга.

Теорема. Язык Lne рекурсивно перечислим.

Доказательство. Для доказательства достаточно построить допускающую язык Lne машину Тьюринга. Пусть это недетерминированная машина M, изображенная на рис.

Рис. 9.8. Конструкция НМТ, допускающей язык Lne

Работа машины M состоит в следующем:

  • 1) получив на вход код машины Mi, используя способность недетерминированной машины угадывать вход, на котором машина Mi, воможно, допускает,
  • 2) машина M проверяет, допускает ли машина Mi на входе, моделируя работу машины U;

если (Mi,) Lu, т. е. машина Mi допускает на входе, то машина.

M также допускает на своем входе Mi, в противном случае работает бесконечно.

Таким образом, L (M) = Lne .

Теорема. Язык Lne не является рекурсивным.

Доказательство. Построим функцию (алгоритм), сводящий универсальный язык Lu к языку Lne, т. е. вход (M,) машины U преобразуем во вход машины M ', допускающей язык Lne. Машина M ' моделирует машину M на входе и если (M,) Lu, то (M ', x) Lu, где x произвольный вход машины M '. В этом случае машина M' допускает хотя бы одну цепочку, т. е. L (M') и M ' Lne. Аналогично, в случае, если (M,) Lu, L (M ') = и M' Lne. Схема машины M ', построенной по (M,) приведена на рис.

Машина M ' по построению выполняет следующие действия:

Машина M ' строится по конкретной паре (M,), имеюшей длину n, тогда q0 ,…, qn состояния M ' (где q0 — начальное состояние).

a) В состоянии qi (i=0,., n-1) машина M ' записывает (i+1)-й бит кода (M,) и переходит в состояние qi+1, сдвигаясь вправо.

b) В состоянии q n, в случае необходимости, M ' сдвигается вправо и заполняет все непустые клетки (хвост x, если длина цепочки x больше n) пробелами.

Когда M ' достигает пробела с состоянии qn, она, используя похожий набор состояний, перемещает головку в левый конец ленты.

Используя дополнительные состояния M ' моделирует универсальную машину U.

Если U допускает, то M ' допускает. Если U никогда не допускает, то M ' никогда не допускает.

Из схемы работы машины видно, что если M допускает вход, то M ' допускает свой вход x, который первоначально был записан на ленте, следовательно, M ' Lne. В противном случае, если M не допускает вход, то M ' не допускает любой свой вход x, записанный на ленте, тогда M ' Lne. Таким образом, Lu сводимо к Lne с помощью алгоритма, который строит M' по данным M и. Поскольку, Lu не является рекурсивным, то Lne также не рекурсивен.

Теперь известен и статус языка Le. Если бы Le был бы рекурсивно перечислимым, то по теореме и он, и его дополнение Lne были бы рекурсивными. Однако было доказано, что язык Lne не рекурсивен.

Теорема. Язык Le не является рекусивно перечислимым.

Теорема Райса и свойства РП-языков Неразрешимость языков Le и Lne есть только частный случай более общей теоремы о неразрешимости любого нетривиального свойства РП-языков.

Свойством РП-языков называют множество РП-языков. Например, свойства «быть контексно-свободным языком» или «быть регулярным языком» представлены соответственно множествами контекстно-свободных и регулярных языков. Тривиальным свойством называют множество из одного пустого языка или из всех РП-языков. В противном случае свойство называют нетривиальным.

Пусть — свойство РП-языков, а L — множество кодов машин Mi таких, что L (Mi) .

Теорема (Райса). Всякое нетривиальное свойство РП-языков неразрешимо.

Доказательство. Пусть — свойство РП-языков и () ().

a) Допустим, что, тогда существует непустой язык L, пусть xL. Построим алгоритм, сводящий Lu к L. По паре (M,) строится машина M ' такая, что (M,) Lu M ' L:

Если (M,) Lu, т. е. M не допускает вход, тогда M ' прекращает работу, не допуская свой вход x. L (M') =, следовательно,.

L (M '), а M' L. Если (M,) Lu, то L (M') = L и M' L.

Схема такого алгоритма приведена на рис.

Машина M' имеет две ленты: на первой записан код машины M и входа, на второй — код машины ML, допускающей язык L.

Работа моделируемой машины M' состоит в следующих шагах:

Имитируется работа универсальной машины U на входе (M,).

Если (M,) L u, т. е. M не допускает вход, то M' прекращает работу, не допуская свой вход x.

Если (M,) L u, т. е. M допускает, то далее M' имитирует работу машины ML на входе x и допускает, так как xL и ML допускает язык L.

Таким образом, для рассматриваемого свойства, где, Lu < L , следовательно, язык L неразрешим.

b) Допустим, что. Рассмотрим, дополнение свойства, т. е. множество РП-языков, не обладающих свойством. Свойство содержит, так что как в части a) можно доказать неразрешимость языка L. Поскольку язык L есть множество кодом машин, не допускающих свойство, то L = L. Если предположить, что язык L разрешимый, то по теореме Поста, его дополнение — рекурсивный язык, что не верно.

Неразрешимые проблемы, связанные с языками машин Тьюринга:

Пуст ли язык, допускаемый машиной Тьюринга?

Конечен ли язык, допускаемый машиной Тьюринга?

Регулярен ли язык, допускаемый машиной Тьюринга?

Контекстно-свободен язык, допускаемый машиной Тьюринга?

Разрешимые (тривиальные) проблемы, связанные с языками машины Тьюринга:

Содержит ли машина Тьюринга данное число состояний?

Существует ли вход, допускаемый машиной Тьюринга за данное число переходов?

Показать весь текст
Заполнить форму текущей работой