
Дискретная математика. На ленте машины Тьюринга в четырех подряд идущих клетках записаны четыре
различные буквы: A,B,C,D в произвольном порядке. Построить машину Тьюринга, меняющую местами первую и последнюю буквы. Начальное положение – стандартное.

Ответы на вопрос

Машина Тьюринга работает пошагово. На каждом шаге на основе текущего состояния и текущего просматриваемого символа определяется:
1) какой символ записать в текущую просматриваемую позицию (возможно тот же самый, что и сейчас, тогда фактически ничего не изменится);
2) как сместить каретку для просмотра очередного символа: влево, вправо или оставаться на месте;
3) в какое состояние нужно перейти (возможно в то же самое, в котором находимся сейчас, тогда фактически состояние не изменится).
Составим алгоритм для решения задачи.
1) Поскольку по условию начальное положение - стандартное, то в начальном состоянии мы просматриваем крайний правый символ (справа от него находятся пустые символы, пустой символ будем обозначать λ).
Нам необходимо каким-то образом запомнить данный символ, чтобы в дальнейшем, когда мы окажемся над первым символом, мы смогли бы воспроизвести последний. В данном случае мы можем оперировать лишь состояниями машины. Таким образом, в зависимости от того, какой символ стоит последним, мы выберем одно из четырех новых состояний и перейдем в него. В любом случае изменять символы пока не нужно, а смещать каретку всегда нужно влево.
Инструкция машине состоит из перечисленных через запятую:
- нового символа в просматриваемой ячейке;
- команды смещения каретки (L - влево, R - вправо, N - оставаться на месте);
- нового состояния.
Так если в состоянии в просматриваемой ячейке находится буква А, то будет выполнена инструкция
, а именно в просматриваемую ячейку будет записана буква А (фактически ничего не изменится, ведь там уже находится буква А), каретка будет смещена влево, а машина перейдет в состояние
.
Для пустого символа λ вместо инструкции прописана команда остановки (!), поскольку по условию в начальном положении просматриваемый символ непустой, а выйдя из состояния возвращаться в него мы не планируем.
2) Для любого из полученных состояний мы должны продолжать двигаться налево, не изменяя символы и состояния, до тех пор, пока просматриваемый символ не окажется пустым. Если просматриваемый символ - пустой, то первый символ находится справа от нас, и нам необходимо сместиться вправо и поменять состояние, причем каждому из четырех ранее созданных состояний будет соответствовать свое новое состояние.
3) Находясь над первой ячейкой мы записываем значение последнего символа, ориентируясь на состояние машины. В зависимости от значения текущего просматриваемого символа, мы осуществляем переход в одно из четырех новых состояний. Смещение каретки должно выполняться вправо.
Команды остановки прописаны для пустого просматриваемого символа, которого не может быть в ситуации, когда мы просматриваем первый символ, а также для ситуаций, когда первый символ заведомо не может принимать определенное значение. Например, состояние несет в себе информацию о том, что последним символом была буква А, а значит первый символ не может быть буквой А.
4) По аналогии с пунктом 2) мы двигаемся вправо до тех пор, пока просматриваемый символ непустой. Когда просматриваемый символ оказывается пустым, мы меняем состояние и смещаемся влево, таким образом, оказываясь над последним символом.
5) Ориентируясь по состоянию машины, мы записываем значение первого символа в последнюю ячейку, после чего переходим в заключительное состояние, в котором выполнение алгоритма завершается.




Для создания машины Тьюринга, которая меняет местами первую и последнюю буквы на ленте, можно использовать следующее описание машины Тьюринга в виде таблицы переходов:
Состояния:
- q0: начальное состояние.
- q1: состояние, в котором происходит перемещение влево до первой буквы.
- q2: состояние, в котором происходит перемещение вправо до последней буквы.
- q3: состояние, в котором происходит обмен местами первой и последней букв.
Алфавит: {A, B, C, D, X}
Где X - символ-пустышка (пустое место на ленте).
Таблица переходов:
Состояние | Прочитанный символ | Записанный символ | Движение | Следующее состояние |
---|---|---|---|---|
q0 | A | X | R | q1 |
q0 | B | X | R | q1 |
q0 | C | X | R | q1 |
q0 | D | X | R | q1 |
q1 | X | X | L | q2 |
q1 | _ | _ | S | q3 |
q2 | _ | _ | S | q0 |
q2 | A | X | L | q2 |
q2 | B | X | L | q2 |
q2 | C | X | L | q2 |
q2 | D | X | L | q2 |
q3 | X | A | S | q0 |
q3 | A | X | S | q0 |
q3 | _ | _ | S | Halt |
Где:
- "R" означает движение вправо.
- "L" означает движение влево.
- "S" означает остановку (машина завершает работу).
Процесс работы машины Тьюринга:
- Начните в состоянии q0 с лентой, на которой четыре различные буквы и символ-пустышка X между ними. Например, "AXBCD".
- Машина начнет двигаться вправо (в состоянии q0) до тех пор, пока не найдет символ X.
- После нахождения символа X, машина перейдет в состояние q2 и начнет двигаться влево до тех пор, пока не найдет следующий символ X.
- Когда машина достигнет состояния q3, она заменит символ X перед первой буквой на символ A и символ X после последней буквы на символ D.
- Машина завершит свою работу в состоянии Halt (остановка).
После завершения работы машины Тьюринга на ленте будет записано "DXBCA", и первая и последняя буквы будут поменяны местами, что было требуемой операцией.


Похожие вопросы
Топ вопросов за вчера в категории Математика
Последние заданные вопросы в категории Математика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili