Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
37
Добавлен:
02.06.2015
Размер:
9.91 Mб
Скачать

Лекция 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