Машина Минского

Материал из testwiki
Перейти к навигации Перейти к поиску

Машина Минского — многоленточная машина Тьюринга, у которой ленты слева не надстраиваются (ограничены по длине), все ячейки лент, за исключением самых левых, всегда пусты, а состояния самых левых ячеек постоянны[1]. Также называется регистровая машина. Понятие ввёл в науку М. Минский[2]

Система команд

Внешний алфавит (совокупность символов, записанных на лентах) машины Минского состоит из символов 0,1. Символ пустого состояния 0, все самые левые клетки всех лент находятся в состоянии 1.

Полное описание n — ленточной машины Минского задаётся указанием совокупности всех её внутренних состояний qi, i=1,,n и программы машины, состоящей из команд вида

qia1asqαTα1Tαs,

где i=1,,n; aλ=0,1; α=0,1,,n; αλ=0,1,1.

Эти команды означают, что, находясь во внутреннем состоянии qi и воспринимая ячейки лент в состояниях a1as, машина заменяет qi на qα, после чего сдвигает ленты в направлениях Tα1Tαs (T1,T1,T0 означают соответственно сдвиг ленты на одну ячейку влево, вправо и оставление ленты неподвижной).

Так как 1 есть состояние самой левой ячейки, то в командах из aλ=1 должно следовать неравенство αλ1.

Свойства

  • Для каждой частично рекурсивной функции f(x) существует трёхленточная машина Минского, вычисляющая эту функцию, то есть переходящая из конфигурации 10x1q10q11q11 в конфигурацию 10f(x)1q00q01q01, если f(x) определено, и работающая вечно, если f(x) не определено[1].
  • Для каждой частично рекурсивной функции f(x) существует двухленточная машина Минского, которая для любого натурального x перерабатывает число 2x в число 2f(x), если f(x) определено, и работающая безостановочно, не переходя в заключительное внутреннее состояние q0, если f(x) не определено[1]
  • Для каждой частично рекурсивной функции f(x) существует операторный алгоритм, перерабатывающий 22x в 22f(x), программа которого состоит лишь из приказов вида[1]{{pb
    |×2|α|_,|×3|α|_,|×2|α|β|_.

Регистровая машина

Регистровая (или программная) машина состоит из конечного числа регистров, хранящих неотрицательные целые числа и управляющий программный блок, который выполняет операции над содержимым регистров согласно программе (упорядоченной последовательности команд). Команды содержат сведения о выполняемой операции, регистре, номерах одной или двух других командШаблон:Sfn.

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

  • |a0|_ — занести 0 в регистр a;
  • |a|_ — добавить 1 к содержимому регистра a и перейти к новой команде;
  • |a(n)|_ — вычесть 1 из содержимого регистра a и перейти к следующей команде или перейти к команде n, если в нём уже содержится 0;
  • |n|_ — перейти к команде n.

Двухленточная машина Минского полностью эквивалентна регистровой машине с двумя регистрами. Если длины лент от считывающих головок до концов рассматривать как представления чисел m и n, операции m+ и n+ сдвигают головки в сторону от концов, а m и n к концам, при условии, что не достигнут конец лентыШаблон:Sfn, полностью эквивалентна регистровой (программной) машине с двумя регистрами, в один из регистров которой помещается нуль, а в другой число 2a3m5nШаблон:Sfn.

См. также

Примечания

Шаблон:Примечания

Литература

  1. 1,0 1,1 1,2 1,3 Мальцев А. И. Алгоритмы и рекурсивные функции. — М., Наука, 1986. — с. 304—315
  2. Minsky M. L. Recursive unsolvalibility of Post’s problem of Tag and topics in theory of Turing machinesШаблон:Ref-en. — Ann. Math., 1961, 74, p. 437—455.