Машины Тьюринга
[25/100%]Дана машина Тьюринга со следующей программой . Какой будет заключительная конфигурация этой машины при работе на входе 1100? Сколько шагов при этом будет сделано?
Имеются три машины Тьюринга , которые имеют общие алфавит ленты , множество состояний и начальное состояние . Их программы представлены в таблицах на рис. 38 на следующей странице. Определить, какие из этих машин переводят любое входное слово вида , , в выходное .
Рис. 38: Программы машин из задачи 585.
Рис. 38: Программы машин из задачи 585.
Пусть — произвольный алфавит, не содержащий . Требуется построить машину Тьюринга , которая меняет местами два аргумента, точнее переводит любой вход вида ( и — слова в алфавите в выход со стандартной заключительной конфигурацией.
Определить, какие из следующих программ можно использовать для машины . В текстах программ — начальное состояние, — это произвольные символы из — это произвольные символы из , где — новые символы.
.
Построить машину Тьюринга, которая по каждому входному слову вида выдаёт результат . Как работает машина на других входах — несущественно. Оценить время работы построенной машины.
Построить машину Тьюринга, которая по каждому входному слову вида , где , выдаёт результат 0, а для всех остальных слов — результат 1. Оценить время работы построенной машины.
Построить машину Тьюринга, которая переводит любое входное слово в выходное , где — количество букв , а — количество букв в слове . Другими словами, выполняется сортировка букв слова с последующим их разделением. Оценить время работы построенной машины.
Пусть алфавит не содержит символов и *. Построить программу машины Тьюринга, которая выполняла бы перенос последнего слова на ленте в алфавите слева направо в место ленты, отмеченное *. Точнее, из ленты должно быть получено , где .
Построить машину Тьюринга, выполняющую следующую задачу: по входу, состоящему из одного или нескольких слов в алфавите (возможно, что ), построить выход, удвоив последнее из слов: .
Доказать, что для любой константы можно построить машину Тьюринга, которая решает задачу 591 за время не большее , где — это суммарная длина входных слов.
Построить машину Тьюринга, сравнивающую два входных слова в алфавите лексикографически. Эта машина Тьюринга должна вычислять словарную функцию:
Построить программы машин Тьюринга, вычисляющих следующие словарные функции в алфавите :
циклическая перестановка букв: ;
циклическая перестановка слов:
«переворачивание» последовательности слов:
удвоение каждой буквы: ;
нахождение образа при гомоморфизме ,
удаление всех одиночных букв , стоящих на чётных позициях;
проверка, содержат ли два слова одно и то же количество букв (результат равен 1, если ответ «да», 0, если «нет»);
проверка, является ли слово палиндромом (то есть симметричным);
проверка, есть ли в слове две последовательности букв одной и той же длины;
проверка, образуют ли в слове количества букв и возрастающую арифметическую прогрессию.
Построить машину Тьюринга для перевода записи числа из двоичной системы в унарную, входной алфавит .
Построить машину Тьюринга, которая по унарной записи трёх чисел, то есть входу вида , выдаёт результат 0, если , и 1 в противном случае. Оценить время работы построенной машины.
Построить программы односторонних машин Тьюринга, вычисляющих следующие арифметические функции в унарной системе:
;
;
;
сравнение ;
возведение в степень: ;
квадратный корень: ;
логарифм: ;
деление нацело: ;
остаток: ;
функция выбора -го аргумента: — заранее заданная константа.
Даны машины Тьюринга со стандартной заключительной конфигурацией , каждая из которых вычисляет словарную функцию за время . Указать, как построить, и оценить время работы
машины , вычисляющей функцию
машины , вычисляющей функцию
машины , вычисляющей функцию
машины , вычисляющей функцию , где — наименьшее натуральное число, для которого пусто, при этом и . Считать, что и .
Даны следующие машины Тьюринга со стандартной заключительной конфигурацией: - — копирует вход, используя символ как разделитель между оригиналом и копией: ; - — заменяет самое левое вхождение символа на , если символа нет, то вход не меняется; - — складывает два числа, записанных в унарной системе счисления; - — умножает два числа, записанных в унарной системе счисления; - — не изменяет вход.
Определить, какие арифметические функции вычисляются (в унарной системе счисления) следующими машинами Тьюринга, построенными методами из задачи 598 на предыдущей странице:
, ); ;
, (
, ); \operatorname {replace}$$(*, \Lambda ); .
Даны машины Тьюринга со стандартной заключительной конфигурацией из задачи 599 на предшествующей странице, а также следующие: - — возвращает -й аргумент или пустое слово, если количество аргументов меньше ; - — проверяет, является ли -й аргумент положительным (числа записаны в унарной системе), возвращает пустое слово, если он равен нулю, или |, если он положителен; - — уменьшает аргумент на единицу, если он положителен, в противном случае вход не изменяется (числа записаны в унарной системе). Определить, какие арифметические функции (в унарной системе) вычисляются каждой из машин Тьюринга, программы которых схематично изображены на рис. 39 на следующей странице (см. задачу 598 на предшествующей странице).
Используя машины Тьюринга из предыдущих задач, построить программы машин Тьюринга, вычисляющих следующие функции:
Показать, как на обычной машине Тьюринга можно организовать выполнение следующих команд:
, return — возврат головки в ту из соседних ячеек, из которой она пришла в текущую;
, zero — возврат головки в нулевую ячейку;
, mirror — сдвиг головку в ячейку , если она была в ячейке с номером ;
, double — сдвиг головку в ячейку , если она была в ячейке с номером ;
, next — сдвиг головки в ближайшую справа к текущей ячейку, содержащую (если она есть, иначе головка остаётся на месте);
— сдвиг текущей и всех ячеек справа от неё на одну позицию вправо и запись символа в освободившуюся ячейку, головка оказывается в новой ячейке;
, restore, — замена символа на тот, который находился в ячейке в начальной конфигурации.
Построить машину Тьюринга для задачи 591 на стр. 185, не увеличивая исходный алфавит .
Реализовать следующие машины Тьюринга без расширения алфавита:
стереть вторую половину слова, оставив центральный символ, если длина была нечётной;
сложить два числа, записанных в двоичной системе.
Один из подходов к моделированию двухсторонней ленты на односторонней заключается в том, чтобы содержимое неотрицательной половины ленты хранить в ячейках с нечётными номерами, а содержимое левой половины — с чётными. То есть новая лента будет иметь вид и при . Построить программу односторонней машины , реализующую этот подход.
Доказать, что всякую арифметическую функцию , вычислимую на некоторой машине Тьюринга в унарной системе счисления, можно также вычислить на машине Тьюринга , алфавит ленты которой содержит лишь два символа: и . Указание. Использовать для моделирования одного символа алфавита блок из нескольких подряд идущих ячеек, содержащих слово , где . Заменить каждую команду группой команд, обрабатывающих соответствующий блок ячеек.
-ленточная машина Тьюринга имеет лент, по каждой из которых перемещается своя головка. Команда -ленточной машины Тьюринга имеет вид
где — состояния, — символы, наблюдаемые головками на соответствующих лентах, — символы, записываемые головками на соответствующих лентах, — направления сдвигов головок на соответствующих лентах. Входные данные записываются на первой ленте, а остальные в начальной конфигурации пусты. Результат также располагается на первой ленте.
Доказать, что любую функцию, вычислимую на -ленточной машине Тьюринга, можно также вычислить и на обычной машине Тьюринга. На сколько при этом увеличится время вычисления?
Показать, что палиндромы (симметричные слова) можно распознать на двухленточной машине Тьюринга за время, пропорциональное их длине.