
ТАВТ.Лекции&Файлы.Скворцов.09.04.2013 / МБР
.pdf
Лекция 6. Машины с неограниченными регистрами
► Машина с неограниченными регистрами (МНР) – это абстрактная машина, более сходная с реальным компьютером по сравнению с машиной Тьюринга. Она имеет следующие составные части.
►1) Регистры R1, R2, ..., в которых содержатся соответственно натуральные числа r1, r2, ... .
►Число регистров бесконечно, но только конечное множество регистров R1, R2, ... Rk содержит числа, отличные от нуля. Все остальные регистры заполнены нулями.

(продолжение)
► 2) Программа машины – это конечная последовательность I1, I2, ... , Is. из следующих четырех типов команд:
Z(n), S(n), T(m, n), J(m, n, q),
где m, n, q \{1,2, ... }. Эти команды выполняют следующие действия.
►Команда обнуления Z(n) делает содержимое регистра Rn равным нулю.
►Команда прибавления единицы S(n) к содержимому регистра Rn прибавляет число
1.
► Команда переадресации T(m, n) заменяет содержимое регистра Rn на содержимое регистра Rm.
► |
Команда условного перехода J(m, n, q) сравнивает содержимое регистров Rm и Rn. |
|
|
При rm = rn |
в качестве следующей команды выполняется команда с номером q, |
|
в противном случае выполняется следующая по порядку команда программы. |
|
► |
Команды обнуления, прибавления единицы и переадресации называются |
|
|
арифметическими командами. |

Примеры выполнения команд
► Пусть, например, регистры МНР имеют вид.
2 3 1 5 0 …
►Выполним команду S(2). Эта команда
прибавит 1 к числу 3 в регистре R2 и не
затронет остальные регистры. В результате получим следующее содержимое регистров
2 |
4 |
1 |
5 |
0 |
… |

(продолжение)
► Выполним затем команду T(2,1). Содержимое 4 из регистра R2 заменит старое содержимое 2 в
регистре R1. Получим регистры
4 4 1 5 0 …
► Машина с неограниченными регистрами, как и
произвольный алгоритм, работает по тактам:
такт 1, такт 2, … . Первый такт работы МНР с
программой I1 , I2, … ,In - выполнение первой
команды I1. Затем выполняются команды I2, I3,
... .

Условие остановки
►Машина останавливается тогда и только тогда, когда невозможно выполнить очередную предписанную команду. Это означает, что МНР только что совершила i-вый такт работы и следующим i+1 тактом должна выполнить несуществующую команду. Эта ситуация при выполнении программы I1 , I2, … ,In возникает ровно в одном из трех следующих случаев.
►I) Если в i-вом такте выполнена In - последняя команда программы и эта команда не является командой условного перехода, тогда следующим i+1 тактом должна выполняться несуществующая команда
In+1 .

(продолжение)
► 2) Если в i-вом такте выполнена команда условного перехода J(m, k, q), где rm = rk и q > n, тогда следующим i+1 тактом должна
выполняться несуществующая команда Iq.
►
3)
Если в i-вом такте выполнена In - последняя
команда программы и эта команда является
командой условного перехода J(m, k, q) при rm
rk тогда следующим i+1 тактом должна
выполняться несуществующая команда In+1 .

Результат вычислений
►Если выполнение программы завершилось, то число r1 из регистра R1 считается результатом
применения алгоритма к исходному набору
чисел r1 , r2, ... . Если выполнение программы
никогда не заканчивается, то нет результата
вычислений. В этом случае алгоритм
неприменим к исходным данным. Тем самым при работе МНР возможно лишь два типа
завершения работы: 1) выдача результата и 2)
бесконечная работа. Третий случай
(безрезультатная остановка) невозможен.

Вычисление функций на МНР
►Как и в случае машин Тьюринга, мы должны указать, как машина с неограниченными регистрами вычисляет
частичную функцию f(x1,x2, ... , xn) от n аргументов. Рассмотрим набор аргументов (x1,x2, ... , xn) и разместим число x1 в регистре R1 , число x2 - в регистре R2, ..., число xn - в регистре Rn. Все остальные
регистры заполнены нулями. Получаем начальную конфигурацию МНР. После окончания работы в регистре R1 должно быть значение функции f(x1,x2, ... , xn) . Если значение f(x1,x2, ... , xn) не определено, то МНР должна работать бесконечно.

Пример вычисления функции на МНР
►Пример. Составить программу для МНР, которая вычисляет функцию f(x,y)=x+y.
Решение. Рассмотрим работу МНР со следующей программой:
|
|
I1 J(2,3,5) |
|
|
|
|
|
I2 S(1) |
|
|
|
|
|
I3 S(3) |
|
|
|
|
|
I4 J(1,1,1) |
|
|
|
В регистр R1 перед первым тактом работы машины |
|||||
занесено число x, |
в R2 - число y, остальные регистры |
||||
заполнены нулями. |
x |
y |
0 |
0 |
|
|
|

Пример вычисления функции на МНР(продолжение-1)
► Первым тактом работы МНР исполняется команда I1 =J(2,3,5), где R2 сравнивается с
R3, т.е. y сравнивается с числом 0.
Допустим, например, что y=2. Поскольку y 0,
то вторым тактом работы исполнится команда
S(1),
а третьим - S(3). В результате к числам в
регистрах R1 и R3 добавится число 1, и
каждый из них увеличится на 1.
X+1 y 1 0