Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
My_shpore_v02.doc
Скачиваний:
51
Добавлен:
21.09.2019
Размер:
2.18 Mб
Скачать
  1. Машина Тьюринга, ее структура и свойства. Проблема остановки мт.

Основная гипотеза теории алгоритмов (тезис Тьюринга) – всякий вычислительный процесс может быть преобразован в машину Тьюринга, всякий алгоритм – в таблицу такой машины.

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

Сам Тьюринг получал свою машину путем анализа работы вычислителя: вычислитель имеет перед собой тетрадь, читает, пишет новые знаки, листает страницы, то есть работает по алгоритму, то есть работает память => ум вычислителя меняет свое состояние.

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

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

МТ обрабатывает односторонне бесконечную ленту, Лента разбита на клетки, в которых пишутся символы по одному в клетке. Если в клетке ничего нет, то будем говорить, что там записан пустой символ. Множество знаков для ленты машины называется ее внешним алфавитом, в который входит и пустой знак. Внешний алфавит конечен. Машина имеет дискретное время работы. Оно распадается на такты. В каждый такт она занимает одну клетку ленты, читает записанный там символ, затем записывает новый символ, движется вправо или влево и переходит в следующее внутреннее состояние. Машина имеет конечное множество внутренних состояний (внутренний алфавит машины). Имеются начальное состояние (с него начинается работа машины) и конечное состояние, попав в которое, машина прекращает работу. Внутреннее состояние машины и воспринимаемый ею символ называется конфигурацией машины. Конфигурация машины однозначно определяет ее дальнейшие действия в этом такте: запись нового знака, движение, переход в следующее внутреннее состояние. Кроме ленты, имеется головкам чтения/записи, которая, во-первых, умеет двигаться вперед, назад и стоять на месте; во-вторых, умеет читать содержимое, стирать и записывать символы из данного алфавита; в третьих, управляется программой. Программа представляет собой таблицу, в которой в каждой клетке записана команда. Каждая клетка определяется двумя параметрами - символом алфавита и состоянием машины. Команда представляет собой указание, куда передвинуть головку чтения/записи из текущего состояния, какой символ записать в текущую ячейку и в какое состояние перейдет машина.

Более наглядной описание:

Машина Тьюринга состоит из следующих “частей” [2]:

  • ленты, разбитой на конечное число ячеек

  • Внешней памяти, принимающей одно из состояний, входящих в множество A={a0, a1, … am} . Ячейки ленты находятся в одном и только одном из состояний множества А. Состояние a0 называется пустым.

  • Внутренней памяти, принимающей одно из состояний, входящих в множество Q={q0, q1, … qm} . Состояние q0 называется “стоп”.

  • головки, двигающейся вдоль ленты и считывающей содержимое ячейки, напротив которой она останавливается.

  • Механического устройства, передвигающего головку и меняющего состояние внешней и внутренней памяти. Если головка с состоянии q стоит напротив ячейки с номером k, то изменения состояния внутренней памяти и состояния ячейки происходят одновременно.

8(3)

Рис1. Машина Тьюринга.

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

qs ai -> qt aj

qs ai -> qt L

qs ai -> qt R

где L – это движение головки влево на одну ячейку, а R – вправо.

Смысл команды таков: если головка в состоянии qs обозревает ячейку в состоянии ai , то в первом случае она меняет свое состоянии на qt , а ячейки на aj , во втором случае - свое состоянии на qt и сдвигается влево, и в третьем – вправо.

Конечный набор команд образует команду.

Состояние машины – это последовательность состояний ai1, air ячеек ленты, состояние внутренней памяти qs головки и номер k воспринимаемой ячейки в состоянии aik .

   Машина Тьюринга работает на неограниченной с обеих сторон ленте, разделённой на ячейки, одну из которых обозревает головка. В любой момент времени все ячейки, кроме конечного числа, заняты пустыми символами. Конфигурацией машины Тьюринга m называется слово вида αqi, где - α и β непустая часть ленты, qi - текущее состояние управляющего устройства, x - обозреваемый головкой символ.

