Решение.
Примеры на составление программ для МТ
Рассмотрим примеры на составление программ для МТ, чтобы продемонстрировать некоторые типичные приёмы программирования на МТ.
Для сокращения формулировки задач введём следующие два соглашения:
– буквой P будем обозначать входное слово;
– буквой A будем обозначать алфавит входного слова, т.е. набор тех символов, из которых и только которых может состоять P (отметим, однако, что в промежуточных и выходном словах могут появляться и другие символы).
Пример 1 (перемещение автомата, замена символов)
А={0,1,2,3,4,5,6,7,8,9}. Пусть P – непустое слово; значит, P – это последовательность из десятичных цифр, т. е. запись неотрицательного целого числа в десятичной системе. Требуется получить на ленте запись числа, которое на 1 больше числа P.
Для решения этой задачи предлагается выполнить следующие действия:
1. Перегнать автомат под последнюю цифру числа.
2. Если это цифра от 0 до 8, то заменить её цифрой на 1 больше и остановиться; например, как показано на рисунке 13.5.
Рисунок 13.5 – Первый и второй шаг выполнения программы
3. Если же это цифра 9, тогда заменить её на 0 и сдвинуть автомат к предыдущей цифре, после чего таким же способом увеличить на 1 эту предпоследнюю цифру, например, как показано на рисунке 13.6.
Рисунок 13.6 – Третий шаг выполнения программы
4. Особый случай: в Р только девятки (например, 99). Тогда автомат будет сдвигаться влево, заменяя девятки на нули, и в конце концов окажется под пустой клеткой. В эту пустую клетку надо записать 1 и остановиться (ответом будет 100), как показано на рисунке 13.7.
Рисунок 13.7 – Четвертый шаг выполнения программы
В виде программы для МТ эти действия описываются следующим образом (рисунок 13.8).
Рисунок 13.8 – Программа для МТ