Введение в схемы, автоматы и алгоритмы


для функции копирования, не увеличивая


Задача 9.1. Постройте м.Т. для функции копирования, не увеличивая исходный алфавит ?.
Задача 9.2. Постройте программу м.Т., которая выполняла бы перенос непустого слова в заданное место ленты, т.е. для любого слова w
для функции копирования, не увеличивая
(? \ {
для функции копирования, не увеличивая
})* и n > 0 выполняла преобразование конфигураций:
для функции копирования, не увеличивая

Задача 9.3. Достройте программу м.Т.
для функции копирования, не увеличивая
из леммы 9.1 на этапах 3 и 4.
Задача 9.4. Докажите, что односторонняя м.Т.
для функции копирования, не увеличивая
построенная в лемме 9.2, корректно моделирует исходную м.Т.
для функции копирования, не увеличивая

Задача 9.5. Другой, по сравнению с конструкцией леммы 9.2, подход к моделированию двухсторонней ленты на односторонней заключается в том, чтобы содержимое правой полуленты
для функции копирования, не увеличивая
хранить в четных ячейках
для функции копирования, не увеличивая
а содержимое левой полуленты - в нечетных, поместив в 1-ю ячейку специальный маркер. Постройте программу, реализующую этот подход (ее достоинство - увеличение алфавита ленты всего на 1 символ).
Задача 9.6. Достройте программу м.Т.
для функции копирования, не увеличивая
из леммы 9.4 на этапах 1, 3 и 5.
Задача 9.7. Построить программы машин Тьюринга, вычисляющих следующие функции.
  • Перевод из двоичной системы в унарную: fbu(n(2))= |n.
  • Сложение и вычитание в двоичной системе: sum(n*m)=n+m и
    для функции копирования, не увеличивая
    совпадает с - при n
    для функции копирования, не увеличивая
    m и
    для функции копирования, не увеличивая
    при m > n).
  • Умножение в двоичной системе: mul(n*m)= n ? m. ( Реализуйте алгоритм умножения "в столбик".)
  • Возведение в степень: exp(n*m)= nm.
  • Извлечение квадратного корня:
    для функции копирования, не увеличивая
    .
  • Логарифмирование: log(n)=
    для функции копирования, не увеличивая
    log2n
    для функции копирования, не увеличивая
    .
  • Деление:
    для функции копирования, не увеличивая
  • Остаток от деления: rest(n*m) = n mod m.
  • Функция выбора аргумента:
    для функции копирования, не увеличивая
    .

Задача 9.8. Используя машины Тьюринга из предыдущей задачи, построить программы машин Тьюринга, вычисляющих следующие функции.

  1. для функции копирования, не увеличивая


  2. для функции копирования, не увеличивая


  3. для функции копирования, не увеличивая


  4. для функции копирования, не увеличивая


Задача 9.9. Докажите, что всякую арифметическую функцию f(x), вычислимую на некоторой м. Т. M = <Q, ?, P,q0, qf>, можно также вычислить на м. Т. M',, алфавит ленты которой содержит лишь два символа
для функции копирования, не увеличивая
и |. (Указание: используйте для моделирования одного символа из ? блок из нескольких подряд идущих ячеек, содержащих его код в алфавите {
для функции копирования, не увеличивая
, , | }) и замените каждую команду M группой команд, обрабатывающих соответствующий блок ячеек).


Задача 9.10.
Построить машину Тьюринга, определяющую по слову x в алфавите {1, 2} симметрично ли оно, т. е. вычисляющую функцию:
для функции копирования, не увеличивая

Задача 9.11.
Построить машину Тьюринга, сравнивающую два слова x=x1x2… xn и y=y1y2… ym в алфавите {1, 2, 3} лексикографически:
для функции копирования, не увеличивая
или для некоторого непустого слова x' выполнено y = x x'. Эта машина Тьюринга должна вычислять функцию:
для функции копирования, не увеличивая


Содержание раздела