Односторонние машины Тьюринга
Машина Тьюринга

Лемма 9.2. Для всякой м.Т.


Доказательство. Пусть






будет тот же символ, что и в -i-ой ячейке




1) На первом этапе отмечается 1-я ячейка и содержимое входа переписывается на 1-ый этаж трехэтажной ленты:

Затем





Кроме того, для a =


Сдвиги



После завершения моделирования



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

Основные определения
Рассматриваемая в этом разделе модель алгоритмов была предложена английским математиком Тьюрингом в 1937г. еще до создания современных компьютеров компьютеров1)
Он исходил из общей идеи моделирования работы вычислителя, оперирующего в соответствии с некоторым строгим предписанием. В машине Тьюринга расчленение процесса вычисления на элементарные шаги доведено в известном смысле до предела. Элементарным действием является замена одного символа в ячейке на другой и перемещение к соседней ячейке. При таком подходе процесс вычисления значительно удлиняется, но зато логическая структура процесса сильно упрощается и приобретает удобный для теоретического исследования вид.
Машина Тьюринга (м.Т.) состоит из неограниченной в обе стороны ленты, разбитой на ячейки, по которой передвигается головка машины. Такая "бесконечность" ленты является математической абстракцией, отражающей потенциальную неограниченность памяти вычислителя. Разумеется, в каждом завершающемся вычислении используется только конечная часть этой памяти - конечное число ячеек. В каждой ячейке ленты записан один символ из конечного внешнего алфавита машины ? = {a0, a1, … ,am }. Головка машины представляет конечный автомат, который в каждый момент времени находится в одном из внутренних состояний Q ={q0,q1,… , qn }. На каждом шаге головка в зависимости от своего внутреннего состояния и символа в ячейке, которую она наблюдает, изменяет свое внутреннее состояние и содержимое наблюдаемой ячейки и может сдвинуться на одну ячейку вправо или влево либо остаться на месте.
Дадим более формальное определение.
Определение 9.1. Машина Тьюринга - это система вида

включающая следующие компоненты:
Q ={q0,q1,… ,qn } - внутренний алфавит (алфавит состояний); ? = {a0, a1, … , a{m-1} } - внешний алфавит (алфавит ленты);
P - программа машины, в которой для каждой пары qi



C

q0


Выделим в алфавите ? специальный пустой символ a0 =

Будем говорить, что некоторый символ стирается, если он заменяется на пустой. Два слова из ?* будем считать равными, если они совпадают после отбрасывания всех пустых символов слева и справа. Например,









Как и для конечных автоматов, программу P можно задавать с помощью таблицы размера n ? m, строки которой соответствуют состояниям из Q, а столбцы - символам из входного алфавита ?, в которой на пересечении строки qi и столбца aj стоит тройка qk al C - правая часть команды qi aj

Определение 9.2. Назовем конфигурацией м.Т.



Будем считать, что слово wл aj wп содержит все значащие символы на ленте. Поэтому, с точностью до описанного выше равенства слов, конфигурация определена однозначно. В частности, если wл=?, т.е. пусто, то левее положения головки все ячейки пусты, а если wп=?, то правее положения головки все ячейки пусты.
Начальная конфигурация - это конфигурация вида q0w, т.е. в начальный момент времени головка в состоянии q0 обозревает первый символ входного слова w. { it Заключительная } конфигурация - это конфигурация вида w1 qf w2, в которой машина находится в заключительном состоянии qf .
Определение 9.3. Скажем, что конфигурация K= w1 qi aj w2 м.Т.



