Эмулятор машины Тьюринга
Как пользоваться эмулятором
Что такое машина Тьюринга?
Машина Тьюринга — абстрактная вычислительная машина, предложенная Аланом Тьюрингом для формализации понятия алгоритма. Устройство МТ состоит из следующий частей:
Бесконечная лента
Обычно на ленту в начале работы помещают входное слово. В процессе работы машины Тьюринга содержимое ленты модифицируется устройством управления и в результате на ленте остаётся выходное слово.
Считывающая/записывающая головка
В каждой машине Тьюринга есть специальная головка, указывающая на одну определённую ячейку на ленте. Данное устройство позволяет считывать символ с ячейки, над которой находится, или записывать символ в эту ячейку. Также головка может перемещаться влево и вправо на одну ячейку, или оставаться на месте.
Устройство управления
Допускаются краткие записи для правил:
Примеры машин Тьюринга
Пример 1 (загрузить в эмулятор). К двоичному числу прибавить 1. В начальный и конечный момент головка должна находиться на самом старшем бите слова (слева).
Так как изначально по условию головка МТ находится на самом старшем бите, а увеличивать надо младший, необходимо сначала переместить головку на младший бит, что выполняется в состоянии q0: как только лента увидит символ λ, она сдвинется влево (на младший бит) и перейдёт в состояние икремента (q1).
В состоянии q1 возможны следующие ситуации:
Состояние q2 нужно лишь для выполнения условия остановки головки на старшем бите. Оно полностью аналогично начальному состоянию, только движение происходит в левюу сторону и при достижении пустого символа головка сдвигается вправо и выполняется останов.
Пример 2 (загрузить в эмулятор). В слове из алфавита инвертировать символы. В начальный момент головка находится в начале слова.
Q \ A | a | b | λ |
---|---|---|---|
q0 | b R q0 | a R q0 | ! |
Programforyou — это сообщество, в котором Вы можете подтянуть свои знания по программированию, узнать, как эффективно решать те или иные задачи, а также воспользоваться нашими онлайн сервисами.
Построить машину тьюринга которая прибавляет единицу к числу на ленте
Один из важнейших вопросов современной информатики — существует ли формальный исполнитель, с помощью которого можно имитировать любого формального исполнителя. ответ на этот вопрос был получен почти одновременно двумя выдающимися учеными — А. Тьюрингом и Э. Постом. Предложенные ими исполнители отличались друг от друга, но оказалось, что они могут имитировать друг друга, а главное — имитировать работу любого формального исполнителя.
Что такое формальный исполнитель? Что значит — один формальный исполнитель имитирует работу другого формального исполнителя? Если Вы играли в компьютерные игры — на экране объекты беспрекословно подчиняются командам играющего. Каждый объект обладает набором допустимых команд. В то же время компьютер сам является исполнителем, причем не виртуальным, а реальным. Вот и получается, что один формальный исполнитель имитирует работу другого формального исполнителя.
Рассмотрим работу Машины Тьюринга.
Машина Тьюринга представляет собой бесконечную ленту, поделенную на ячейки, и каретку (считывающе-печатающее устройство), которая движется вдоль ленты.
Таким образом Машина Тьюринга формально описывается набором двух алфавитов:
A=
Q=
Каждая ячейка ленты может содержать символ из внешнего алфавита A =
Допустимые действия Машины Тьюринга таковы:
1) записать какой-либо символ внешнего алфавита в ячейку ленты (символ, бывший там до того, затирается)
2) сместиться в соседнюю ячейку
3) сменить состояние на одно из обозначенных символом внутреннего алфавита Q
Машина Тьюринга — это автомат, который управляется таблицей.
Строки в таблице соответствуют символам выбранного алфавита A, а столбцы — состояниям автомата Q =
В каждой клетке таблицы, соответствующей некоторому символу ai и некоторому состоянию qj, находится команда, состоящая из трех частей
· символ из алфавита A
· направление перемещения: «>» (вправо), «
Разработать машину Тьюринга, которая увеличивала бы заданное число n на 1
Описать машину Тьюринга, которая увеличивала бы заданное число n на 1
1. Дано число n в восьмеричной системе счисления. Описать машину Тьюринга, которая увеличивала бы.
Разработать машину тьюринга, которая уменьшала бы заданное число n на 2
Дано число в 8 ричной системе счисления. Разработать машину тьюринга, которая умеьшала бы заданное.
Разработайте машину Тьюринга, которая уменьшала бы заданное число на 2
Дано число n в семеричной системе счисления. Разработайте машину Тьюринга, которая уменьшала бы.
Разработать машину Тьюринга, которая будет находить сумму чисел в троичной системе счисления.
Даны два целых положительных числа в троичной системе. Разработать машину Тьюринга, которая будет.
Разработать машину Тьюринга, которая будет находить сумму чисел в десятичной системе счисления
Привет всем, возникла проблема с решением данной задачи: 1. Построить машину Тьюринга согласно.
Создать машину Тьюринга, которая будет увеличивать на 1 восьмеричное число
Помогите создать машину тьюринга, которая будет увеличивать на 1 число заданое в восьмеричной.
Построить машину Тьюринга, которая умножает любое число машинного кода на 2
Помогите пожалуйста)Построить машину Тьюринга, которая умножает любое число машинного кода на 2.
Построить машину Тьюринга, которая записывала бы в десятичной системе счисления число этих единиц
Дана конечная совокупность единиц, вписанных в ячейки без пропусков. Построить машину Тьюринга.
Построить машину Тьюринга, которая записывала бы в десятичной системе счисления число этих единиц
Построить машину Тьюринга, которая увеличивает число, записанное в десятичной системе счисления, в 4 раза
Каким способом можно это записать? Помогите плес: Построить машину Тьюринга, которая.
Создать машину Тьюринга, которая прибавляет 1 к числу в восьмеричной системе счисления
Здравствуйте, помогите создать МТ которая прибавляет 1 к числу в восьмеричной сс. Например на.
Построить машину Тьюринга, которая умножает любое число машинного кода на 2
Помогите пожалуйста)Построить машину Тьюринга, которая умножает любое число машинного кода на 2.
Дано целое число X в десятичной системе счисления. Выведите запись числа X в восьмеричной системе счисления
Почему настоящие программисты путают католическое Рождестово и Halloween? Потому что 25 DEC = 31.
Можно показать реализацию 1 и 3 шага
q1 1 >q2 0 R
q2 1 > q2 1 R
q2 l > q3 * R
q3 > q4 1 L
q3 >.
Решение
Имелся ввиду шаг, на котором к десятичному числу прибавляется 1, при этом головка в начальном положении смотрит на старший разряд.
Добавлено через 29 минут
Далее надо написать программу прибавления единицы к десятичному числу, старший разряд Х которого встретился нам в состоянии q4. После этого прибавления головка должна в состоянии q3 смотреть на первый ноль слева от десятичного числа (такой 0 всегда будет).
Применение машин Тьюринга к словам (стр. 4 )
Из за большого объема этот материал размещен на нескольких страницах: 1 2 3 4 |
5) f(x, y)-? В начальной конфигурации обозревается крайняя правая единица ленты
КОНСТРУИРОВАНИЕ МАШИН ТЬЮРИНГА
5.13. Известно, что на ленте записано слово ; n ³ 1. Постройте машину Тьюринга с внешним алфавитом А = <а0, 1>, которая отыскивала бы левую единицу этого слова (т. е. приходила бы в состояние, при котором обозревалась бы ячейка с самой левой единицей данного слова, и в этом положении останавливалась), если в начальный момент головка машины обозревает одну из ячеек с буквой данного слова.
5.14. Сконструируйте машину Тьюринга с внешним алфавитом А = <а0, 1>, которая каждое слово в алфавите А1 = <1>перерабатывает в пустое слово, исходя из стандартного начального положения.
Указание. В алфавит внутренних состояний включите четыре буквы Q=
5.15. Сконструируйте машину Тьюринга с внешним алфавитом А = <а0, 1>, которая каждое слово длиной п в алфавите A1 = <1>перерабатывает в слово длиной п + 1 в том же алфавите А1.
Указание. Используйте алфавит внутренних состояний из двух букв. См. задачу 5.1.
5.16. На ленте машины Тьюринга записаны два набора единиц 1. Они разделены звездочкой *. Составьте функциональную схему машины так, чтобы она выбрала больший из этих наборов, а меньший стерла, исходя из стандартного начального положения (см. задачу 5.2). Звездочка должна быть сохранена, чтобы было видно, какой из массивов выбран.
Указание. Машина может работать, например, следующим образом. Заменить крайнюю правую единицу на a и из состояния q1 перейти в состояние q2, в котором она должна, ничего не меняя, прошагать к крайней левой единице. Здесь, перейдя в состояние q3, заменить крайнюю левую единицу на букву a. Далее, перейдя в состояние q4, прошагать к крайней правой единице, ничего не меняя. Здесь снова заменить единицу на букву a и вернуться к крайней левой единице и т. д. Дальше программа имеет разветвление. Если, начиная двигаться с правого конца, машина в состоянии q1, сделав шаг влево, обозревает ячейку с буквой *, то это означает, что единицы правого массива иссякли. Следовательно, левый массив больше. Тогда машина, перейдя в состояние q5. проходит ячейку с буквой * и во всех последующих ячейках слева проставляет единицы. Затем в состоянии q6 она возвращается к ячейке со *, минует ее и следует дальше вправо, стирая содержимое ячеек (там записаны буквы a). Дойдя до первой пустой ячейки, машина останавливается. Если же, начиная двигаться с левого конца, машина в состоящий q3 сделав шаг вправо, обозревает ячейку с буквой *, то это означает, что иссякли единицы левого массива. Следовательно, большим оказывается правый массив. Привлекая новые состояния q7 и q8, строим программу аналогично предыдущему ответвлению.
5.17. Постройте машину Тьюринга, которая бы к натуральному числу в десятичной системе счисления прибавляла единицу.
Р е ш е н и е. В качестве внешнего алфавита естественно выбрать алфавит, содержащий наименования всех цифр десятичной системы счисления. Конечно же, необходим и пустой символ а0. Итак, А =< а0, 1 2, 3, 4, 5, 6, 7, 8, 9, 0>. Состояний у машины будет два: q0 (это, как обычно, остановка) и q1 (рабочее состояние). Итак, Q =