Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Проблема самоприменимости




Кодирование и нумерация машин Тьюринга.

Зафиксируем счетные множества символов {a0,a1,…,ai,…} и {q0,q1,…,qj,…}, и будем считать, что внешние алфавиты и алфавиты внутренних состояний всех машин Тьюринга берутся из этих множеств. Причем будем считать, что буква a0 принадлежит всем внешним алфавитам машин и интерпретируется как пустой символ, а буквы q0 и q1 содержатся во всех алфавитах внутренних состояний всех машин и всегда означают заключительное и начальное состояние. Опишем теперь единый способ представления информации о машинах с помощью кодирования. Каждому символу из множества {L,R,E,a0,a1,…,ai,…,q0,q1,…,qj,…}, поставим в соответствие двоичный набор согласно таблице

 

 

  Символ Код Число нулей в коде
Символы сдвига R L E 10 100 1000 1 2 3
Символы алфавита ленты a0 a1 ... ai ... 10000 1000000 ... 10 … 0 ... 4 6 ... 2i + 4 ...
Символы алфавита состояний q0 q1 ... qj ... 100000 10000000 ... 10 … 0 ... 5 7 ... 2j + 5 ...

Далее команде I машины Т вида qa ® q¢a¢d ставится в соответствие

Код (I) = Код(q) Код(a) Код(q¢) Код(a¢) Код(d),

представляющее собой приписывание кодов символов друг к другу. Пусть машина Т имеет алфавиты А = {a0,a1,…,am} и Q = {q0,q1,…,qn}. Упорядочим пары qiaj лексикографически q1a0, q1a1,…, q1am, q2a0,…, qna0,…, qnam. В соответствии с этим упорядочим команды машины Т

I1, I2, …, In(m+1).

Машине Т поставим в соответствие код

Код(Т) = Код(I1) Код(I2) … Код(In(m+1)),

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

Код (Т) = 10710310510610310710610710610.

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

Т0, T1, T2, …, Tn, …

Поскольку кодирование эффективно, то существует машина Тьюринга, которая по натуральному числу n выдает Код(Тn) (если такая существует) и обратно, по Код(Tn) выдает ее номер nT. Пусть fn(x) - функция, вычисляемая машиной Тn. Тогда получаем нумерацию всех вычислимых по Тьюрингу функций одного переменного

f0(x), f1(x), … fn(x), …

Нетрудно показать, что всякая вычислимая по Тьюрингу функция встречается в этом списке бесконечное число раз.

Данная проблема заключается в следующем. Будем рассматривать машины Тьюринга, которые во внешнем алфавите ленты имеют 0, 1. Пусть на ленту машины Тьюринга Т записан ее код Код(Т) и машина запущена в начальном состоянии q1. Если после конечного числа шагов машина Т остановится, то она называется самоприменимой, в противном случае - несамоприменимой. Легко привести примеры самоприменимых и несамоприменимых машин. Проблема самоприменимости состоит в том, чтобы по всякой машине Тьюринга Т (точнее по ее коду Код(Т)) установить, является ли она самоприменимой или нет. Будем говорить, что машина Тьюринга Т0 решит проблему самоприменимости, если для любой машины Т конфигурацию q1Код(Т) она переводит в конфигурацию q01, если Т самоприменима, и в конфигурацию q00, если Т - несамоприменима.

Теорема 1.1. Не существует машины Тьюринга Т0, которая решает проблему самоприменимости.

¨ Допустим, что существует машина T0, решающая проблему самоприменимости. Построим машину T1, в которой вместо состояния q0 введем новое заключительное состояние q0¢ и добавим к программе машины T0 новые команды

q0 1 ® q0 1 E,

q0 0 ® 0 E. (1.4)

Машина T1 построена по машине T0 вполне конструктивными средствами, она обладает свойствами применимости к кодам несамоприменимых машин и не применима к кодам самоприменимых машин. Действительно, если Т1 - самоприменима, то q1Код(Т1) переходит в q01 и согласно (1.4) q01 Þ q01 и T1 никогда не остановится. Если T1 - несамоприменима, то q1Код(Т) переходит в q00 и согласно (1.4) q00 Þ q0¢0 и машина Т1 остановится. Применим теперь машину T1 к конфигурации q1Код(Т1). Если T1 самоприменима, то по построению она не применима к коду самоприменимых машин. Если T1 несамоприменима, то она применима к коду самоприменимых машин. Полученное противоречие показывает, что допущение о существовании машины Тьюринга T0, решающей проблему самоприменимости, неверно. ¨

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

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

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

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

Приведем без доказательства важную теорему теории алгоритмов.

Теорема 1.2 (теорема Райса). Никакое нетривиальное свойство вычислимых по Тьюрингу функций не является алгоритмически разрешимым.

Переформулируем эту теорему в более точном виде: Пусть С - любой класс вычислимых по Тьюрингу функций одного переменного, нетривиальной в том смысле, что имеются вычислимые функции, как входящие в С, так и не входящие в С. Тогда не существует алгоритма, который бы по номеру x функции fx определял бы принадлежность fx классу С.

Из данной теоремы следует, что по номеру вычислимой функции нельзя узнать, является ли она постоянной, периодической, ограниченной и т.п. Смысл данной теоремы в том, что по описанию алгоритма нельзя узнать о свойствах функций, которую он вычисляет. Подчеркнем, что “нельзя узнать” означает “не существует единого алгоритма решения”. Свойства подклассов вычислимых функций могут оказаться разрешимыми.




Поделиться с друзьями:


Дата добавления: 2014-12-08; Просмотров: 312; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




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