русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

ГЛАВА 2. Неразрешимые языки и проблемы


Дата добавления: 2015-01-16; просмотров: 2793; Нарушение авторских прав


 

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

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

входа ?

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

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

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

 

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

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

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



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

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

(все натуральные числа), а на пересечении i-й строки и j-го столбца стоит 1, если машина Mi допускает цепочку wj , и 0 – если не допускает.

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

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

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

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

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

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

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

1) если wÎL, то M допускает вход w, следовательно, останавливается;

2) если wÏL, то M в конце концов остановится, не допуская.

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

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

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

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

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

 

 

 

 

Рис 9.2

 

Теорема.Если 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.

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

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

1. Оба языка L и L рекурсивны.

2. Ни L, ни L не являются рекурсивно перечислимыми.

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

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

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

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

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

 

 

Рис стр 387

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

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

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

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

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

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

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

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

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

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

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

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

 



<== предыдущая лекция | следующая лекция ==>
ГЛАВА 1. Машина Тьюринга как вычислительная модель | Неразрешимость универсального языка. Проблема останова.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.135 сек.