Составьте программу для машины тьюринга которая увеличивает двоичное число на 1

Решение: внешний алфавит машины будет следующим: , 0, 1>.

Будем считать начальной следующую конфигурацию: q11…p. Для того, чтобы прибавить 1 к двоичному числу n сначала необходимо «отогнать» головку машины вправо и установить ее под последней (самой младшей) цифрой двоичного числа. Если последняя цифра числа есть 0, то достаточно заменить 0 на 1 и завершить процесс, то есть перевести головку (машину) в заключительное состояние q0.

Если же последняя цифра числа есть 1, то необходимо заменить ее на 0, а головку сдвинуть влево, чтобы «увидеть» следующий разряд двоичного числа. Если окажется, что этот разряд содержит 0, то заменить 0 на 1 и опять-таки перевести головку (машину) в заключительное состояние q0. Если же этот разряд содержит 1, необходимо заменить ее на 0 и опять сдвинуть головку влево. И так далее, до тех пор, пока либо не встретится разряд, содержащий 0, либо головка дойдет до первого слева пустого символа . В любом из этих случаев 0 или  следует заменить на 1 и перевести головку (машину) в заключительное состояние q0.

Как запрограммировать на машине Тьюринга сложение? Душкин объяснит

Программа машины, прибавляющей 1 к двоичному числу, имеет вид:

q11 q11R

q10 q10R

q1 q2L

q20 q31H

q21 q20L

q2 q01H

q31 q31L

q30 q30L

q3 q0R.

2. Пусть требуется перевести запись натурального числа n, изображенного в виде последовательности n «палочек» (|) n  1, в двоичную запись в алфавите . Т.е. конфигурация q1|||…| должна быть преобразована в q012…p , где 12…p — двоичная запись n.

Решение: в качестве внешнего алфавита машины берем алфавит:, |, 0,1>.

Опишем алгоритм решения задачи в словесной форме:

Источник: studfile.net

Читайте также:
Как в программе справки бк напечатать один лист

Универсальная Машина Тьюринга

Для решения данной задачи нам необходимо определить множество всех значений алфавита, так как речь идет о двоичной системе счисления, то в поле “ алфавит ” запишем числа 0 и 1. Программа автоматически добавит в столбец слева от таблицы «программа» введенные числа и знак пустой ячейки — ]. В задаче не сказано, к какому именно числу необходимо добавить единицу, а значит, берем произвольное двоичное число и записываем его в поле «слово».

Машина тьюринга примеры

Далее самое интересное – кодирование. Из условия задачи для пункта «а» сказано, что каретка находится слева от слова, это значит что само слово нужно еще и найти. Сам автомат (каретка) кроме текущей ячейки ничего не видет, он может только прочитать ее содержимое и на основании значения, которое он считывает, безусловно выполняет поручения. А видит он пустую ячейку. Даем команду двигать в право до тех пор, пока он не увидит начало слова — команда ]RQ1. С точки зрения автомата:

если ячейка пуста

  1. нахожусь в состоянии Q1
  2. считываю значения текущей ячейки
  3. если она пуста то записываю в нее пустоту (звучит странно но так оно и есть, хотя я всеже добавил здравый смысл в свой эмулятор и он просто пропускает такой шаг)
  4. двигаю каретку вправо на один шаг
  5. перехожу (даже если я и находился там) в состояние Q1

если ячейка содержит значения 0 или 1 выполняем команды 0RQ2 и 1RQ2

Машина Тьюринга. Введение. Понятие машины тьюринга. Решение задачи

C точки зрения автомата:

  1. нахожусь в состоянии Q1
  2. считываю значения текущей ячейки
  3. если это 0 или 1 то продолжаю двигаться вправо и перехожу в состояние Q2

Автомат переходит в состояние Q2 (второй столбец), так как функция состояния Q1 — найти число находящегося на ленте, выполнена. Число на ленте найдено. Каретка теперь находится над числом и теперь необходимо найти его конец, для продолжения выполнения программы. Для этого продолжаем двигать каретку вправо, до тех пор, пока не наткнемся на пустую ячейку (означает конец числа на ленте) — команда ]LQ3, при выполнении которой автомат переходит в сотояние Q3.

Читайте также:
Как написать программу для заполнения бланков
Q1 Q2 Q3
0RQ2 0RQ2 1HQ0
1 1RQ2 1RQ2 0LQ3
] ]RQ1 ]LQ3 1HQ0

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

Задача 2.

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

Решение:

С точки зрения автомата:

  1. нахожусь в состоянии — Q1
  2. если это цифра, то двигаю каретку на шаг вправо и перехожу в состояние — Q1
  3. если это пустая ячейка, то двигаю каретку на шаг влево и перехожу в состояние — Q2
  4. если эта цифра 0,2,4,6,8 — двигаю каретку на шаг вправо и перехожу в состояние — Q3
  5. в состоянии Q3 стою на месте, записываю букву Y и останавливаю программу — Q0
  6. если эта цифра 1,3,5,7,9 — двигаю каретку на шаг вправо и перехожу в состояние — Q4
  7. в состоянии Q4 стою на месте, записываю букву N и останавливаю программу — Q0

От автора:

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

Источник: goto7.ru

Рассмотрим пример решения одной задачи

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

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

Читайте также:
Какие разделы программы по формированию математических представлений

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

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:

Студопедия рекомендует:

Понятие «неблагополучная семья», ее основные характеристики. Типология неблагополучных семей Многочисленные отечественные и зарубежные исследования показывают.
Лечебно-охранительный режим отделения В основе общепринятого режима лечебно-профилактического учреждения и его лечебных отделений лежат мероприятия.
Вопрос 2. Источники конституционного права Под источником права понимается форма, в которой существуют, выражаются правовые нормы.
Молярная концентрация эквивалента I. Эквивалент – это условная или реальная частица, которая в данной химической реакции эквивалентна одному атому или иону.
Важнейшие правовые и законодательные акты мирового и регионального значения. Акты международного права Система современного международного права сложилась после Второй мировой войны и принятия Устава ООНhttps://studopedia.ru/4_47405_rassmotrim-primer-resheniya-odnoy-zadachi.html» target=»_blank»]studopedia.ru[/mask_link]

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru