решение. Задание построить машину Тьюринга, которая вычисляет модуль разности любых двух натуральных чисел. Решeние
Скачать 30.32 Kb.
|
ЗАДАНИЕ Построить машину Тьюринга, которая вычисляет модуль разности любых двух натуральных чисел. РЕШEНИЕ Сконструируем машину Тьюринга для нахождения модуля разности любых двух натуральных чисел. Внешний алфавит машины Тьюринга A= {0,1,2,3,4,5,6,7,8,9, -, }. Внутренний алфавит машины Тьюринга ={q0,q1,q2,q3,q4,q5,q6,qz}, где q0 - начальное состояние машины Тьюринга; qz - конечное состояние машины Тьюринга (останов.) Пусть два заданных натуральных числа разделяются знаком -, пусть секции по-прежнему обозначаются , пусть слева на ленте от знака - расположено одно число, справа – другое. Идея решения заключается в следующем: от числа, расположенного справа, отнимаем единицу, действуя по правилам десятичной арифметики, затем продвигаемся влево к другому натуральному числу и уже от этого числа отнимаем единицу, действуя по правилам десятичной арифметики. После этого возвращаемся к правому числу и повторяем до тех пор, пока одно из чисел не будет исчерпано. После этого последний раз сдвигаемся вправо (если исчерпано число, которое было расположено справа от знака -) или влево (если исчерпано число, которое было расположено слева от знака -), стираем знак – и останов. Команды МТ: q0 → q0 L (движение головки влево к концу числа, стоящего справа от знака -); q10 → q19L (найдена последняя цифра правого числа – цифра 0 – вместо 0 записываем в ячейку цифру 9 и МТ остается в состоянии q1, головка движется дальше вправо) q11 → q20L (вместо 1 правого числа записываем цифру 0 и МТ переходит в состояние q2) q12 → q21L (вместо 2 правого числа записываем цифру 1 и МТ переходит в состояние q2) q13 → q22L (вместо 3 правого числа записываем цифру 2 и МТ переходит в состояние q2) q14 → q23L (вместо 4 правого числа записываем цифру 3 и МТ переходит в состояние q2) q15 → q24L (вместо 5 правого числа записываем цифру 4 и МТ переходит в состояние q2) q16 → q25L (вместо 6 правого числа записываем цифру 5 и МТ переходит в состояние q2) q17 → q26L (вместо 7 правого числа записываем цифру 6 и МТ переходит в состояние q2) q18 → q27L (вместо 8 правого числа записываем цифру 7 и МТ переходит в состояние q2) q19 → q28L (вместо 9 правого числа записываем цифру 8 и МТ переходит в состояние q2) q1− → q5R (правое число исчерпано, возвращаемся влево, МТ переходит в состояние q5) q5 9 → q5 R (стираем 9, и двигаемся влево) q5 − → q5 (стираем знак –) q5 → q2 (МТ останов.) q5− → q5 − L (головка проходит знак -, который разделяет два заданных натуральных числа и подходит к последней цифре числа, записанного слева от знака -, МТ переходит в состояние q3) q30 → q39L (найдена последняя цифра левого числа – цифра 0 – вместо 0 записываем в ячейку цифру 9 и МТ остается в состоянии q3, головка движется дальше вправо) q31 → q40 (цифра 1 левого числа заменяется на 0, МТ переходит в состояние q4 и головка двигается влево) q32 → q41R (цифра 2 левого числа заменяется на 1, МТ переходит в состояние q4 и головка возвращается вправо к правому числу) q33 → q42R (цифра 3 левого числа заменяется на 2, МТ переходит в состояние q4 и головка возвращается вправо к правому числу) q34 → q43R (цифра 4 левого числа заменяется на 3, МТ переходит в состояние q4 и головка возвращается вправо к правому числу) q35 → q44R (цифра 5 левого числа заменяется на 4, МТ переходит в состояние q4 и головка возвращается вправо к правому числу) q35 → q44R (цифра 5 левого числа заменяется на 4, МТ переходит в состояние q4 и головка возвращается вправо к правому числу) q36 → q45R (цифра 6 левого числа заменяется на 5, МТ переходит в состояние q4 и головка возвращается вправо к правому числу) q37 → q46R (цифра 7 левого числа заменяется на 6, МТ переходит в состояние q4 и головка возвращается вправо к правому числу) q38 → q47R (цифра 8 левого числа заменяется на 7, МТ переходит в состояние q4 и головка возвращается вправо к правому числу) q39 → q48R (цифра 8 левого числа заменяется на 7, МТ переходит в состояние q4 и головка возвращается вправо к правому числу) q4 → q6R (левое число исчерпано, возвращаемся вправо, МТ переходит в состояние q6) q6 0 → q6 R (стираем 0, и двигаемся вправо) q6 − → q5 (стираем знак –, МТ переходит в состояние q5) q5 → q2 (МТ останов.) Функциональная схема машины Тьюринга представлена в следующей таблице:
Примеры работы: МТ вычисляет | 2 − 1 |
МТ в состоянии q1 подходит к числу, записанному справа от знака – ( в данном случае 1), и заменяет его на 0. МТ переходит в состояние q2.
МТ двигается влево и подходит к числу, записанному слева от знака – (в данном случае 2), и переходит в состояние q3. МТ заменяет эту цифру на 1 и переходит в состояние q4.
МТ возвращается вправо к числу, записанному справа, и переходит в состояние q1. Справа число исчерпано, но стоит цифра 0, которая заменяется на 9. МТ остается в состоянии q1.
МТ возвращается влево и попадает в ячейку, где стоит знак -. МТ переходит в состояние q5 и возвращается вправо. МТ стирает цифру 9, остается в состоянии q5. МТ двигается влево.
МТ стирает знак -, переходит в конечное состоянии qz .
МТ останов. На ленте записан результат вычисления |2 − 1|. 2) МТ вычисляет |2− 4|
МТ в состоянии q1 подходит к числу, записанному справа от знака – ( в данном случае 4), и заменяет его на 3. МТ переходит в состояние q2.
МТ двигается влево и подходит к числу, записанному слева от знака – (в данном случае 2), и переходит в состояние q3. МТ заменяет эту цифру на 1 и переходит в состояние q4 .
МТ возвращается вправо к числу, записанному справа, и переходит в состояние q1. МТ заменяет 3 на 2, и переходит в состояние q2.
МТ двигается влево и подходит к числу, записанному слева от знака – (в данном случае 1), и переходит в состояние q3. МТ заменяет эту цифру на 0 и переходит в состояние q4.
МТ продолжает двигаться влево и попадает в пустую ячейку, и переходит в состояние q6. МТ возвращается вправо, стирает 0, МТ остается в состоянии q6 и двигается вправо.
МТ стирает знак -, переходит в состояние q5, а потом в конечное состояние qz.
МТ останов. На ленте записан результат вычисления |2 − 4|. |