Машина Тьюринга
Характеристика математического аппарата, созданного для решения определенных задач. Анализ составных частей и функционирования Машины Тьюринга, ее принципиального отличия от вычислительной машины. Изучение умножения чисел в унарной системе счисления.
Рубрика | Математика |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 21.12.2011 |
Размер файла | 239,8 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Машина Тьюринга -- это строгое математическое построение, математический аппарат (аналогичный, например, аппарату дифференциальных уравнений), созданный для решения определенных задач. Этот математический аппарат был назван “машиной” по той причине, что по описанию его составляющих частей и функционированию он похож на вычислительную машину. Принципиальное отличие машины Тьюринга от вычислительных машин состоит в том, что ее запоминающее устройство представляет собой бесконечную ленту: у реальных вычислительных машин запоминающее устройство может быть как угодно большим, но обязательно конечным. Машину Тьюринга нельзя реализовать именно из-за бесконечности ее ленты. В этом смысле она мощнее любой вычислительной машины. В каждой машине Тьюринга есть две части:
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.
Машина Тьюринга должна “понимать”, по цепочке каких букв она идет, т.е. у нее должно быть как минимум два состояния. Пусть состояние q1 -- движение по цепочке из букв “a”, а q2 -- состояние движения по цепочке из букв “b”. Заметим, что цепочка может состоять и из одной буквы. Если мы дошли до конца строки в состоянии q1 или q2, т.е. встретили a0, машина должна остановиться, мы обработали всю строку.
Рассмотрим следующие варианты входных слов:
bba --> abb
bbbaab --> aabbbb
aabbbaab --> aaaabbbb
Первый вариант входного слова можно последовательно обработать следующим образом: bba --> bbb --> вернуться к левому концу цепочки из букв “b” --> abb (заменить первую букву в этой цепочке на “a”). Для выполнения этих действий нам потребуется ввести два новых состояния и, кроме того, уточнить состояние q2. Таким образом, для решения этой задачи нам нужно построить машину Тьюринга со следующими состояниями:
q1 -- идем вправо по цепочке букв “a”. Если цепочка заканчивается a0, то переходим вq0; если заканчивается буквой “b”, то переходим в q2;
q2 -- идем вправо по цепочке букв “b”, если цепочка заканчивается a0, то переходим вq0; если заканчивается “a”, то заменяем букву “a” на “b”, переходим в состояние q3(цепочку вида заменили на цепочку вида );
q3 -- идем влево по цепочке букв “b” до ее левого конца. Если встретили a0 или “a”, то переходим в q4;
q4 -- заменяем “b” на “a” и переходим в q1 (цепочку вида заменяем на цепочку вида .
Задача 7
состояние q1 -- поиск правой (младшей) цифры числа;
состояние q2 -- умножение очередной цифры числа на 2 без прибавления 1 переноса;
состояние q3 -- умножение очередной цифры числа на 2 с прибавлением 1 переноса.
Задача 8
Машина Тьюринга для этой программы выглядит тривиально просто -- в ней всего одно состояние. Такая машина Тьюринга выполняет следующие действия: стирает самый правый штрих, ищет разделитель (пустую ячейку) и в эту пустую ячейку помещает штрих, тем самым сформирована непрерывная последовательность штрихов длины n + m.
Задача 9
Идея решения (условие останова). На ленте есть два исходных массива штрихов.
Штрихи начинаем стирать с левого конца массива m. И поочередно стираем самый левый штрих в массиве m и самый правый штрих в массиве n. Но прежде чем стереть правый штрих в массиве n, проверяем, единственный он (т.е. последний, который надо стереть) или нет.
Опишем сначала состояния машины Тьюринга, которые необходимы для решения нашей задачи, а затем составим программу-таблицу.
Состояние q1 -- поиск разделителя между массивами штрихов при движении справа налево;
состояние q2 -- поиск левого штриха в массиве m;
состояние q3 -- удаление левого штриха в массиве m;
состояние q4 -- поиск разделителя при движении слева направо;
состояние q5 -- поиск правого штриха в массиве n;
состояние q6 -- проверка единственности этого штриха в массиве n, т.е. определяем, был ли он последним;
состояние q7 -- если он был последним, то останов, иначе переход на новый цикл выполнения алгоритма.
Задача 10
При решении этой задачи следует обратить внимание на правильное выписывание алфавита:
A = {a0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, Д, А, Н, Е, Т}.
Состояние q1 -- поиск правого конца числа;
состояние q2 -- анализ младшей цифры числа; если она равна “0” или “5”, т.е. число делится на 5, то переход в состояние q3, иначе переход в состояние q5;
состояние q3 -- запись буквы “Д” справа от слова на ленте;
состояние q4 -- запись буквы “А” справа от слова и останов машины;
состояние q5 -- запись буквы “Н” справа от слова;
состояние q6 -- запись буквы “Е” справа от слова;
состояние q7 -- запись буквы “Т” справа от слова и останов машины.
Свойства машины Тьюринга как алгоритма
Дискретность. Машина Тьюринга может перейти к (к + 1)-му шагу только после выполнения к-го шага, т.к. именно к-й шаг определяет, каким будет (к + 1)-й шаг.
Понятность. На каждом шаге в ячейку пишется символ из алфавита, автомат делает одно движение (Л, П, Н), и машина Тьюринга переходит в одно из описанных состояний.
Детерминированность. В каждой клетке таблицы машины Тьюринга записан лишь один вариант действия. На каждом шаге результат определен однозначно, следовательно, последовательность шагов решения задачи определена однозначно, т.е. если машине Тьюринга на вход подают одно и то же входное слово, то выходное слово каждый раз будет одним и тем же.
Результативность. Содержательно результаты каждого шага и всей последовательности шагов определены однозначно, следовательно, правильно написанная машина Тьюринга за конечное число шагов перейдет в состояние q0, т.е. за конечное число шагов будет получен ответ на вопрос задачи.
Массовость. Каждая машина Тьюринга определена над всеми допустимыми словами из алфавита, в этом и состоит свойство массовости. Каждая машина Тьюринга предназначена для решения одного класса задач, т.е. для каждой задачи пишется своя (новая) машина Тьюринга.
Пример машины Тьюринга
Приведём пример МТ для умножения чисел в унарной системе счисления. Машина работает по следующему набору правил:
Набор правил |
Набор правил |
|
q0*>q0*R |
q4a>q4aR |
|
q01>q01R |
q4=>q4=R |
|
q0?>q1?R |
q41>q41R |
|
q11>q2aR |
q4*>q51R |
|
q21>q21L |
q5*>q2*L |
|
q2a>q2aL |
q6a>q61R |
|
q2=>q2=L |
q6?>q7?R |
|
q2?>q3?L |
q7a>q7aR |
|
q31 > q4aR |
q71>q2aR |
|
q3a>q3aL |
q7=>q8=L |
|
q3*>q6*R |
q8a>q81L |
|
q4?>q4?R |
q8?>q9H |
Умножим с помощью МТ 3 на 2 в единичной системе:
В протоколе указаны начальное и конечное состояния МТ, начальная конфигурация на ленте и расположение головки машины (подчёркнутый символ).
Размещено на Allbest.ru
Подобные документы
Машина Тьюринга как абстрактный исполнитель, осуществляющий алгоритмический процесс. Внешний и внутренний алфавит. Главные функции, цели и возможности памяти и каретки. Описание работы машины. Общий вид решения, записанного с помощью конфигураций.
презентация [1,3 M], добавлен 01.02.2015Определение машины Тьюринга и особенности ее применения к словам, принципы конструирования. Правильная вычислимость функций на машине Тьюринга, ее композиция. Современные электронно-вычислительные машины, анализ и оценка их функциональных возможностей.
курсовая работа [258,7 K], добавлен 22.05.2015Как люди научились считать, возникновение цифр, чисел и систем счисления. Таблица умножения на "пальцах": методика умножения для чисел 9 и 8. Примеры быстрого счета. Способы умножения двузначного числа на 11, 111, 1111 и т.д. и трехзначного числа на 999.
курсовая работа [66,8 K], добавлен 22.10.2011Ознакомление с записью чисел в алфавитной системе счисления. Особенности установления числовых значений букв у славянских народов. Рассмотрение записи больших чисел в славянской системе счисления. Обозначение "тем", "легионов", "леордов" и "колод".
презентация [1,0 M], добавлен 30.09.2012Система счисления, применяемая в современной математике, используемые в ЭВМ. Запись чисел с помощью римских цифр. Перевод десятичных чисел в другие системы счисления. Перевод дробных и смешанных двоичных чисел. Арифметика в позиционных системах счисления.
реферат [75,2 K], добавлен 09.07.2009Основные понятия математического моделирования, характеристика этапов создания моделей задач планирования производства и транспортных задач; аналитический и программный подходы к их решению. Симплекс-метод решения задач линейного программирования.
курсовая работа [2,2 M], добавлен 11.12.2011Общая характеристика факультативных занятий по математике, основные формы и методы проведения. Составление календарно-тематического плана факультативного курса по теме: "Применение аппарата математического анализа при решении задач с параметрами".
курсовая работа [662,1 K], добавлен 27.09.2013Исследование истории систем счисления. Описание единичной и двоичной систем счисления, древнегреческой, славянской, римской и вавилонской поместной нумерации. Анализ двоичного кодирования в компьютере. Перевод чисел из одной системы счисления в другую.
контрольная работа [892,8 K], добавлен 04.11.2013- Основы вычислительной математики и использование системы Mathcad 14 для решения вычислительных задач
Методы, используемые при работе с матрицами, системами нелинейных и дифференциальных уравнений. Вычисление определенных интегралов. Нахождение экстремумов функции. Преобразования Фурье и Лапласа. Способы решения вычислительных задач с помощью Mathcad.
учебное пособие [1,6 M], добавлен 15.12.2013 Разработка простого метода для решения сложных задач вычислительной и прикладной математики. Построение гибкого сеточного аппарата для решения практических задач. Квазирешетки в прикладных задачах течения жидкости, а также применение полиномов Бернштейна.
дипломная работа [1,9 M], добавлен 25.06.2011