если С=Н, то w1'=w1, w2'=w2 и a{j'}=al;если С=Л, то w1=w1' a, a{j'}=a, w2'=al w2 (если w1=?, / то w1' = ? и a{j'}=


Как обычно, через




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



Доказательство Действительно, пусть


Используя лемму 9.1, будем считать, что у






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




Доказательство. Пусть



Начав в конфигурации (p0x*y), находит 1-ый символ yи переходит в конфигурацию (x*q02y).Работая как




Корректность этапов 2 и 4 следует из односторонности


Построенную в этой лемме м.Т.






на ленте





Конструкцию параллельной композиции можно обобщить на произвольное конечное число машин Тьюринга.
Следствие. Пусть



Действительно, в качестве



Повторение (цикл)
Используя конструкцию для ветвления легко реализовать в терминах машин Тьюринга и оператор цикла.
Лемма 9.6. Пусть ? - распознающая м.Т., а м.Т.



Доказательство. Действительно, пусть м.Т.


м.Т.







Реализованные выше операции над машинами Тьюринга и вычислимыми функциями позволяют получать программы новых м.Т., используя обычные конструкции языка программирования "высокого" уровня: последовательную и параллельную композицию, ветвление и цикл. Пусть M, M1, M2,… , Mm, ? - машины Тьюринга. Последовательную композицию M1 и M2 будем обозначать M1;M2, параллельную композицию M1, M2,… , Mm обозначаем как


цикл -

Пример 9.4. Рассмотрим в качестве примера задачу перевода чисел из унарной системы счисления в двоичную. Пусть fub(|n) = n(2) для всех n

Пусть M1 - м.Т., которая начальную конфигурацию q0 ,|n переводит в конфигурацию q1 ,0*|n; M2 - м.Т., которая прибавляет 1 к двоичному числу-аргументу (см. пример ref{ex8-suc}); M3 - м.Т., которая вычитает 1 из унарного числа; ? - м.Т., которая на аргументе вида x*|y выдает 0, если число y > 0, и выдает 1 при y=0 (т.е. на аргументе x*


Действительно, после работы M1 получаем конфигурацию q10*|n. Предположим теперь по индукции, что после i (i <n) итераций цикла while получается конфигурация q1 i(2)*|n-i. Тогда на (i+1)-ой итерации цикла после параллельного применения M2 к i(2) и M3 к |n-i
получаем конфигурацию q1(i+1)(2)*|n-i-1. Поэтому после n итераций получится конфигурация q1 n(2)*


Отметим, что из приведенного примера и из задачи \oldref{prb3-6}(a) следует, что класс вычислимых на м.Т. арифметических функций не зависит от выбора унарного или двоичного кодирования аргументов и результатов. Это же справедливо и для троичной, десятичной и других позиционных систем счисления ( почему ?).
Стандартная заключительная конфигурация
Назовем заключительную конфигурацию стандартной, если в ней головка наблюдает первый значащий символ результата, который находится в 1-ой ячейке (т.е. в той же ячейке, где начиналось входное слово).
Лемма 9.1.Для всякой м.Т.


Доказательство. Пусть






Отмечает символ в первой ячейке штрихом и переходит в начальное состояние










































Из построения непосредственно следует, что м.Т.

Тьюрингово программирование
В этом разделе мы приведем примеры вычислений на машинах Тьюринга и рассмотрим некоторые общие приемы, позволяющие комбинировать программы различных м. Т. для получения более сложных вычислений. Будем считать, что ячейки ленты м.Т. занумерованы от -? до +? , причем в начальной конфигурации головка находится в 1-ой ячейке:

Рис. 9.2. Нумерация ячеек ленты машины Тьюринга
Пример 9.2.Функция f(x)=x+1
Унарное кодирование.
Пусть м.Т.




Ясно, что м.Т.

Бинарное кодирование.
Пусть м.Т.



Нетрудно видеть, что эта машина в состоянии q0 находит младший разряд двоичного входа, затем в состоянии q1, идя справа налево, заменяет единицы на нули до тех пор, пока не находит 0 (или


Пример 9.2. Копирование.
Рассмотрим функцию копирования (дублирования) слов в алфавите ?: copy(x)= x*x (мы предполагаем, что *

Для ее реализации используем один из типичных приемов Тьюрингова программирования - { it расширение алфавита}.Пусть ?'= {a' | a



отмечает 1-ый символ входа, идет направо, ставит * после входа и возвращается в начало:




Из этого описания непосредственно следует, что


Ветвление (условный оператор)
Машину Тьюринга ? будем называть распознающей, если для некоторого алфавита ? и каждого входа x


Лемма 9.5. Пусть ? - распознающая м.Т., м.Т.




Доказательство. Требуемая м.Т.

вначале копирует вход x и получает на ленте слово x*x, затем вычисляет параллельную композицию функций ?(x) и тождественной функции e(x)=x и переходит в конфигурацию p{?}(x)*x. Выбор между f и g происходит по следующим командам:

Кроме того, обеспечим переход в новое заключительное состояние:

Таким образом, мы реализовали в терминах машин Тьюринга обычный в языках программирования оператор ветвления:

для функции копирования, не увеличивая
Задача 9.1. Постройте м.Т. для функции копирования, не увеличивая исходный алфавит ?.
Задача 9.2. Постройте программу м.Т., которая выполняла бы перенос непустого слова в заданное место ленты, т.е. для любого слова w



Задача 9.3. Достройте программу м.Т.

Задача 9.4. Докажите, что односторонняя м.Т.


Задача 9.5. Другой, по сравнению с конструкцией леммы 9.2, подход к моделированию двухсторонней ленты на односторонней заключается в том, чтобы содержимое правой полуленты


Задача 9.6. Достройте программу м.Т.

Задача 9.7. Построить программы машин Тьюринга, вычисляющих следующие функции.
Перевод из двоичной системы в унарную: fbu(n(2))= |n.Сложение и вычитание в двоичной системе: sum(n*m)=n+m и








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




Задача 9.9. Докажите, что всякую арифметическую функцию f(x), вычислимую на некоторой м. Т. M = <Q, ?, P,q0, qf>, можно также вычислить на м. Т. M',, алфавит ленты которой содержит лишь два символа


Задача 9.10.
Построить машину Тьюринга, определяющую по слову x в алфавите {1, 2} симметрично ли оно, т. е. вычисляющую функцию:

Задача 9.11.
Построить машину Тьюринга, сравнивающую два слова x=x1x2… xn и y=y1y2… ym в алфавите {1, 2, 3} лексикографически:

