Машина Тьюринга — различия между версиями
(→Примеры машин Тьюринга: переписал список переходов в таблицу) |
м (→Определение процесса работы: опечатка) |
||
Строка 42: | Строка 42: | ||
* если <tex>\delta(q, B) = \langle p, y, \downarrow \rangle</tex>, то <tex>\langle w, q, \varepsilon \rangle \vdash \langle w, p, y \rangle</tex> | * если <tex>\delta(q, B) = \langle p, y, \downarrow \rangle</tex>, то <tex>\langle w, q, \varepsilon \rangle \vdash \langle w, p, y \rangle</tex> | ||
− | Очевидно, что определённое | + | Очевидно, что определённое отношение является функциональным: для каждой конфигурации <tex>C</tex> существует не более одной конфигурации <tex>C'</tex>, для которой <tex>C \vdash C'</tex>. |
Для машины Тьюринга, которая пишет символ <tex>B</tex> на ленту также можно дать аналогичное формальное определение. Оно будет отличаться тем, что символы в строчках конфигурации могут содержать пробелы, и для того, чтобы эти строчки имекли конечную длину, нужно аккуратно учесть наличие пробелов при записи правил перехода. Это предоставляется читателю в качестве упражнения. | Для машины Тьюринга, которая пишет символ <tex>B</tex> на ленту также можно дать аналогичное формальное определение. Оно будет отличаться тем, что символы в строчках конфигурации могут содержать пробелы, и для того, чтобы эти строчки имекли конечную длину, нужно аккуратно учесть наличие пробелов при записи правил перехода. Это предоставляется читателю в качестве упражнения. |
Версия 18:12, 6 декабря 2012
Содержание
Введение
Машина Тьюринга (Turing machine) — абстрактный вычислитель, предложенный британским математиком Аланом Тьюрингом в 1936 году для формализации понятия алгоритма.
Неформально машина Тьюринга определяется как устройство, состоящее из двух частей:
- бесконечной одномерной ленты, разделённой на ячейки,
- головкой, которая представляет из себя детерминированный конечный автомат.
При запуске машины Тьюринга на ленте написано входное слово, причём на первом символе этого слова находится головка, а слева и справа от него записаны пустые символы. Каждый шаг головка может перезаписать символ под лентой и сместиться на одну ячейку, если автомат приходит в допускающее или отвергающее состояние, то работа машины Тьюринга завершается.
Определение
Определение машины
Формально машина Тьюринга определяется как кортеж из восьми элементов
, где- — алфавит, из букв которого могут состоять входные слова
- — символы, которые могут быть записаны на ленту в процессе работы машины
- — пробельный символ (от слова blank)
- — множество состояний управляющего автомата
- — допускающее состояние автомата
- — отвергающее состояние автомата
- — стартовое состояние автомата
- — всюду определённая функция перехода автомата
Отметим, что существуют различные вариации данного выше определения (например, без отвергающего состояния или с множеством допускающих состояний), которые не влияют на вычислительные способности машины Тьюринга.
Определение процесса работы
Кроме формального определения самой машины требуется также формально описать процесс её работы. В определении для простоты будем предполагать, что головка в процессе работы не записывает на ленту символ
. Это не ограничивает вычислительной мощности машин Тьюринга, поскольку для каждой машины можно сопоставить аналогичную ей, но не пищущую на ленту.Назовём конфигурацией машины Тьюринга тройку
, где — текущее состояние автомата, а — строки слева и справа от головки до первого пробельного символа соответственно. В данной записи головка находится над ячейкой, на которой написана первая буква (или , если ).В дальнейшем используются следующие обозначения:
,Определим на конфигурациях отношение перехода
:- если , то
- если , то
- если , то
Особо следует рассмотреть случай переходов по пробельному символу:
- если , то
- если , то
- если , то
Очевидно, что определённое отношение является функциональным: для каждой конфигурации
существует не более одной конфигурации , для которой .Для машины Тьюринга, которая пишет символ
на ленту также можно дать аналогичное формальное определение. Оно будет отличаться тем, что символы в строчках конфигурации могут содержать пробелы, и для того, чтобы эти строчки имекли конечную длину, нужно аккуратно учесть наличие пробелов при записи правил перехода. Это предоставляется читателю в качестве упражнения.Результат работы
Машину Тьюринга можно рассматривать как распознаватель слов языка. Пусть
— машина Тьюринга, распознаваемый ей язык определяется как .Также можно рассматривать машины Тьюринга как преобразователь входных данных в выходные. Машина
задаёт вычислимую функцию , причём . Переход автомата в состояние можно интерпретировать как аварийное завершение программы (например, при некорретном входе).Примеры машин-распознавателей и машин-преобразователей будут даны ниже.
Примеры машин Тьюринга
Прибавление единицы
Для начала приведём пример машины-преобразователя, которая прибавляет единицу к числу, записанному на ленте в двоичной записи от младшего бита к старшему. Алгоритм следующий:
- в стартовом состоянии головка идёт вправо от младшего бита к старшему, заменяя все единицы на нули,
- встретив нуль или пробельный символ головка записывает единицу, после чего переходит в состояние ,
- в состоянии головка идёт влево от старшего бита к младшему, не изменяя символы 0 и 1 на ленте,
- встретив в состоянии пробельный символ, головка перемещается на один символ вправо и переходит в состояние , завершая работу.
Формально:
, , . Таблица функции приведена ниже:Проверка того, является ли слово палиндромом
В качестве примера машины-распознавателя приведём машину, распознающую палиндромы над алфавитом
. Алгоритм следующий:- если строка на ленте — пустая, то перейти в допускающее состояние
- надо запомнить первый символ слова в состоянии автомата,
- стереть его,
- перейти в конец ленты:
- если оставшаяся строка на ленте — пустая, то перейти в допускающее состояние
- если последний символ совпадает с запомненным, стереть его, перейти в начало ленты и повторить с первого шага
- в случае несовпадения перейти в отвергающее состояние
Формально:
, , . Таблица функции приведена ниже: