This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these messages)
|
Пост -Тьюринговая машина [1] — это «программная формулировка» типа машины Тьюринга , включающая вариант эквивалентной Тьюрингу модели вычислений Эмиля Поста . Модель Поста и модель Тьюринга, хотя и очень похожи друг на друга, были разработаны независимо. Статья Тьюринга была получена для публикации в мае 1936 года, а затем в октябре последовала работа Поста. Пост-Тьюринговая машина использует двоичный алфавит , бесконечную последовательность двоичных ячеек хранения и примитивный язык программирования с инструкциями для двунаправленного перемещения между ячейками хранения и изменения их содержимого по одной за раз. Названия «Пост-Тьюринговая программа» и «Пост-Тьюринговая машина» использовались Мартином Дэвисом в 1973–1974 годах (Дэвис 1973, стр. 69 и далее). Позже, в 1980 году, Дэвис использовал название «Программа Тьюринга–Поста» (Дэвис, в Steen, стр. 241).
В своей статье 1936 года «Конечные комбинаторные процессы — Формулировка 1» Эмиль Пост описал модель, которая, по его предположению, « логически эквивалентна рекурсивности ».
Модель вычисления Поста отличается от модели машины Тьюринга дальнейшей «атомизацией» действий, которые человеческий «компьютер» будет выполнять во время вычисления. [2]
Модель Поста использует « символическое пространство», состоящее из «двусторонней бесконечной последовательности пространств или ящиков», каждый из которых может находиться в одном из двух возможных состояний, а именно «отмечен» (например, одним вертикальным штрихом) и «неотмечен» (пустой). Первоначально конечное число ящиков отмечено, остальные неотмечены. Затем «работник» должен перемещаться между ящиками, находясь и работая только в одном ящике за раз, в соответствии с фиксированным конечным «набором указаний» ( инструкций ), которые пронумерованы в порядке (1,2,3,..., n ). Начиная с ящика, «выделенного в качестве отправной точки», рабочий должен следовать набору инструкций по одной за раз, начиная с инструкции 1.
Рабочий может выполнять пять различных примитивных операций:
Тогда i -е «указание» (инструкция), даваемое работнику, должно иметь одну из следующих форм:
(Вышеприведенный текст с отступом и курсивом соответствует оригиналу.) Пост отмечает, что эта формулировка находится «на начальных стадиях» разработки, и упоминает несколько возможностей для «большей гибкости» в ее окончательной «окончательной форме», включая
Как кратко упоминается в статье « Машина Тьюринга» , Пост в своей работе 1947 года ( «Рекурсивная неразрешимость проблемы Туэ ») разбил тьюринговские 5-кортежи на 4-кортежи:
Как и Тьюринг, он определил стирание как печать символа «S0». И поэтому его модель допускала квадруплеты только трех типов (ср. Undecidable , стр. 294):
В то время он все еще придерживался соглашения о конечном автомате Тьюринга — он не формализовал понятие предполагаемого последовательного выполнения шагов до тех пор, пока конкретная проверка символа не «разветвляла» выполнение в другом месте.
Ван (1957, но представленный ACM в 1954) часто цитируется (ср. Минский (1967), стр. 200) как источник «программной формулировки» машин Тьюринга с двоичной лентой, использующих пронумерованные инструкции из набора
Любая двоичная ленточная машина Тьюринга легко преобразуется в эквивалентную «программу Вана» с помощью приведенных выше инструкций.
Мартин Дэвис был студентом бакалавриата Эмиля Поста. Вместе со Стивеном Клини он защитил докторскую диссертацию под руководством Алонзо Чёрча (Davis (2000) 1-я и 2-я сноски, стр. 188).
Следующая модель была представлена им в серии лекций в Институте Куранта в Нью-Йоркском университете в 1973–1974 годах. Это модель, к которой Дэвис формально применил название «Пост-Тьюринговая машина» с ее «Пост-Тьюринговым языком». [2] Предполагается, что инструкции выполняются последовательно (Дэвис 1974, стр. 71):
Следующая модель появляется как эссе Что такое вычисление? в Стин страницы 241–267. По какой-то причине Дэвис переименовал свою модель в «машину Тьюринга–Пост» (с одним обратным скольжением на странице 256.)
В следующей модели Дэвис присваивает номер "1" "метке/косой черте" Поста и "0" пустому квадрату. Цитируя Дэвиса: "Теперь мы готовы представить язык программирования Тьюринга–Поста. В этом языке есть семь видов инструкций:
«Программа Тьюринга–Поста представляет собой список инструкций, каждая из которых относится к одному из этих семи видов. Конечно, в реальной программе буква i на шаге пятого или шестого вида должна быть заменена определенным (целым положительным) числом» (Дэвис в книге Стина, стр. 247).
«Хотя представленная нами формулировка Тьюринга по духу ближе к первоначальной формулировке Эмиля Поста, именно анализ вычислений Тьюрингом сделал эту формулировку столь уместной. Этот язык сыграл фундаментальную роль в теоретической информатике». (Дэвис и др. (1994) стр. 129)
Эта модель допускает печать нескольких символов. Модель допускает B (пусто) вместо S 0 . Лента бесконечна в обоих направлениях. Движется либо головка, либо лента, но их определения RIGHT и LEFT всегда указывают на один и тот же результат в любом случае (Тьюринг использовал то же соглашение).
Эта модель сводится к двоичным версиям {0, 1}, представленным выше, как показано здесь:
Следующий метод «редукции» (декомпозиции, атомизации) — от 2-символьных тьюринговых 5-кортежей к последовательности 2-символьных посттьюринговых инструкций — можно найти у Мински (1961). Он утверждает, что эта редукция к «программе ... последовательности инструкций » соответствует духу B-машины Хао Вана (курсив в оригинале, ср. Мински (1961) стр. 439).
(Сведение Мински к тому, что он называет «подпрограммой», приводит к 5, а не к 7 посттьюринговым инструкциям. Он не атомизировал Wi0: «Записать символ Si0; перейти в новое состояние Mi0» и Wi1: «Записать символ Si1; перейти в новое состояние Mi1». Следующий метод еще больше атомизирует Wi0 и Wi1; во всех остальных отношениях методы идентичны.)
Такое сведение тьюринговских 5-кортежей к посттьюринговским инструкциям может и не привести к «эффективной» посттьюринговской программе, но она будет верна исходной тьюринговской программе.
В следующем примере каждый кортеж Тьюринга из 5-ти элементов занятого бобра с 2 состояниями преобразуется в
всего 1 + 2 + 1 + 2 + 1 = 7 инструкций на одно состояние Тьюринга.
Например, состояние Тьюринга «A» занятого бобра с 2 состояниями, записанное в виде двух строк по 5 кортежей, выглядит следующим образом:
Начальная m-конфигурация (состояние Тьюринга) | Символ ленты | Операция печати | Движение ленты | Конечная m-конфигурация (состояние Тьюринга) |
---|---|---|---|---|
А | 0 | П | Р | Б |
А | 1 | П | Л | Б |
Таблица представляет собой всего одну «инструкцию» Тьюринга, но мы видим, что она состоит из двух строк по 5 кортежей, одна для случая «символ ленты под заголовком = 1», другая для случая «символ ленты под заголовком = 0». Тьюринг заметил ( Undecidable , стр. 119), что два левых столбца – «m-конфигурация» и «символ» – представляют текущую «конфигурацию» машины – ее состояние, включающее как Ленту, так и Таблицу в этот момент – а последние три столбца – ее последующее «поведение». Поскольку машина не может находиться в двух «состояниях» одновременно, она должна «перейти» либо к одной, либо к другой конфигурации:
Начальная m-конфигурация и символ S | Операция печати | Движение ленты | Окончательная m-конфигурация |
---|---|---|---|
С=0 → | П → | Р → | Б |
→ А < | |||
С=1 → | П → | Л → | Б |
После "ветви конфигурации" (J1 xxx) или (J0 xxx) машина следует одному из двух последующих "поведений". Мы перечисляем эти два поведения в одной строке и нумеруем (или маркируем) их последовательно (уникально). Под каждым переходом (ветвью, переходом) мы размещаем его "номер" перехода (адрес, местоположение):
Начальная m-конфигурация и символ S | Операция печати | Движение ленты | Конечный случай m-конфигурации S=0 | Операция печати | Движение ленты | Конечный случай m-конфигурации S=1 | |
---|---|---|---|---|---|---|---|
Если S=0, то: | П | Р | Б | ||||
→ А < | |||||||
Если S=1, то: | П | Л | Б | ||||
инструкция № | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
Пост-Тьюринговская инструкция | J1 | П | Р | Дж. | П | Л | Дж. |
перейти к инструкции # | 5 | Б | Б |
Согласно соглашениям, принятым в эпоху пост-Тьюринга, каждая из инструкций «Печать», «Стирание», «Влево» и «Вправо» состоит из двух действий:
И в соответствии с соглашениями о машинах Пост-Тьюринга условные «прыжки» J0xxx, J1xxx состоят из двух действий:
И в соответствии с соглашениями о пост-Тьюринговых машинах безусловный «прыжок» Jxxx состоит из одного действия, или, если мы хотим упорядочить последовательность из 2 действий:
Какие и сколько переходов необходимо? Безусловный переход J xxx — это просто J0 , за которым сразу следует J1 (или наоборот). Ван (1957) также показывает, что требуется только один условный переход, т. е. либо J0 xxx, либо J1 xxx. Однако с этим ограничением становится сложно писать инструкции для машины. Часто используются только два, т. е.
но использование всех трех { J0 xxx, J1 xxx, J xxx } устраняет дополнительные инструкции. В примере Busy Beaver с 2 состояниями мы используем только { J1 xxx, J xxx }.
Миссия занятого бобра — напечатать как можно больше единиц, прежде чем остановиться. Инструкция «Печать» записывает 1, инструкция «Стирание» (не используется в этом примере) записывает 0 (т. е. то же самое, что P0). Лента движется «влево» или «вправо» (т. е. «головка» неподвижна).
Таблица состояний для машины Тьюринга с двумя состояниями :
Символ ленты | Текущее состояние А | Текущее состояние B | ||||
---|---|---|---|---|---|---|
Написать символ | Переместить ленту | Следующий штат | Написать символ | Переместить ленту | Следующий штат | |
0 | 1 | Р | Б | 1 | Л | А |
1 | 1 | Л | Б | 1 | Н | ЧАС |
Инструкции для пост-тьюринговской версии 2-state busy beaver: обратите внимание, что все инструкции находятся на одной строке и в последовательности. Это существенное отклонение от "тьюринговской" версии и находится в том же формате, что и то, что называется "компьютерной программой":
Инструкция № | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Инструкция | J1 | П | Р | Дж. | П | Л | Дж. | J1 | П | Л | Дж. | П | Н | Дж. | ЧАС |
Перейти к # | 5 | 8 | 8 | 12 | 1 | 15 | |||||||||
метка состояния Тьюринга | А | Б | ЧАС |
В качестве альтернативы мы можем записать таблицу в виде строки. Использование «разделителей параметров» «:» и разделителей инструкций «,» является нашим выбором и не отображается в модели. Нет никаких соглашений (но см. Booth (1967) стр. 374, и Boolos and Jeffrey (1974, 1999) стр. 23), для некоторых полезных идей о том, как объединить соглашения диаграммы состояний с инструкциями – т. е. использовать стрелки для указания назначения переходов). В примере ниже инструкции последовательны , начиная с «1», а параметры/«операнды» считаются частью их инструкций/«кодов операций»: