Счетчик на машине тьюринга

Машина Тьюринга

Содержание

Машина Тьюринга (англ. Turing machine) — модель абстрактного вычислителя, предложенная британским математиком Аланом Тьюрингом в 1936 году. Эта модель позволила Тьюрингу доказать два утверждения. Первое — проблема останова неразрешима, т.е. не существует такой машины Тьюринга, которая способна определить, что другая произвольная машина Тьюринга на её ленте зациклится или прекратит работу. Второе — не существует такой машины Тьюринга, которая способна определить, что другая произвольная машина Тьюринга на её ленте когда-нибудь напечатает заданный символ. В этом же году был высказан тезис Чёрча-Тьюринга, который терминах теории рекурсии формулируется как точное описание интуитивного понятия вычислимости классом общерекурсивных функций. В этой формулировке часто упоминается как просто тезис Чёрча. В терминах вычислимости по Тьюрингу тезис гласит, что для любой алгоритмически вычислимой функции существует вычисляющая её значения машина Тьюринга. В виду того, что классы частично вычислимых по Тьюрингу и частично рекурсивных функций совпадают, утверждение объединяют в единый тезис Чёрча — Тьюринга.

Неформально машина Тьюринга определяется как устройство, состоящее из двух частей:

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

Определение [ править ]

Определение машины [ править ]

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

Определение процесса работы [ править ]

Особо следует рассмотреть случай переходов по пробельному символу:

Для машины Тьюринга, которая пишет символ [math]B[/math] на ленту также можно дать аналогичное формальное определение. Оно будет отличаться тем, что символы в строчках конфигурации могут содержать пробелы, и для того, чтобы эти строчки имекли конечную длину, нужно аккуратно учесть наличие пробелов при записи правил перехода.

Результат работы [ править ]

Примеры машин-распознавателей и машин-преобразователей будут даны ниже.

Примеры машин Тьюринга [ править ]

Прибавление единицы [ править ]

Для начала приведём пример машины-преобразователя, которая прибавляет единицу к числу, записанному на ленте в двоичной записи от младшего бита к старшему. Алгоритм следующий:

[math]0[/math][math]1[/math][math]B[/math]
[math]S[/math][math]\langle R, 1, \downarrow \rangle[/math][math]\langle S, 0, \rightarrow \rangle[/math][math]\langle R, B, \leftarrow \rangle[/math]
[math]R[/math][math]\langle R, 0, \leftarrow \rangle[/math][math]\langle R, 1, \leftarrow \rangle[/math][math]\langle Y, B, \rightarrow \rangle[/math]

Проверка того, является ли слово палиндромом [ править ]

[math]0[/math][math]1[/math][math]B[/math]
[math]S[/math][math]\langle F_0, B, \rightarrow \rangle[/math][math]\langle F_1, B, \rightarrow \rangle[/math][math]\langle Y, B, \downarrow \rangle[/math]
[math]F_0[/math][math]\langle F_0, 0, \rightarrow \rangle[/math][math]\langle F_0, 1, \rightarrow \rangle[/math][math]\langle B_0, B, \leftarrow \rangle[/math]
[math]F_1[/math][math]\langle F_1, 0, \rightarrow \rangle[/math][math]\langle F_1, 1, \rightarrow \rangle[/math][math]\langle B_1, B, \leftarrow \rangle[/math]
[math]B_0[/math][math]\langle R, B, \leftarrow \rangle[/math][math]\langle N, 1, \downarrow \rangle[/math][math]\langle Y, B, \downarrow \rangle[/math]
[math]B_1[/math][math]\langle N, 0, \downarrow \rangle[/math][math]\langle R, B, \leftarrow \rangle[/math][math]\langle Y, B, \downarrow \rangle[/math]
[math]R[/math][math]\langle R, 0, \leftarrow \rangle[/math][math]\langle R, 1, \leftarrow \rangle[/math][math]\langle S, B, \rightarrow \rangle[/math]

Варианты машины Тьюринга [ править ]

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

Многодорожечная машина Тьюринга [ править ]

Машина Тьюринга с полубесконечной лентой [ править ]

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

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

Счетчик на машине тьюринга

Затем перенумеруем ячейки, и запишем символ [math]c \in \Pi \setminus \Sigma, B[/math] в начало ленты, который будет означать границу рабочей зоны:

Счетчик на машине тьюринга

Счетчик на машине тьюринга

Начальное состояние новой машины Тьюринга устанавливается в одной или другой зоне в зависимости от того, в какой части исходной ленты располагалась головка считывания-записи в исходной конфигурации.[math]\triangleleft[/math]

Многоленточная машина Тьюринга [ править ]

Многоленточная машина с [math]n[/math] дорожками эмулируется многодорожечной машиной с [math]2n[/math] дорожками следующим образом: каждая нечётная дорожка соответствует ленте исходной машины, а на каждой чётной дорожке отмечены специальным символом [math]*[/math] позиция головки на ленте выше (считаем, что ленты нумеруются сверху вниз).

Каждый шаг исходной машины эмулируется конечной последовательностью шагов построенной машины следующим образом: исходно головка находится в позиции самой левой отметки и идёт вправо до самой правой отметки, запоминая прочитанные около символов [math]*[/math] символы в состоянии. Пройдя до самой правой отметки, головка возвращается влево, совершая необходимые действия (переписывая символы около отметок и передвигая сами отметки). После такого прохода головка переходит в следующее состояние, завершая эмуляцию шага.

Аланом Тьюрингом было сформулировано следующее утверждение:

Иными словами, тезис говорит о том, что любой алгоритм можно запрограммировать на машине Тьюринга.

Универсальная машина Тьюринга [ править ]

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

Источник

Счетчик машины

Вдобавок у машины обычно есть инструкция HALT, которая останавливает машину (обычно после вычисления результата).

Используя приведенные выше инструкции, различные авторы обсуждали определенные счетные машины:

Счетчик состоит из:

После этого r s будет содержать исходный счетчик (в отличие от MOVE, который очищает исходный регистр, т. Е. Очищает его до нуля).

Базовый набор (1) используется, как определено здесь:

Первоначальные условия

Окончательные условия

Программа HALT завершает работу с содержимым регистра # 2 на своем исходном счетчике и содержимым регистра # 3, равным исходному содержимому регистра # 2, т. Е.

Описание программы на высоком уровне

Программа COPY (# 2, # 3) состоит из двух частей. В первой части программа перемещает содержимое исходного регистра №2 как в блокнот №1, так и в целевой регистр №3; таким образом, # 1 и # 3 будут копиями друг друга и исходного счетчика в # 2, но # 2 очищается в процессе уменьшения его до нуля. Безусловные переходы J (z) выполняются тестами регистра # 0, который всегда содержит число 0:

Во второй части программа перемещает (возвращает, восстанавливает) содержимое блокнота №1 обратно в №2, очищая блокнот №1 в процессе:

Программа

Программа, выделенная желтым цветом, отображается слева направо в правом верхнем углу.

Тем не менее, мы видим, что СДВ можно было бы легко осуществить. И на самом деле ниже приводится краткое изложение того, как могут возникать примитивные рекурсивные функции, такие как ADD, MULtiply и EXPonent (см. Boolos-Burgess-Jeffrey (2002) p. 45-51).

(1) Неограниченная емкость регистров в сравнении с ограниченной емкостью инструкций конечного автомата : как машина будет создавать константы, превышающие емкость ее конечного автомата?

(2) Неограниченное количество регистров по сравнению с ограниченным количеством инструкций конечного автомата : как машина будет обращаться к регистрам с адресными номерами, выходящими за пределы досягаемости / возможностей конечного автомата?

(3) Полностью уменьшенные модели громоздки:

Инструкции Шепердсона и Стерджиса ([r] означает «содержимое регистра r»):

Минский (1967) расширил свой набор из двух инструкций z )> до z ), J (I z )>. до его доказательства того, что «универсальная программная машина» может быть построена только с двумя регистрами (стр. 255ff).

