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

Автор работы: Пользователь скрыл имя, 22 Ноября 2013 в 20:53, реферат

Описание работы

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

Файлы: 1 файл

Документ Microsoft Office Word.docx

— 85.86 Кб (Скачать файл)

Областное государственное  бюджетное образовательное учреждение

среднего профессионального  образования

 «Смоленский промышленно  – экономический колледж»

 

 

 

 

 

 

 

 

Творческое задание  на тему:

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Выполнил:

Студент группы 014 Прс

Емельянов Сергей Александрович

 

 

 

 

Смоленск

2013

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

Во многих учебниках по информатике при изучении понятия  и свойств алгоритма присутствуют фразы такого содержания: “…существует много разных способов для записи одного и того же алгоритма, например, запись в виде текста, запись в виде блок-схемы, запись на каком-либо алгоритмическом  языке, представление алгоритма  в виде машины Тьюринга или машины Поста…”. К сожалению, такого типа фразы являются единственными, где  упоминается машина Тьюринга. Без  сомнения, объем часов, отводимых  на изучение алгоритмов, не позволяет  включать в эту тему еще и изучение способов записи алгоритма в виде машины Тьюринга. Но эта тема крайне интересна, важна и полезна для  школьников, особенно увлекающихся информатикой.

Тема “Машина Тьюринга”  может изучаться в 8–11-х классах  в рамках темы “Информационные процессы. Обработка информации”, на факультативных занятиях, в системе дополнительного  образования, например, в школах юных программистов. Изучение этой темы может  сопровождаться компьютерной поддержкой, если у учителя есть программный  тренажер-имитатор “Машина Тьюринга”. В классах с углубленным изучением  программирования школьники могут  самостоятельно написать программу  “Машина Тьюринга”. В рамках этой статьи вашему вниманию предлагается практикум по решению задач на тему “Машина Тьюринга”. Теоретический  материал по данной теме не раз печатался  на страницах газеты “Информатика”, например, в № 3/2004 статья И.Н. Фалиной “Элементы теории алгоритмов”.

Краткий теоретический материал

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

В каждой машине Тьюринга есть две части:

1) неограниченная в обе стороны лента, разделенная на ячейки;

2) автомат (головка для считывания/записи, управляемая программой).

С каждой машиной Тьюринга связаны два конечных алфавита: алфавит входных символов A = {a0, a1, ..., am}и алфавит состояний Q = {q0, q1, ..., qp}. (С разными машинами Тьюринга могут быть связаны разные алфавиты A и Q.) Состояние q0 называется пассивным. Считается, что если машина попала в это состояние, то она закончила свою работу. Состояние q1 называется начальным. Находясь в этом состоянии, машина начинает свою работу.

Входное слово размещается  на ленте по одной букве в расположенных  подряд ячейках. Слева и справа от входного слова находятся только пустые ячейки (в алфавит А всегда входит пустая буква а0 — признак того, что ячейка пуста).

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

 

Автомат каждый раз “видит”  только одну ячейку. В зависимости  от того, какую букву ai он видит, а также в зависимости от своего состояния qj автомат может выполнять следующие действия:

· записать новую букву  в обозреваемую ячейку;

· выполнить сдвиг по ленте  на одну ячейку вправо/влево или  остаться неподвижным;

· перейти в новое состояние.

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

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

Клетка (qj, ai) определяется двумя параметрами — символом алфавита и состоянием машины. Команда представляет собой указание: куда передвинуть головку чтения/записи, какой символ записать в текущую ячейку, в какое состояние перейти машине. Для обозначения направления движения автомата используем одну из трех букв: “Л” (влево), “П” (вправо) или “Н” (неподвижен).

После выполнения автоматом  очередной команды он переходит  в состояние qm (которое может в частном случае совпадать с прежним состоянием qj). Следующую команду нужно искать в m-й строке таблицы на пересечении со столбцом al (букву al автомат видит после сдвига).

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

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

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

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

В этой машине Тьюринга q1 — состояние изменения цифры, q0 — состояние останова. Если в состоянии ql автомат видит цифру 0..8, то он заменяет ее на 1..9 соответственно и переходит в состояние q0, т.е. машина останавливается. Если же он видит цифру 9, то заменяет ее на 0, сдвигается влево, оставаясь в состоянии ql. Так продолжается до тех пор, пока автомат не встретит цифру меньше 9. Если же все цифры были равны 9, то он заменит их нулями, запишет 0 на месте старшей цифры, сдвинется влево и в пустой клетке запишет 1. Затем перейдет в состояние q0, т.е. остановится.

Практические  задания

1. На ленте машины Тьюринга  содержится последовательность  символов “+”. Напишите программу  для машины Тьюринга, которая  каждый второй символ “+” заменит  на “–”. Замена начинается  с правого конца последовательности. Автомат в состоянии q1 обозревает один из символов указанной последовательности. Кроме самой программы-таблицы, описать словами, что выполняется машиной в каждом состоянии.

2. Дано число n в восьмеричной системе счисления. Разработать машину Тьюринга, которая увеличивала бы заданное число n на 1. Автомат в состоянии q1 обозревает некую цифру входного слова. Кроме самой программы-таблицы, описать словами, что выполняется машиной в каждом состоянии.

