Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Доказательство. 3 страница



· бесконечной ленты, разделенной на ячейки, которая используется для ввода и вывода данных, а также для записи промежуточных результатов. На ленте могут записываться буквы некоторого алфавита А={a0,a1,…am} (внешний алфавит машины Тьюринга). Удобно считать, что пустые ячейки на самом деле содержат некоторую букву алфавита А (будем считать для определенности, что это буква a0.)

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

· выделенной ячейки памяти, содержащей символ внутреннего алфавита, задающий состояние машины Тьюринга. Головка может находиться в одном из состояний Q={q0,q1…qn} (внутренний алфавит машины Тьюринга). Состояние q0 заключительное, q1 – начальное.

· механического устройства управления, обеспечивающего перемещение головки относительно ленты

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

Обычно машина Тьюринга схематично изображается так

 
 


aj1 aj2   ajk     ajr

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

Управляющая головка – это некоторое устройство, которое может перемещаться вдоль ленты так, что в каждый рассматриваемый момент времени оно находится в определенной ячейке ленты. Если какая-нибудь ячейка находится в управляющей головке, то говорят также, что машина в данный момент «воспринимает» или «обозревает» эту ячейку.

Внутренняя память машины – это некоторое устройство, которое в каждый рассматриваемый момент находится в некотором «состоянии». Предполагается, что число возможных состояний внутренней памяти конечное и для каждой машины фиксированное. Состояние внутренней памяти мы будем обозначать символами алфавита Q={q0,q1…qn} или любыми другими символами, не входящими во внешний алфавит машины. Совокупность символов, обозначающих состояния внутренней памяти, называется внутренним алфавитом машины. Состояния внутренней памяти часто называют внутренними состояниями машины. Одно из этих состояний называется начальным, с него начинает работу любая машина, пусть это будет состояние q1. Еще одно специальное состояние q0 - заключительное. Символ, обозначающий заключительное состояние, будет называться стоп-символом. Наконец, если в какой-то момент времени внутренняя память машины приходит в заключительное состояние q0, то дальнейших изменений в машине не происходит и машина называется остановившейся. Может случиться, что в машине не будет происходить никаких изменений и при каком-то другом внутреннем состоянии qi. Однако в этом случае мы будем говорить, что машина продолжает работать «вечно».

Предполагается, что машина снабжена особым механизмом, который в зависимости от состояния воспринимаемой ячейки и состояния внутренней памяти может изменить состояние внутренней памяти и одновременно изменить состояние воспринимаемой ячейки и сдвинуть управляющую головку в соседнюю ячейку. В частном случае состояние воспринимаемой ячейки и/или состояние внутренней памяти могут оставаться неизменными, а управляющая головка – неподвижной. Если управляющая головка находится в самой правой ячейке и по ходу работы машина должна сдвинуть управляющую головку в соседнюю справа (отсутствующую) ячейку, то предполагается, что, сдвигая головку, машина одновременно пристроит недостающую ячейку в пустом состоянии. Аналогично работает машина и в случае, когда головка воспринимает самую левую ячейку и по ходу дела машине надо сдвинуть головку еще левее.

Работа машины состоит в том, что она из данного «состояния» по истечении одного такта работы механического устройства переходит в следующее «состояние», затем от нового состояния по истечении такта работы переходит к новому состоянию и так далее. Таким образом, если машина, имея внутреннее состояние qi и воспринимая ячейку ленты с символом ai переводит внутреннюю память в состояние qb и одновременно содержимое воспринимаемой ячейки заменяет символом as, а управляющая головка остается на месте (H), сдвинется на одну ячейку вправо (R) или влево (L), то говорят, что машина выполняет команду соответственно

qi ai→as H qb,

qi ai→as R qb,

qi ai→as L qb.

Совокупность всех команд, которые может выполнять машина, называется ее программой. Так как работа машины по условию целиком определяется состоянием в данный момент ее внутренней памяти qi и состоянием воспринимаемой ячейки aj, то для каждых qi aj (i=1, …, n; j=0, 1, …, m), программа машины должна содержать одну и только одну команду, начинающуюся словом qi aj. Таким образом, программа машина с символами{ a0, a1, …, am } и состояниями { q0,q1…qn } содержит максимум (n+1)(m + 1) команд. При этом некоторые команды являются «мертвыми», в том случае, если ни при каких входных словах в данном алфавите невозможно наступление этой конфигурации. В грамотной с точки зрения реализации программе таких строк быть не должно, хотя формально их наличие ошибкой не является.

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