Шаг 1. Машину Тьюринга можно смоделировать двумя стеками.

Шаг 2: Стек можно смоделировать двумя счетчиками.

Шаг 3: Четыре счетчика можно смоделировать двумя счетчиками.

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

Предостережение: * Если * его счетчики инициализированы на N и 0, то 2CM не может рассчитать 2 N

Доказательству предшествуют несколько интересных теорем:

Что касается второй теоремы о том, что «3CM может вычислить любую частично рекурсивную функцию», автор ставит перед читателем «сложную задачу: умножить два числа, используя только три счетчика» (стр. 2). Основное доказательство включает представление о том, что машины с двумя счетчиками не могут вычислять арифметические последовательности с нелинейными темпами роста (стр. 15), то есть «функция 2 X растет быстрее, чем любая арифметическая прогрессия». (стр.11).

Схема временных интервалов определяла шесть регистров по 13 десятичных цифр, каждый со знаковым битом. Умножение и деление производились в основном путем повторного сложения и вычитания. Версия с квадратным корнем, EC-132, эффективно вычитала последовательные нечетные целые числа, причем каждое уменьшение требовало двух последовательных вычитаний. После первого, уменьшаемое увеличивалось на единицу перед вторым вычитанием.

Источник

СОДЕРЖАНИЕ

Основные характеристики

Вдобавок у машины обычно есть инструкция HALT, которая останавливает машину (обычно после вычисления результата).

Используя приведенные выше инструкции, различные авторы обсуждали определенные счетные машины:

Альтернативные названия, альтернативные модели

Формальное определение

Счетчик состоит из:

Пример: КОПИРОВАТЬ счет из регистра №2 в №3.

После этого r s будет содержать исходный счетчик (в отличие от MOVE, который очищает исходный регистр, т. Е. Очищает его до нуля).

Базовый набор (1) используется, как определено здесь:

Первоначальные условия

Окончательные условия

Программа HALT завершает работу с содержимым регистра # 2 на своем исходном счетчике и содержимым регистра # 3, равным исходному содержимому регистра # 2, т. Е.

Описание программы на высоком уровне

Программа COPY (# 2, # 3) состоит из двух частей. В первой части программа перемещает содержимое исходного регистра №2 как в блокнот №1, так и в целевой регистр №3; таким образом, # 1 и # 3 будут копиями друг друга и исходного счетчика в # 2, но # 2 очищается в процессе уменьшения его до нуля. Безусловные переходы J (z) выполняются тестами регистра # 0, который всегда содержит число 0:

Во второй части программа перемещает (возвращает, восстанавливает) содержимое блокнота №1 обратно в №2, очищая блокнот №1 в процессе:

Программа

Программа, выделенная желтым цветом, отображается слева направо в правом верхнем углу.

Утверждение (Тезис Чёрча-Тьюринга):
12345678910← Номер инструкции (адрес)
JZDECINCINCJZJZDECINCJZЧАС← Инструкция
223101120← Регистрационный номер
61106← Перейти к номеру инструкции
шагICInst #рег #J-адресreg0reg1reg2reg3reg4IC
Начало002001переместите [# 2] в # 1 и # 3:
11JZ26002001 → 2JZОшибка перехода: регистр 2 содержит 2
22DEC20002 → 1002 → 3DECУменьшить регистр # 2 с 2 до 1
33INC300010 → 103 → 4INCРегистр увеличения # 3 от 0 до 1
44INC1000 → 11104 → 5INCРегистр увеличения # 1 от 0 до 1
55JZ01011105 → 1JZU-Jump: регистр 0 пуст
61JZ26011101 → 2JZОшибка перехода: регистр 2 содержит 1
72DEC20011 → 0102 → 3DECУменьшить регистр # 2 с 1 до 0
83INC300101 → 203 → 4INCРегистр увеличения # 3 от 1 до 2
94INC1001 → 20204 → 5INCРегистр увеличения # 1 от 1 до 2
105JZ01020205 → 1JZU-Jump: регистр 0 пуст
111JZ26020201 → 6JZПрыгай!: Регистр 2 пуст
переместите [1] на 2:
126JZ110020206 → 7JZОшибка перехода: регистр №1 содержит 2
137DEC1002 → 10207 → 8DECУменьшить регистр # 1 с 2 до 1
148INC20010 → 1208 → 9INCРегистр увеличения # 2 от 0 до 1
159JZ06011209 → 6JZU-Jump: регистр 0 пуст
166JZ110011206 → 7JZОшибка перехода: регистр №1 содержит 1
177DEC1001 → 01207 → 8DECУменьшить регистр # 1 с 1 до 0
188INC20001 → 2208 → 9INCРегистр увеличения # 2 от 1 до 2
199JZ06002209 → 6JZU-Jump: регистр 0 пуст
206JZ110002206 → 10JZПрыгай!: Регистр 1 пуст
21 год10ЧАС000022010 → 10ЧАСHALT

Частично рекурсивные функции: построение «удобных инструкций» с использованием рекурсии

Тем не менее, мы видим, что СДВ можно было бы легко осуществить. И на самом деле ниже приводится краткое изложение того, как могут возникать примитивные рекурсивные функции, такие как ADD, MULtiply и EXPonent (см. Boolos-Burgess-Jeffrey (2002) p. 45-51).

Проблемы с моделью счетчика машины

(1) Неограниченная емкость регистров в сравнении с ограниченной емкостью инструкций конечного автомата : как машина будет создавать константы, превышающие емкость ее конечного автомата?

(2) Неограниченное количество регистров по сравнению с ограниченным количеством инструкций конечного автомата : как машина будет обращаться к регистрам с адресными номерами, выходящими за пределы досягаемости / возможностей конечного автомата?

(3) Полностью уменьшенные модели громоздки:

Инструкции Шепердсона и Стерджиса ([r] означает «содержимое регистра r»):

Минский (1967) расширил свой набор из двух инструкций z )> до z ), J (I z )>. до его доказательства того, что «универсальная программная машина» может быть построена только с двумя регистрами (стр. 255ff).

Машины с двумя счетчиками эквивалентны Тьюрингу (с оговоркой)

Шаг 1. Машину Тьюринга можно смоделировать двумя стеками.

Шаг 2: Стек можно смоделировать двумя счетчиками.

Шаг 3: Четыре счетчика можно смоделировать двумя счетчиками.

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

Предостережение: * Если * его счетчики инициализированы на N и 0, то 2CM не может рассчитать 2 N

Доказательству предшествуют несколько интересных теорем:

Что касается второй теоремы о том, что «3CM может вычислить любую частично рекурсивную функцию», автор ставит перед читателем «сложную задачу: умножить два числа, используя только три счетчика» (стр. 2). Основное доказательство включает представление о том, что машины с двумя счетчиками не могут вычислять арифметические последовательности с нелинейными темпами роста (стр. 15), то есть «функция 2 X растет быстрее, чем любая арифметическая прогрессия». (стр.11).

Практический пример расчета счетом

Схема временных интервалов определяла шесть регистров по 13 десятичных цифр, каждый со знаковым битом. Умножение и деление производились в основном путем повторного сложения и вычитания. Версия с квадратным корнем, EC-132, эффективно вычитала последовательные нечетные целые числа, причем каждое уменьшение требовало двух последовательных вычитаний. После первого, уменьшаемое увеличивалось на единицу перед вторым вычитанием.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *