Главная страница
Навигация по странице:

  • МТ вычисляет | 2 − 1 |

  • решение. Задание построить машину Тьюринга, которая вычисляет модуль разности любых двух натуральных чисел. Решeние


    Скачать 30.32 Kb.
    НазваниеЗадание построить машину Тьюринга, которая вычисляет модуль разности любых двух натуральных чисел. Решeние
    Дата17.06.2022
    Размер30.32 Kb.
    Формат файлаdocx
    Имя файларешение.docx
    ТипДокументы
    #600083

    ЗАДАНИЕ
    Построить машину Тьюринга, которая вычисляет модуль разности любых двух натуральных чисел.
    РЕШ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 (МТ останов.)

    Функциональная схема машины Тьюринга представлена в следующей таблице:




    q0

    q1

    q2

    q3

    q4

    q5

    q6




    q0 L




    q5 R

    q5 R

    q5 R

    qz

    q6R

    0




    q1 9L

    L

    q39L

    R




    q6 R

    1




    q20L

    L

    q40L

    R







    2




    q21L

    L

    q41R

    R







    3




    q22L

    L

    q42R

    R







    4




    q23L

    L

    q43R

    R







    5




    q24L

    L

    q44R

    R







    6




    q25L

    L

    q45R

    R







    7




    q26L

    L

    q46R

    R







    8




    q27L

    L

    q47R

    R







    9




    q28L

    L

    q48R

    R

    q5 L




    -




    q5R

    q3L




    q1R

    q5

    q5


    Примеры работы:

    1. МТ вычисляет | 21 |




    2

    -

    1




    1. МТ в состоянии q1 подходит к числу, записанному справа от знака – ( в данном случае 1), и заменяет его на 0. МТ переходит в состояние q2.




    2

    -

    0




    1. МТ двигается влево и подходит к числу, записанному слева от знака – (в данном случае 2), и переходит в состояние q3. МТ заменяет эту цифру на 1 и переходит в состояние q4.




    1

    -

    0




    1. МТ возвращается вправо к числу, записанному справа, и переходит в состояние q1. Справа число исчерпано, но стоит цифра 0, которая заменяется на 9. МТ остается в состоянии q1.




    1

    -

    9




    1. МТ возвращается влево и попадает в ячейку, где стоит знак -. МТ переходит в состояние q5 и возвращается вправо.

    2. МТ стирает цифру 9, остается в состоянии q5. МТ двигается влево.




    1

    -







    1. МТ стирает знак -, переходит в конечное состоянии qz .




    1










    1. МТ останов.

    На ленте записан результат вычисления |2 − 1|.
    2) МТ вычисляет |24|




    2

    -

    4




    1. МТ в состоянии q1 подходит к числу, записанному справа от знака – ( в данном случае 4), и заменяет его на 3. МТ переходит в состояние q2.




      2

      -

      3




    2. МТ двигается влево и подходит к числу, записанному слева от знака – (в данном случае 2), и переходит в состояние q3. МТ заменяет эту цифру на 1 и переходит в состояние q4 .




      1

      -

      3




    3. МТ возвращается вправо к числу, записанному справа, и переходит в состояние q1. МТ заменяет 3 на 2, и переходит в состояние q2.




      1

      -

      2




    4. МТ двигается влево и подходит к числу, записанному слева от знака – (в данном случае 1), и переходит в состояние q3. МТ заменяет эту цифру на 0 и переходит в состояние q4.




      0

      -

      2




    5. МТ продолжает двигаться влево и попадает в пустую ячейку, и переходит в состояние q6.

    6. МТ возвращается вправо, стирает 0, МТ остается в состоянии q6 и двигается вправо.







      -

      2




    7. МТ стирает знак -, переходит в состояние q5, а потом в конечное состояние qz.










      2




    8. МТ останов.

    На ленте записан результат вычисления |2 − 4|.



    написать администратору сайта