3. Дана десятичная запись  натурального числа n > 1. Разработать машину Тьюринга, которая уменьшала бы заданное число n на 1. Автомат в состоянии q1 обозревает правую цифру числа. Кроме самой программы-таблицы, описать словами, что выполняется машиной в каждом состоянии.

4. Дано натуральное число n > 1. Разработать машину Тьюринга, которая уменьшала бы заданное число n на 1, при этом в выходном слове старшая цифра не должна быть 0. Например, если входным словом было “100”, то выходным словом должно быть “99”, а не “099”. Автомат в состоянии q1 обозревает правую цифру числа. Кроме самой программы-таблицы, описать словами, что выполняется машиной в каждом состоянии.

5. Дан массив из открывающих  и закрывающих скобок. Построить  машину Тьюринга, которая удаляла  бы пары взаимных скобок, т.е.  расположенных подряд “( )”.

Например, дано “) ( ( ) ( ( )”, надо получить “) . . . ( ( ”.

Автомат в состоянии q1 обозревает крайний левый символ строки. Кроме самой программы-таблицы, описать словами, что выполняется машиной в каждом состоянии.

6. Дана строка из букв  “a” и “b”. Разработать машину Тьюринга, которая переместит все буквы “a” в левую, а буквы “b” — в правую части строки. Автомат в состоянии q1 обозревает крайний левый символ строки. Кроме самой программы-таблицы, описать словами, что выполняется машиной в каждом состоянии.

7. На ленте машины Тьюринга  находится число, записанное в  десятичной системе счисления.  Умножить это число на 2. Автомат  в состоянии q1 обозревает крайнюю левую цифру числа. Кроме самой программы-таблицы, описать словами, что выполняется машиной в каждом состоянии.

8. Даны два натуральных  числа m и n, представленные в унарной системе счисления. Соответствующие наборы символов “|” разделены пустой клеткой. Автомат в состоянии q1обозревает самый правый символ входной последовательности. Разработать машину Тьюринга, которая на ленте оставит сумму чисел m и n. Кроме самой программы-таблицы, описать словами, что выполняется машиной в каждом состоянии.

9. Даны два натуральных  числа m и n, представленных в унарной системе счисления. Соответствующие наборы символов “|” разделены пустой клеткой. Автомат в состоянии q1 обозревает самый правый символ входной последовательности. Разработать машину Тьюринга, которая на ленте оставит разность чисел m и n. Известно, что m > n. Кроме самой программы-таблицы, описать словами, что выполняется машиной в каждом состоянии.

10. На ленте машины Тьюринга  находится десятичное число. Определить, делится ли это число на 5 без  остатка. Если делится, то записать  справа от числа слово “да”, иначе — “нет”. Автомат обозревает  некую цифру входного числа.  Кроме самой программы-таблицы,  описать словами, что выполняется  машиной в каждом состоянии.

Решения заданий 

Задача 1

В состоянии q1 машина ищет правый конец числа, в состоянии q2 — пропускает знак “+”, при достижении конца последовательности — останавливается. В состоянии q3 машина знак “+” заменяет на знак “–”, при достижении конца последовательности она останавливается.

Задача 2

Решение этой задачи аналогично рассмотренному выше примеру.

Задача 3

Состояние q1 — уменьшаем младшую (очередную) цифру на 1. Если она не равна нулю, то после уменьшения сразу — останов, если же младшая цифра равна 0, то вместо нее пишем 9, смещаемся влево и вновь выполняем вычитание. В клетку [a0, q1] машина Тьюринга никогда не попадет, поэтому ее можно не заполнять.

Задача 4 (усложнение задачи 3)

Состояние q1 — уменьшаем младшую (очередную) цифру на 1. Если она больше 1, то после уменьшения — сразу останов, если же младшая цифра равна 0, то вместо нее пишем 9, смещаемся влево и вновь выполняем вычитание. Если уменьшаемая цифра равна 1, то вместо нее пишем 0 и переходим в состояние q2.

Состояние q2 — после записи “0” в каком-либо разряде надо проанализировать, не является ли этот ноль старшей незначащей цифрой (т.е. не стоит ли слева от него в записи выходного слова a0).

Состояние q3 — если записанный “0” является старшей незначащей цифрой, то его надо удалить из записи выходного слова.

Те клетки, в которые  машина Тьюринга никогда не попадает, оставляем пустыми.

Задача 5

Состояние q1: если встретили “(”, то сдвиг вправо и переход в состояние q2; если встретили “a0”, то останов.

Состояние q2: анализ символа “(” на парность, в случае парности должны увидеть “)”. Если парная, то возврат влево и переход в состояние q3.

Состояние q3: стираем сначала “(”, затем “)” и переходим в q1.

Задача 6

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

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

aaa —> выходное слово совпадает с входным, просматриваем входное слово до тех пор, пока оно не заканчивается.

a —> выходное слово совпадает с входным, просматриваем входное слово до тех пор, пока оно не заканчивается.

bbb —> выходное слово совпадает с входным, просматриваем входное слово до тех пор, пока оно не заканчивается.

b —> выходное слово совпадает с входным, просматриваем входное слово до тех пор, пока оно не заканчивается.

ab —> выходное слово совпадает с входным, просматриваем входное слово до тех пор, пока оно не заканчивается.

Информация о работе Машина Тьюринга