· левее слова х и правееслова у все ячейки содержат пустой символ,

· головка машины обозревает ячейку, которая находится сразу после слова х,

· первая буква слова у записана в ячейке ленты, обозреваемой головкой машины,

· qi – состояние машины на данном шаге.

На рисунке определение конфигурации можно продемонстрировать следующим образом.

 
 


a0 a0 a0                         a0 a0 a0 a0

Конфигурация с начальным состоянием головки называется начальной, с заключительным состоянием – заключительной. Переход за один такт работы МТ из конфигурации x1 qi y1 в конфигурацию x2 qj y2 будем обозначать так

x1 qi y1 x2 qj y2

Если переход из одной конфигурации в другую осуществляется более, чем за один шаг, то это будем обозначать таким образом

x1 qi y1x2 qj y2

Действия МТ весьма разнообразны и зависят не только от программы, но и от начальной записи на ленте и начального положения головки. Любые действия машины можно назвать вычислениями.

Вычисления, производимые МТ в алфавите Аправильные, если выполняются следующие условия

· В начальный момент машина находится в состоянии q1.. а ленте записано некоторое слово W в алфавите А и все ячейки ленты, не содержащие слово W, содержат пустой символ. Головка машины обозревает ячейку с первой буквой слова W.

 
 


a0 a0 a0               a0 a0 a0 a0

· При переходе МТ в заключительное состояние q0 все ячейки левее головки содержат пустой символ. Головка находится над самой левой среди ячеек, не содержащей пустой символ (если такие имеются).

Результатом правильных вычислений МТ считается:

· Пустое слово, если ячейки ленты не содержат непустых символов.

· Слово, первая буква, которого находится в ячейке, обозреваемого головкой, а последняя отлична от пустого символа и такая, что все буквы на ленте являются пустыми символами.

Пример 1. Построить МТ, которая осуществляет переход 0 q1 1 n ᅡ01 n q0 0.

Нетрудно понять, что внешний алфавит для такой МТ достаточно взять двухсимвольный А={0,1}, причем пустым символом будет 0.

Действия МТ в данном случае сводятся к переходу к первому нулю после последовательности единиц и остановке.

Программа МТ для перехода

q10®0Hq0

q11®1Rq2

q21®1Rq2

q20®0Hq0

Удобно представлять программу МТ в виде таблицы, строки которой помечены символами внешнего алфавита МТ, а столбцы – символами внутреннего алфавита МТ. Если МТ имеет команду qi ai→as H qb, то в ячейке на пересечении строки ai и столбца qi находится выражение as H qb . Заполним таблицу, которая соответствует данной МТ.

  q1 q2
0 0Hq0 0Hq0
1 1Rq2 1Rq2

Приведем пошаговое исполнение программы для начальной конфигурации при n =3.

0 q1 1 1 1 0ᅣ 0 1 q2 1 1 ᅣ 0 1 1 q2 1 0 ᅣ 0 1 1 1 q2 0 ᅣ0 1 1 1 q0 0

Пример 2. Построим МТ, которая работает следующим образом (x,у ³1)

q11x01yÞ 0q0 10, если x³у
0q0 0, если x<y

Внешний алфавит для такой МТ достаточно взять двухсимвольный А={0,1}, причем пустым символом будет 0. Будем удалять из каждой группы единиц по одной единице до тех пор, пока одна из групп не станет пустой, причем из первой группы будем удалять из начала, а из второй из конца. Тогда если пустой стала первая группа единиц, то x<y и необходимо обнулить все оставшиеся единицы и остановиться в заключительном состоянии. Если пустой стала вторая группа единиц, то x³у и необходимо обнулить все оставшиеся единицы, поставить одну единицу и остановиться в заключительном состоянии. Программа такой МТ имеет следующий вид

q11®0Rq2 Удаляем 1 из начала первой группы
q21®1q2R Проходим через первую группу единиц вправо
q20®0q3R Проходим через разделяющий 0 вправо
q31®1q3R Проходим через вторую группу единиц вправо
q30®0q4L Устанавливаем головку на конец второй группы единиц
q41®0q5L Удаляем 1 из конца второй группы
q51®1q5L Проходим через вторую группу единиц влево
q50®0q6L Проходим через разделяющий 0 влево
q61®1q6L Проходим через первую группу единиц влево
q60®0q1R Устанавливаем головку на начало первой группы единиц и повторяем все действия
q10®0q8R Если первая группа закончилась, удаляем оставшиеся единицы
q81®0q8R Проходим через вторую группу единиц вправо, заменяя 1 на 0
q80®0q8H Остановка
q40®0q7L Если вторая группа закончилась, удаляем оставшиеся единицы
q71®0q7L Проходим через первую группу единиц влево, заменяя 1 на 0
q70®1q0H Остановка на ячейке с единицей

Приведем пошаговое исполнение программы для начальной конфигурации при х =3, у =2.

0 q1 1 1 1 0 1 1 0ᅣ00 q2 1 1 0 1 1 0 ᅣ 0 1 q2 1 0 1 1 0ᅣ 0 1 1 q2 0 1 1 0ᅣ

0 1 1 0 q3 1 1 0ᅣ 0 1 1 0 1 q3 1 0 ᅣ 0 1 1 0 1 1 q3 0 ᅣ 0 1 1 0 1 q4 10 ᅣ

0 1 1 0 q5 10 ᅣ 0 1 1 q5 0 1 0 ᅣ 0 1 q6 1 0 1 0 ᅣ 0 q6 1 1 0 1 0 ᅣ q6 0 1 1 0 1 0 ᅣ

0 q1 1 1 0 1 0 ᅣ 0 q2 1 0 1 0 ᅣ 0 1 q2 0 1 0 ᅣ 0 1 0 q3 1 0 ᅣ0 1 0 1 q3 0 ᅣ0 1 0 q4 1 0 ᅣ

0 1 q5 0 0 0 ᅣ0 q6 1 0 0 0 ᅣ0 q6 1 0 0 0 ᅣ q6 0 1 0 0 0 ᅣ0 q1 1 0 0 0 ᅣ0 q2 0 0 0 ᅣ

0 q3 0 0 0 ᅣ0 q4 0 0 0 ᅣ0 q7 0 0 0 ᅣ0 q0 1 0 0

2.3 Вычисление функций на машине Тьюринга

Далее будем применять МТ для правильного вычисления арифметических функций f: N ® N. Для вычисления f(х), х=0,1,…, будем представлять х в виде последовательности х+1 единиц. Если функция зависит от нескольких переменных, то, введя дополнительный символ (разделитель *) во внешний алфавит, будем последовательно записывать последовательности единиц, соответствующие аргументам функции, разделенные символом разделителем.

Правильным вычислением арифметической функции f(х), х=0,1,…, на МТ будем называть правильные вычисления, производимые МТ в алфавите А ={0,1} при переходе от конфигурации 0 q1 1 x+1 0к конфигурации 0 q0 1 f(x)+1 0.

Пример. Вычислим функцию O(x)= 0.

Очевидно, что действия МТ сводятся к последовательной замене всех единиц на ленте нулями.

Программа вычислений

  q1 q2
0   1Hq0
1 0Rq2 0Rq2

Пример. Вычислим функцию S(x)=x+1

Для вычисления этой функции достаточно приписать слева одну единицу к последовательности единиц на ленте.

Программа вычислений

  q1 q2
0   1Hq0
1 1Lq2  

Пример. Построить машину Тьюринга для вычисления функции C(x)=S(O(x)).

Искомую машину будем строить как суперпозицию машин, вычисляющих функции O(x)= 0 и S(x)=x+1 Возьмем МТ, вычисляющие эти функции. Объединим состояния и программы этих машин. Пусть имеются две машины Т1 и Т2, которые вычисляют функции f1(x) и f2(x) соответственно в одном и том же алфавите. Построим новую машину Тьюринга Т следующим образом. Состояния машины Т2 переобозначим так, чтобы они отличались от состояний Т1. Начальное состояние q11 машины Т1 объявляем начальным состоянием q1 машины Т. Заключительное состояние q02 машины Т2 объявляем заключительным состоянием q0 для машины Т. Заключительное состояние q01 машины Т1 и начальное состояние q12 машины Т2 отождествляем. Полученные команды для обеих машин объединяем в одну программу новой машины. Построенная машина Т вычисляет суперпозицию функций f(x)=f2(f1(x)) и называется суперпозицией машин Т1 и Т2.

В результате из двух таблиц

  q1 q2     q1 q2
0   1Hq0   0   1Hq0
1 0Rq2 0Rq2   1 1Lq2  

получим одну

  q1 q2 1 q0 1 q22
0   1H q01   1Hq0
1 0R q2 1 0R q2 1 1L q22  

Пример. Построить МТ для вычисления функции

Ранее были построены МТ для вычисления функций O(x)= 0 и S(x)=x+1. Легко видеть, что исходная функция – это функция O(x), если x> 1 и функция S(x) в противном случае. Таким образом, перед вычислением нужно определить сколько единиц находится на ленте, и в зависимости от этого переходить к вычислению функций. Для определения количества единиц на ленте будем сдвигаться по ленте вправо и на каждом сдвиге менять состояние МТ. Если обнаружили больше двух единиц, необходимо вернуться назад на начало последовательности единиц и применить МТ для вычисления функции O(x). Если обнаружили две или одну единицу, то устанавливаем головку на начале последовательности единиц и применяем МТ для вычисления функции S(x). Внутренние состояния машин для вычисления функций O(x) и S(x) пометим буквами O и S соответственно. Заключительные состояния этих машин отождествим.

q11®1Rq2

q21®1Rq3 На ленте больше одной единицы

q31®1Lq4 На ленте больше двух единиц

q41®1Lq4

Сдвигаемся обратно на начало последовательности

q40®0RqО0 Начинаем вычисление функции O(x)

q20®0LqS0 На ленте одна единица, начинаем вычисление S(x)

q30®0Lq5

На ленте две единицы, переходим на начало последовательности

q51®1Lq5

q50®0RqS0 начинаем вычисление S(x)

Пример. Построить МТ для вычисления функции

Чтобы правильно вычислить данную функцию, необходимо построить МТ, которая переводит конфигурацию 0 q1 1 x+1 01 y+1 в конфигурацию 0 q0 1 x+y+1 0

Порядок действий для МТ можно выбрать такой. Сначала происходит движение головки вправо до появления на ленте нуля. Этот нуль разделяет аргументы на ленте. Поставим в эту ячейку вместо нуля единицу и вернемся к началу последовательности единиц. Заменим первые две единицы нулями. Тогда на ленте останется единиц.

Набор команд для такой МТ

q11®1Rq2

q21®1Rq2

q20®1Lq3

q31®1Lq3

q30®0Rq4

q41®0Rq5

q51®0Rq0

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


Проверим работу МТ для конкретных значений переменных

Последовательно применим команды МТ для данной конфигурации

0 q1 11110111ᅣ01 q2 1110111ᅣ011 q2 110111ᅣ0111 q2 10111ᅣ01111 q2 0111

ᅣ0111 q3 11111ᅣ011 q3 111111ᅣ01 q3 1111111ᅣ0 q3 11111111ᅣ q3 011111111

ᅣ0 q4 11111111ᅣ00 q5 1111111ᅣ000 q0 111111

Таким образом, головка МТ остановилась в заключительном состоянии на самой левой единицы последовательности из 6 (3+2+1) единиц Функция вычислена правильно.

2.4 Алгоритмически неразрешимые задачи

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

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

Каждому символу из множества поставим в соответствие двоичную последовательность по следующему правилу

R  
L  
H  
 
 
102i+4
 
 
102i+5

Очевидно, что последовательности и могут совпадать только тогда, когда .

Команде МТ , , , сопоставим последовательность такого вида (числа здесь не перемножаются, а последовательно записаны)





Дата публикования: 2015-03-26; Прочитано: 428 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.019 с)...