Рисунок 1 - Машина Тьюринга в состоянии qi ,  конфигурация αqi.

   За каждый такт работы машины Тьюринга головка считывает обозреваемый символ с ленты и записывает на его место новый, при этом машина переходит в новое состяние qj или остаётся в старом, а головка передвигается на одну позицию влево или вправо, либо остаётся на месте.    Порядок работы машины Тьюринга обычно записывается в виде таблицы, где в каждый столбец первой строки заносится возможное состояние машины Тьюринга qi Є Q, а в каждую строку первого столбца заносится символ внешнего алфавита x Є T. В других ячейках записываются команды исполняемые машиной Тьюринга в состоянии qi при обозревании символа x (ячейка пуста, если предполагается, что символ x не встречается в состоянии qi). Формат команды задаётся тройкой aKq, где а - символ печатаемый на ленте, К - направление движения головки из {L, R, S}, q - новое состояние машины Тьюринга.    Рассмотрим программу сложения двух чисел заданных на ленте в унарной системе счисления для машины Тьюринга. Программа принимает 2 числа разделённых символом разделителя ('*'), и записывает результат их сложения на ленте сразу за этими числами отделяя его символом '='. Начальное состояние машины Тьюринга - q0, а головка обозревает первый символ первого числа. Конечное состояние - qz, при этом головка возвращается к исходной позиции. Программа перед своим завершением должна восстановить исходные данные на ленте.

8(4)

Рисунок 2 - Пример начального состояния машины Тьюринга

Рисунок 3 - Пример конечного состояния машины Тьюринга

    Итак, внешний алфавит для решения данной задачи представляет из себя множество T = {λ, 1, 0, *, =}, а программа выглядит следующим образом:

 

q0

q1

q2

q3

q4

q5 = qz

1

0 R q1

1 R q1

1 R q2

1 L q3

 

1 S qz

0

 

 

 

0 R q0

1 L q4

 

*

* R q0

* R q1

 

* L q3

* L q4

 

=

= L q4

= R q2

 

= L q3

 

 

λ

 

= R q2

1 L q3

 

λ R q5

 

Программа 1 - Программа сложения двух чисел в унарной системе для машины Тьюринга

   Как работает данная программа ? Достаточно просто. Она находит очередной символ '1' слагаемых, заменяет его на символ '0' (своеобразная пометка, что этот символ уже обработан) и записывает очередной символ '1' в результат. Затем головка возвращается к началу в поисках символа '0'. Если есть ещё символы '1' до символа '=', то повторяем предыдущий шаг, в противном случае - возвращаем головку в исходное состояние, восстанавливая на ленте входные данные (заменяем '0' на '1').

Проблема остановки машины Тьюринга.

На ленте произвольной машины Тьюринга записано произвольное начальное слово W. Остановится ли машина Т при работе с этим словом или нет?

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

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

Теорема1. Проблема остановки машины Т при данном начальном слове алгоритмически неразрешима.

Будем вести доказательство от противного. Пусть Т- машина Тьюринга, dТ- ее код ( таблица машины Т), W- начальное слово. Ввиду второй теоремы Шеннона мы можем ограничиться вопросом об остановке двусимвольных машин Тьюринга. Предположим, что существует машина Е, решающая проблемы остановки машины Т. На ленте машины Е кодовое число машины Т и начальное слово W. Машина Е работает и печатает «+» если машины Т останавливается, и «-» в противном случае. Пусть W=dТ. В этом случае можно сказать, что машина Т занимается самоанализом. Всякая ли машина способна заниматься самоанализом? В принципе, всякая, если ее внешний алфавит включает все символы ее таблицы, то машина может самоанализировать. Ясно, что таблицу можно расширить: в незнакомой ситуации машина останавливается => всякая машина Тьюринга может заниматься самоанализом. Построим машину D для проверки на остановку самоанализирующих машин Тьюринга (когда W=dT), то есть проверяющую останавливается ли машина при самоанализе. Машину D получим следующим образом : сначала D копирует на ленту dT, а потом работает как машина E. Если мы умеем строить машину Е, то построим и машину D. Теперь преобразуем машину D в машину С, которая работает так же как и машина D вплоть до остановки машины D, но если при слове dT машина D печатает «+» и останавливается, то машина C печатает «+» и не останавливается, а двигается по ленте неограниченно вправо (не меняя никаких знаков).

 машина D =>  машина С и тк  машина D =>  машина Е, то  машина С   машина Е. Итак, машина С не останавливается, если Т останавливается и машина С останавливается, если машина Т не останавливается. Пусть теперь Т=С, то есть машина С занимается самоанализом. Тогда машина С остановится, если машина С не остановится, и машина С не остановится, если машина С остановится. Отсюда противоречие => наша задача алгоритмически неразрешима.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]