Как можно создать машину Тьюринга, которая будет увеличивать число n, записанное в восьмеричной системе счисления

Как можно создать машину Тьюринга, которая будет увеличивать число n, записанное в восьмеричной системе счисления, на 1? В состоянии q1 машина должна считывать одну цифру из входного числа. Помимо таблицы программы, напишите словами, что происходит в каждом состоянии машины.
Золотой_Лист

Золотой_Лист

Для создания машины Тьюринга, которая будет увеличивать число n, записанное в восьмеричной системе счисления, на 1, мы можем использовать следующую таблицу программы:

\[
\begin{array}{|c|c|c|c|c|}
\hline
\text{Состояние} & \text{Текущий символ} & \text{Новый символ} & \text{Движение головки} & \text{Новое состояние} \\
\hline
q_1 & 0 & 1 & R & q_1 \\
q_1 & 1 & 2 & R & q_1 \\
q_1 & 2 & 3 & R & q_1 \\
q_1 & 3 & 4 & R & q_1 \\
q_1 & 4 & 5 & R & q_1 \\
q_1 & 5 & 6 & R & q_1 \\
q_1 & 6 & 7 & R & q_1 \\
q_1 & 7 & 8 & R & q_1 \\
q_1 & 8 & 0 & L & q_2 \\
q_2 & 0 & 1 & R & q_2 \\
q_2 & \text{Bl} & \text{Bl} & L & q_3 \\
q_3 & 0 & 0 & R & q_3 \\
q_3 & 1 & 1 & R & q_3 \\
q_3 & 2 & 2 & R & q_3 \\
q_3 & 3 & 3 & R & q_3 \\
q_3 & 4 & 4 & R & q_3 \\
q_3 & 5 & 5 & R & q_3 \\
q_3 & 6 & 6 & R & q_3 \\
q_3 & 7 & 7 & R & q_3 \\
q_3 & 8 & 8 & R & q_3 \\
q_3 & \text{Bl} & \text{Bl} & L & q_4 \\
q_4 & 0 & 1 & L & q_5 \\
q_4 & 1 & 2 & L & q_5 \\
q_4 & 2 & 3 & L & q_5 \\
q_4 & 3 & 4 & L & q_5 \\
q_4 & 4 & 5 & L & q_5 \\
q_4 & 5 & 6 & L & q_5 \\
q_4 & 6 & 7 & L & q_5 \\
q_4 & 7 & 8 & L & q_5 \\
q_4 & 8 & 0 & N & q_a \\
\hline
\end{array}
\]

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

Описание машины Тьюринга по шагам:

1. Начинаем с состояния \(q_1\), в котором считываем первую цифру числа n.
2. Если считанная цифра является числом от 0 до 7, заменяем ее на следующую цифру. Например, 0 заменяем на 1, 1 на 2 и так далее.
3. Если считанная цифра является 8, заменяем ее на 0 и переходим в состояние \(q_2\).
4. В состоянии \(q_2\) двигаемся влево до тех пор, пока не найдем пустой символ.
5. В состоянии \(q_3\) двигаемся вправо, пока не достигнем конца числа.
6. В состоянии \(q_3\) заменяем каждую цифру числа на себя же, чтобы вернуться в начало числа.
7. В состоянии \(q_3\) двигаемся влево до тех пор, пока не найдем пустой символ, и переходим в состояние \(q_4\).
8. В состоянии \(q_4\) двигаемся влево, пока не достигнем начала числа.
9. В состоянии \(q_4\) заменяем цифры числа на следующие цифры (0 заменяем на 1, 1 на 2 и так далее), чтобы увеличить число на 1.
10. Если число n было вида 777, то в состоянии \(q_4\) заменяем последнюю цифру 8 на 0 и завершаем работу машины.
11. Машина останавливается в состоянии \(q_a\), которое обозначает успешное завершение алгоритма. Результатом работы машины будет число n, увеличенное на 1.

Вот пошаговое решение для числа 152 в восьмеричной системе счисления:

Состояние \(q_1\): 1 5 2
Считываем первую цифру 1, изменяем ее на 2: 2 5 2
Двигаемся вправо в состоянии \(q_3\) и заменяем каждую цифру числа на себя же: 2 5 2
Двигаемся влево в состоянии \(q_4\) и заменяем каждую цифру числа на следующую: 3 6 3
Двигаемся влево в состоянии \(q_5\) и заменяем каждую цифру числа на следующую: 4 7 4
Двигаемся влево в состоянии \(q_5\) и заменяем каждую цифру числа на следующую: 5 0 5
Двигаемся влево в состоянии \(q_5\) и заменяем каждую цифру числа на следующую: 6 1 6
Двигаемся влево в состоянии \(q_5\) и заменяем каждую цифру числа на следующую: 7 2 7
Двигаемся влево в состоянии \(q_5\) и заменяем каждую цифру числа на следующую: 8 3 0
Заменяем последнюю цифру 8 на 0: 8 3 0
Завершаем работу в состоянии \(q_a\).

В результате работы машины, число 152, записанное в восьмеричной системе счисления, увеличилось на 1 и стало равным 830.
Знаешь ответ?
Задать вопрос
Привет!
hello