Определить конфигурацию, в которую переходит машина Тьюринга
Если правильно понимаю, что q показывает состояние машины на данном шаге, управляющая головка остается на месте ( H ), сдвинется на одну ячейку вправо ( R ) или влево ( L ). Тогда:
q10→0Rq2 переход через разделяющий 0 вправо
q11 → 1Hq2 переход на одну единицу и остановка на месте
q20 → 1Hq0 как только дошли до первого 0 после группы единиц, остановка
q21 →1Lq2 проходим через группу единиц влево
Есть пример таблицы (в изображении), как оно вроде должно выглядеть, правильно ли я вижу конфигурацию? Пожалуйста, помогите разобраться.
Машина Тьюринга: перевод конфигурации К1 в конфигурацию К0
0|a|b|c|a|b|c|a|a|a|0 »»»»»»»»»»»»»’^ »»»»»»»»»»»»»’| Для указанной.
Построить в алфавите <1,0>машину Тьюринга, переводящую конфигурацию К1 в конфигурацию К0
Есть само уравнение Есть код,, но его надо отредактировать, но я не понимаю в чем ошибки, если не.
Машина Тьюринга: определить, является ли P словом ab
6. A=. Определить, является ли P словом ab. Ответ (выходное слово): слово ab, если является.
Построить в алфавите 0 1 машину тьюринга переводящую конфигурацию к1 в конфигурацию к 0
Один из важнейших вопросов современной информатики — существует ли формальный исполнитель, с помощью которого можно имитировать любого формального исполнителя. ответ на этот вопрос был получен почти одновременно двумя выдающимися учеными — А. Тьюрингом и Э. Постом. Предложенные ими исполнители отличались друг от друга, но оказалось, что они могут имитировать друг друга, а главное — имитировать работу любого формального исполнителя.
Что такое формальный исполнитель? Что значит — один формальный исполнитель имитирует работу другого формального исполнителя? Если Вы играли в компьютерные игры — на экране объекты беспрекословно подчиняются командам играющего. Каждый объект обладает набором допустимых команд. В то же время компьютер сам является исполнителем, причем не виртуальным, а реальным. Вот и получается, что один формальный исполнитель имитирует работу другого формального исполнителя.
Рассмотрим работу Машины Тьюринга.
Машина Тьюринга представляет собой бесконечную ленту, поделенную на ячейки, и каретку (считывающе-печатающее устройство), которая движется вдоль ленты.
Таким образом Машина Тьюринга формально описывается набором двух алфавитов:
A=
Q=
Каждая ячейка ленты может содержать символ из внешнего алфавита A =
Допустимые действия Машины Тьюринга таковы:
1) записать какой-либо символ внешнего алфавита в ячейку ленты (символ, бывший там до того, затирается)
2) сместиться в соседнюю ячейку
3) сменить состояние на одно из обозначенных символом внутреннего алфавита Q
Машина Тьюринга — это автомат, который управляется таблицей.
Строки в таблице соответствуют символам выбранного алфавита A, а столбцы — состояниям автомата Q =
В каждой клетке таблицы, соответствующей некоторому символу ai и некоторому состоянию qj, находится команда, состоящая из трех частей
· символ из алфавита A
· направление перемещения: «>» (вправо), «
Эмулятор машины Тьюринга
Как пользоваться эмулятором
Что такое машина Тьюринга?
Машина Тьюринга — абстрактная вычислительная машина, предложенная Аланом Тьюрингом для формализации понятия алгоритма. Устройство МТ состоит из следующий частей:
Бесконечная лента
Обычно на ленту в начале работы помещают входное слово. В процессе работы машины Тьюринга содержимое ленты модифицируется устройством управления и в результате на ленте остаётся выходное слово.
Считывающая/записывающая головка
В каждой машине Тьюринга есть специальная головка, указывающая на одну определённую ячейку на ленте. Данное устройство позволяет считывать символ с ячейки, над которой находится, или записывать символ в эту ячейку. Также головка может перемещаться влево и вправо на одну ячейку, или оставаться на месте.
Устройство управления
Допускаются краткие записи для правил:
Примеры машин Тьюринга
Пример 1 (загрузить в эмулятор). К двоичному числу прибавить 1. В начальный и конечный момент головка должна находиться на самом старшем бите слова (слева).
Так как изначально по условию головка МТ находится на самом старшем бите, а увеличивать надо младший, необходимо сначала переместить головку на младший бит, что выполняется в состоянии q0: как только лента увидит символ λ, она сдвинется влево (на младший бит) и перейдёт в состояние икремента (q1).
В состоянии q1 возможны следующие ситуации:
Состояние q2 нужно лишь для выполнения условия остановки головки на старшем бите. Оно полностью аналогично начальному состоянию, только движение происходит в левюу сторону и при достижении пустого символа головка сдвигается вправо и выполняется останов.
Пример 2 (загрузить в эмулятор). В слове из алфавита инвертировать символы. В начальный момент головка находится в начале слова.
Q \ A | a | b | λ |
---|---|---|---|
q0 | b R q0 | a R q0 | ! |
Programforyou — это сообщество, в котором Вы можете подтянуть свои знания по программированию, узнать, как эффективно решать те или иные задачи, а также воспользоваться нашими онлайн сервисами.
Определить конфигурацию, в которую переходит машина Тьюринга
Здравствуйте, если есть возможность-помогите пожалуйста, я с МТ совершенно не дружу, сколько ни пытаюсь это понять.
*q(n), n-это цифра, что должна быть записана в нижнем индексе (я не разобрался как это написать в инструментарии форума)
«Дана машина Тьюринга с алфавитом A= <0,1>и программой
q(1)1->1Lq(1), q(1)0->1Lq(2), q(2)0->0Rq(0), q(2)1->1Rq(2)
Определить конфигурацию, в которую переходит машина Тьюринга после выполнения не более чем 5 команд, если начальная конфигурация была:
01q(1)11110110 «
Определить конфигурацию, в которую переходит машина Тьюринга
Дана машина Тьюринга с алфавитом A= <0,1>и программой q10→0Rq2, q11 → 1Hq2, q20 → 1Hq0, q21 →1Lq2.
Машина Тьюринга: перевод конфигурации К1 в конфигурацию К0
0|a|b|c|a|b|c|a|a|a|0 »»»»»»»»»»»»»’^ »»»»»»»»»»»»»’| Для указанной.
Машина Тьюринга. По заданной машине Тьюринга и начальной конфигурации К1 найти заключительную конфигурацию.
здравствуйте! тут надо решить два задания. очень надеюсь на вашу помощь! 1.Выяснить применима ли.
Машина Тьюринга: перевод конфигурации К_0 в конфигурацию К*
Здравствуйте, помогите мне,пожайлуста, разобраться с одной задачей Построить в алгоритме <0,1>.
Построить в алфавите <1,0>машину Тьюринга, переводящую конфигурацию К1 в конфигурацию К0
Есть само уравнение Есть код,, но его надо отредактировать, но я не понимаю в чем ошибки, если не.
Реализация алгоритма в машине Тьюринга
На ряде примеров покажем, как строятся тьюринго-вы машины, реализующие некоторые простые арифметические алгоритмы.
Пример 1.Реализация в машине Тьюринга алгоритма перехода от n к n+1 в десятичной системе счисления.
Пусть дана десятичная запись натурального числа п и требуется указать десятичную запись числаn+1, т.е. вычислить функциюf(n) = п + 1.
Ясно, что здесь внешний алфавит машины должен содержать все цифры О, 1, 2, 3, 4, 5, 6, 7, 8, 9 исимвол пустой клеткиaQ. Числоп будем записывать в десятичной системе на ленте, причем цифры будут помещаться по одной в каждой клетке подряд без пропусков.
Чтобы решить поставленную задачу, машина должна в первом такте работы стереть последнюю цифру числа л, заменить ее цифрой на единицу большей и перейти в стоп-состояние, если последняя цифра была меньше цифры 9.
Бели же последняя цифра числа n была 9, то машина должна, стерев цифру 9, записать в освободившуюся клетку цифру 0 и произвести сдвиг влево к соседнему более высокому разряду, оставаясь в том же начальном состоянии. Здесь во втором такте работы машина должна прибавить единицу к цифре более высокого разряда.
Очевидно, что в случае сдвига влево, управлявшая головка машины может выйти на пустую клетку в случае, когда цифры более высокого разряда нет. При этом машина вписывает в пустую клетку цифру 1.
Из сказанного следует, что при реализации алгоритма вычисления функцииf(n) = n + 1машина может пребывать лишь в двух состоянияхql иq0.
Таким образом, машина Тьюринга, реализующая алгоритм перехода от n кn+1 в десятичной системе счисления будет иметь вид:
a0 | |||||||||||
q1 | 1 q0 | 1 q0 | 2 q0 | 3 q0 | 4 q0 | 5 q0 | 6 q0 | 7 q0 | 8 q0 | 9 q0 | 0 q1 |
На рис. 4 и 5 выписаны соответствующие конфигурации для n = 183 и n = 399:
a0 399 a0 q1 | |
a0 183 a0 q0 | a0 390 a0 q1 |
a0 184 a0 q1 | a0 300 a0 q1 |
a0 400 a0 q0 |
Пример 2. Алгоритм сложения натуральных чисел» Пусть на ленту подается два числа, заданных наборами палочек; например, 2 и 3. Нужно сложить эти числа.
Будем обозначать символ сложения звездочкой. Таким образом, на ленте машины будет записано слово
А0 (1) Требуется предложить функциональную схему, которая, будучи примененной, к слову (1), давала бы в результате сумму чисел 2 и 3, то есть слово а0
А0 (2) Опишем процесс работы машины для решения задачи. Пусть в начальный момент обозревается самая левая палочка. Ее нужно сдвинуть вправо, минуя все палочки и звездочку до тех пор, пока не будет достигнута первая пустая клетка. В эту пустую клетку вписывается первая палочка. Затем нужно вернуться за второй палочкой и ее перенести вправо так же, как это делалось с первой палочкой. После этой процедуры нужно вернуться к звездочке, стереть ее и остановиться. Изобразим все такты работы машины в виде соответствующих конфигураций: 1. a0 ||*
Машина тьюринга сложение двух чисел
»Я не знаю, кто я — Тьюринг, которому снится, что он машина,
или машина, которой снится, что она Тьюринг!».
Дао Программирования
Для более близкого знакомства с машиной Тьюринга, рекомендую её имитатор Algo2000 Зартидова Радика. На мой взгляд — это лучшая реализация имитатора машины Тьюринга.
Машина тьюринга сложение двух чисел
6.
Составьте программы для машины Тьюринга, которые выполняют
сложение и вычитание двух чисел в десятичной системе счисления.
ответ
Если при стирании ведущего нуля автомат «попадает» на минус — можно остановить. На ленте останется результат вычетания большего числа из меньшего (отрицательный результат).
Т.е. в ячейке в ряду «-» и колонке «О5» изменить команду: оставить «-«, остаться на месте, останов.
Условие — машина Тьюринга
Число представлено в двоичном формате в различных конечных автоматах, например, 5 представлено как (101), но в случае добавления с использованием машины Тьюринга используется унарный формат. В унарном формате число представлено либо всеми единицами, либо всеми нулями. Например, 5 будет представлен последовательностью из пяти нулей или пяти единиц. 5 = 1 1 1 1 1 или 0 0 0 0 0. Позволяет использовать нули для представления.
Для добавления 2 чисел с использованием машины Тьюринга оба эти числа приводятся в качестве входных данных для машины Тьюринга, разделенных «с».
Примеры — (2 + 3) будут заданы как 0 0 c 0 0 0:
Подход используется —
Преобразуйте 0 в первом числе в X, а затем пройдитесь по всему вводу и преобразуйте первый пробел в 0. Затем двигайтесь влево, игнорируя все 0 и «c». Пройдите позицию рядом с X, а затем повторяйте ту же процедуру до тех пор, пока мы не получим «c» вместо X при возврате. Преобразовать c в пустую и сложение завершено.
Шаг 1: конвертируйте 0 в X и переходите к шагу 2. Если символ «с», то конвертируйте его в пробел (B), двигайтесь вправо и переходите к шагу 6.
Шаг 2: Продолжайте игнорировать 0 и двигайтесь вправо. Не обращайте внимания на «c», двигайтесь вправо и переходите к шагу 3.
Шаг 3: продолжайте игнорировать 0 и двигайтесь вправо. Преобразуйте пробел (B) в 0, переместитесь влево и перейдите к шагу 4.
Шаг 4: продолжайте игнорировать 0 и двигайтесь влево. Не обращайте внимания на «c», двигайтесь влево и переходите к шагу 3.
Шаг 5: продолжайте игнорировать 0 и двигайтесь влево. Не обращайте внимания на X, двигайтесь влево и переходите к шагу 1.
Главная > Документ
Информация о документе |
Дата добавления: |
Размер: |
Доступные форматы для скачивания: |
Машина Тьюринга – математическая модель процессов преобразования информации, с ее помощью можно реализовать любой алгоритм.
Эту модель можно представить как устройство, состоящее из следующих частей:
бесконечной или полу бесконечной ленты, разделенной на ячейки,
читающе — записывающей головки,
управляющего устройства, которое за один такт работы машины а) считывает из ячейки символ, б) записывает в него новый (может быть тот же) символ, в) перемещается влево, вправо или остается на месте, г) изменяет состояние.
При составлении алгоритмов на машине Тьюринга обычно используют следующие приемы: 1) машина запоминает тот или иной символ, переходя в различные состояния, 2) отметка просмотренного символа делается с помощью символов внешнего (дополнительного) алфавита.
Будем считать, что рассматриваемые выражения и строки отделяются на ленте слева и справа пробелами и лента бесконечная в оба конца.
Алгоритмы удобно записывать в виде таблицы, где заголовками столбцов являются символы допустимого алфавита, а заголовками строк – состояния машины. В ячейках стоят конфигурации машины, соответствующие определенным символам и состояниям.
Машина Тьюринга: описание и примеры машин Тьюринга
Машина Тьюринга — одно из самых интригующих и захватывающих интеллектуальных открытий 20-го века. Это простая и полезная абстрактная модель вычислений (компьютерных и цифровых), которая является достаточно общей для воплощения любой компьютерной задачи. Благодаря простому описанию и проведению математического анализа она образует фундамент теоретической информатики. Это исследование привело к более глубокому познанию цифровых компьютеров и исчислений, включая понимание того, что существуют некоторые вычислительные проблемы, не решаемые на общих пользовательских ЭВМ.
Что это и кто создал
Алан Тьюринг стремился описать наиболее примитивную модель механического устройства, которая имела бы те же основные возможности, что и компьютер. Тьюринг впервые описал машину в 1936 году в статье «О вычислимых числах с приложением к проблеме разрешимости», которая появилась в Трудах Лондонского математического общества.
Машина Тьюринга является вычислительным устройством, состоящим из головки чтения/записи (или «сканера») с бумажной лентой, проходящей через него. Лента разделена на квадраты, каждый из которых несет одиночный символ — «0» или «1». Назначение механизма состоит в том, что он выступает и как средство для входа и выхода, и как рабочая память для хранения результатов промежуточных этапов вычислений.
Из чего состоит устройство
Каждая такая машина состоит из двух составляющих:
Как работает механизм
Машина Тьюринга имеет принципиальное отличие от вычислительных устройств – ее запоминающее приспособление имеет бесконечную ленту, тогда как у цифровых аппаратов такое устройство имеет полосу определенной длины. Каждый класс заданий решает только одна построенная машина Тьюринга. Задачи иного вида предполагают написание нового алгоритма.
Управляющее устройство, находясь в одном состоянии, может передвигаться в любую сторону по ленте. Оно записывает в ячейки и считывает с них символы конечного алфавита. В процессе перемещения выделяется пустой элемент, который заполняет позиции, не содержащие входные данные. Алгоритм для машины Тьюринга определяет правила перехода для управляющего устройства. Они задают головке записи-чтения такие параметры: запись в ячейку нового символа, переход в новое состояние, перемещение влево или вправо по ленте.
Свойства механизма
Машина Тьюринга, как и другие вычислительные системы, имеет присущие ей особенности, и они сходны со свойствами алгоритмов:
Функции машины Тьюринга
Программа для устройства
Программы для механизма Тьюринга оформляются таблицами, в которых первые строка и столбец содержат символы внешнего алфавита и значения возможных внутренних состояний автомата — внутренний алфавит. Табличные данные являются командами, которые воспринимает машина Тьюринга. Решение задач происходит таким образом: буква, считываемая головкой в ячейке, над которой она в данный момент находится, и внутреннее состояние головки автомата обусловливают, какую из команд необходимо выполнять. Конкретно такая команда находится на пересечении символов внешнего алфавита и внутреннего, находящихся в таблице.
Составляющие для вычислений
Чтобы построить машину Тьюринга для решения одной определенной задачи, необходимо определить для нее следующие параметры.
Непрерывная цепочка букв-символов, записываемая на ленту, именуется словом.
Таблица переходов. Эта составляющая представляет собой алгоритм поведения каретки устройства в зависимости от того, каковы в данный момент состояние автомата и значение считываемого символа.
Алгоритм для автомата
Кареткой устройства Тьюринга во время работы управляет программа, которая во время каждого шага выполняет последовательность следующих действий:
Таким образом, при написании программ для каждой пары символов либо положений необходимо точно описать три параметра: ai – элемент из выбранного алфавита A, направление сдвига каретки («←” влево, «→” вправо, «точка” — отсутствие перемещения) и qk — новое состояние устройства. К примеру, команда 1 «←” q2 имеет значение «заместить символ на 1, сдвинуть головку каретки влево на один шаг-ячейку и сделать переход в состояние q2”.
Машина Тьюринга: примеры
Пример 1. Дана задача построить алгоритм, прибавляющий единицу к последней цифре заданного числа, расположенного на ленте. Входные данные – слово – цифры целого десятичного числа, записанные в последовательные ячейки на ленту. В первоначальный момент устройство располагается напротив самого правого символа – цифры числа.
Решение. В случае если последняя цифра равняется 9, то ее нужно заменить на 0 и затем прибавить единицу к предшествующему символу. Программа в этом случае для данного устройства Тьюринга может быть написана так:
a0 | 0 | 1 | 2 | 3 | . | 7 | 8 | 9 | |
q1 | 1 H q0 | 1 H q0 | 2 H q0 | 3 H q0 | 4 H q0 | . | 8 H q0 | 9 H q0 | 0 λ q1 |
Здесь q1 — состояние изменения цифры, q0 — остановка. Если в q1 автомат фиксирует элемент из ряда 0..8, то он замещает ее на один из 1..9 соответственно и затем переключается в состояние q0, то есть устройство останавливается. В случае если же каретка фиксирует число 9, то замещает ее на 0, затем перемещается влево, останавливаясь в состоянии q1. Такое движение продолжается до того момента, пока устройство не зафиксирует цифру, меньшую 9. Если все символы оказались равными 9, они замещаются нулями, на месте старшего элемента запишется 0, каретка переместится влево и запишет 1 в пустую клетку. Следующим шагом будет переход в состояние q0 – остановка.
a0 | ( | ) | |
q1 | a0 H q0 | ( П q2 | ) П q1 |
q2 | a0 H q0 | ( П q2 | ) λ q3 |
q3 | a0 H q0 | a0 П q3 | a0 П q1 |
Состояние q1: если встречен символ “(”, то совершить сдвиг вправо и переход в положение q2; если определен “a0”, то остановка.
Состояние q2: проводится анализ скобки “(” на наличие парности, в случае совпадения должно получиться “)”. Если элемент парный, то сделать возврат каретки влево и перейти в q3.
Состояние q3: осуществить удаление сначала символа “(”, а затем “)” и перейти в q1.
Элементарная Машина Тьюринга
Введение
Машина Тьюринга (МТ) — абстрактный исполнитель (абстрактная вычислительная машина). Была предложена Аланом Тьюрингом в 1936 году для формализации понятия алгоритма.
Машина Тьюринга является расширением конечного автомата и, согласно тезису Чёрча — Тьюринга, способна имитировать все другие исполнители (с помощью задания правил перехода), каким-либо образом реализующие процесс пошагового вычисления, в котором каждый шаг вычисления достаточно элементарен.
В состав машины Тьюринга входит бесконечная в обе стороны лента (возможны машины Тьюринга, которые имеют несколько бесконечных лент), разделённая на ячейки, и управляющее устройство, способное находиться в одном из множества состояний. Число возможных состояний управляющего устройства конечно и точно задано.
Управляющее устройство может перемещаться влево и вправо по ленте, читать и записывать в ячейки ленты символы некоторого конечного алфавита. Выделяется особый пустой символ, заполняющий все клетки ленты, кроме тех из них (конечного числа), на которых записаны входные данные.
Управляющее устройство работает согласно правилам перехода, которые представляют алгоритм, реализуемый данной машиной Тьюринга. Каждое правило перехода предписывает машине, в зависимости от текущего состояния и наблюдаемого в текущей клетке символа, записать в эту клетку новый символ, перейти в новое состояние и переместиться на одну клетку влево или вправо. Некоторые состояния машины Тьюринга могут быть помечены как терминальные, и переход в любое из них означает конец работы, остановку алгоритма.[1]
Описание формальной модели алгоритма на основе рекурсивных функций
Определение понятия примитивно рекурсивной функции является индуктивным. Оно состоит из указания класса базовых примитивно рекурсивных функций и двух операторов (подстановки и примитивной рекурсии), позволяющих строить новые примитивно рекурсивные функции на основе уже имеющихся.
К базовым примитивно рекурсивным фунциям относят:
Задание: доказать примитивную рекурсивность функции «ближайшее к n простое число».
Протестируем приведённую выше схему вычисления ближайшего к простого числа на конкретных примерах.
В качестве параметра возьмём простое число 5.
Рисунок 1.1 — Тест алгоритма на числе 5
В качестве параметра возьмём 15:
Рисунок 1.2 — Тест алгоритма на числе 15
Аналитическая модель Машины Тьюринга
Элементарная Машина Тьюринга
Задание: реализовать Машину Тьюринга для вычисления функции получения остатка от деления двух чисел в унарном коде с сохранением данных. Описать полученную машину тремя способами: правилами переходов, таблицей состояний и графом состояний.
Во входных данных находятся делимое и делитель в унарном коде, разделённые символом «*». В выходных данных к входным должна добавиться конструкция «= », где — результат вычислений в унарном коде.
Пример входных данных: 11111111*111
Пример выходных данных: 11111111*111=11
Ниже приведено описание элементарной машины Тьюринга тремя способами: списком правил переходов, таблицей состояний и графом:
> Рисунок 2.1 — Правила переходов для Машины Тьюринга |
2.1.6 Описание Машины Тьюринга таблицей состояний
Таблица 2.1 — Таблица состояний Машины Тьюринга
qa | * | λ | _ | = | # |
q0 | |||||
q1 |
Продолжение таблицы 2.1
qa | * | λ | _ | = | # |
q2 | |||||
q3 | |||||
q4 | |||||
q5 | |||||
q6 | |||||
q7 | |||||
q8 | |||||
q9 | |||||
q10 | |||||
q11 |
Рисунок с графом переходов.
Рисунок 2.2 — Граф переходов
На рисунке 2.3 приведено тестирование работы Машины Тьюринга для входных данных 11111*11.
Трассировка алгоритма на каком-то контрольном значении Рисунок 2.3 — Тестирование Машины Тьюринга |
2.2 Композиция Машин Тьюринга
Построить композицию Машин Тьюринга для вычисления ближайшего к s простого числа в унарном коде без сохранения исходных данных.
Пример входных данных: 111111
Пример выходных данных: 11111
Ниже привдена блок-схема алгоритма, реализующего вычисление заданного алгоритма:
Рисунок 2.4 — Блок схема алгоритма поиска ближайшего к s простого числа
В композиции будут участвовать следующие Машины Тьюринга:
— – машина копирования;
— – машина проверки на простоту;
— – машина выбора m-го элемента из n;
— — машина увеличения на единицу;
СХЕМА КОМПОЗИЦИИ ИЗ 3 ЛАБЫ Рисунок 2.5 — Композиция Машин Тьюринга |
— машина уменьшения на единицу.
Теперь распишем машину , которая используется для проверки числа на простоту.
В композиции будут участвовать машины:
— – машина копирования;
— – машина выбора m-го элемента из n;
— — машина логическое и;
— — машина сравненения;
— — машина установки двойки;
— — машина проверки на равенство двойке;
— — машина проверки на равенство нулю;
— — машина вычисления остатка от деления;
— — машина увеличения на единицу;
— — машина уменьшения на единицу;
— — машина сложения.
СХЕМА КОМПОЗИЦИИ ИЗ 3 ЛАБЫ
Рисунок 2.6 — Композиция машины проверки на простоту