ZIK1337
@ZIK1337

Как построить машину Тьюринга для умножения десятичного числа на 11?

Используется алфавит A={0,1,2,⋯,9}. Нужно построить таблицу машины Тьюринга, которая умножает входное слово на 11.

Понятно, что последовательность такая:
1) Проверка, не равно ли нулю входное слово или не пустое ли оно, одновременно удаляя незначащие нули
2) Добавление 0 в конец, и после добавление "+"
3) Копирование справа от "+" входного слова без добавленного нуля
4) Сложение

Вопрос, как сделать это копирование нормально для десятичного числа?
Для 10 цифр это уже 10 состояний, а после записи нужно еще вернуться и восстановить заменённый символ обратно, получается еще 10 символов добавлять для каждой цифры (иначе как понять, на что восстанавливать)?
Кажется, перебор

Может нужно как-то по-другому?
  • Вопрос задан
  • 2519 просмотров
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Примем, что в исходном положении каретка стоит на последней цифре числа.
У нас будут состояния от q0 до q10, соответствующие сумме младшего разряда исходного числа и переноса из него . Начальное состояние - q0.
qiaj → q((i + j) div 10) + ja(i + j % 10)L,
qi ≠ 0ε → q(i div 10)a(i % 10)L,
q0ε → qstop,
где div - целочисленное деление.
Теперь каретка стоит в пустой клетке перед результатом.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы