
- •ТЕОРИЯ АЛГОРИТМОВ
- •Введение
- •Таким образом, получили убывающую последовательность натуральных чисел
- •I.1. Примитивно рекурсивные функции. Базис элементарных функций. Операции подстановки и примитивной рекурсии. Основные свойства
- •I.2. Примитивно рекурсивные функции относительно совокупности функций. Основные свойства.
- •I.3. Производные операции над функциями
- •I.4. Операции конечного суммирования и конечного произведения
- •Действительно
- •Очевидно, что
- •I.5. Предикат, логическая функция. Логические операции с предикатами.
- •I.6. Операции навешивания кванторов. Операции навешивания кванторов относительно двуместных предикатов
- •I.7. Примитивно рекурсивный предикат
- •I.8. Операция навешивания ограниченного квантора над предикатами
- •I.9. Кусочное задание функции
- •I.10. Операция ограниченной минимизации
- •I.11. Частично рекурсивные функции
- •Тогда
- •Контрольные вопросы
- •Практические задания
- •II.Уточнение понятия алгоритма через абстрактную математическую машину Тьюринга
- •II.1 Определение машины Тьюринга
- •II.2 Применение машин Тьюринга к словам
- •II.3 Вычислимые по Тьюрингу функции
- •II.5 Композиция машин Тьюринга
- •II.6 Тезис Тьюринга (основная гипотеза теории алгоритмов)
- •II.7 Машины Тьюринга и современные электронно-вычислительные машины
- •II.8 Вычислимость по Тьюрингу примитивно рекурсивных функций
- •II.9 Вычислимость по Тьюрингу частично рекурсивных функций
- •Контрольные вопросы
- •Практические задания
- •III.1. Уточнение понятие алгоритма через машину с неограниченными регистрами
- •Практические задания
- •IV. Марковские подстановки
- •IV.1. Нормальные алгоритмы Маркова
- •IV.2. Нормально вычислимые функции и принцип нормализации Маркова
- •IV.3. Совпадение класса всех нормально вычислимых функций с классом всех функций, вычислимых по Тьюрингу
- •СПИСОК ЛИТЕРАТУРЫ
3. f (x)= C51 (x) ;
4. f (x, y)= I 22 (x, y)+1;
5. f (x, y, z)= I 23 (x, y, z)−& 1 ;
6. f (x, y)= max(x, y)= x, x > y ;
y, x ≤ y
7.f (x)= x!.
III.1. Уточнение понятие алгоритма через машину с неограниченными регистрами
Рассмотрим теперь точное определение алгоритма через машину с неограниченной количество регистров (МНР). При этом, как в предыдущий главе, в качестве изучаемых объектов берем элементы из множества натуральных чисел, т.е. N = {0,1,2,...}.
Ниже мы перечислим все команды из списка предписаний МНР, однозначно определим действие каждой команды и опишем механизм реализации алгоритма. Нужно отметить, что процесс работы МНР полностью удовлетворяет всем свойствам алгоритма.
Машина с неограниченными регистрами является исполнителем, представляющим собой простой "идеализированный компьютер". Идеализация состоит в том, что каждый отдельный реальный компьютер ограничен как величиной чисел, которые поступают на вход, так и размером памяти (необходимой для запоминания промежуточных результатов). МНР лишена этих ограничений. Машина с неограниченными регистрами имеет неограниченно большую память, ячейки которой будем называть регистрами и обозначать R1, R2 , R3 ,... .Каждый регистр в любой момент времени содержит
71
натуральное число.Число содержащееся в Rn , будем обозначать через rn. Это можно представить следующим образом:
R1 |
R2 |
R3 |
R4 |
... |
r1 |
R2 |
r3 |
r4 |
... |
Таб.3.1
При этом только конечное множество регистров содержит числа, отличные от нуля. Все остальные регистры заполнены нулями. Это допущение предполагает, что каждый алгоритм использует только конечный объем памяти.
В список предписаний МНР входит четыре команды: команда обнуления Z(n); команда прибавления единицы S(n); команда переадресации T(m, n) и команда условного перехода J(m, n, q). Команды обнуления, прибавления единицы и переадресации называются арифметическими.
Обозначение команды |
Действие, производимое МНР |
|
По данной команде |
Z(n) |
Rn := 0 |
S(n) |
Rn := Rn +1 |
T (m, n) |
Rn := Rm |
J (m, n, q) |
Если Rm = Rn , то перейти к вычислению |
|
команды алгоритма с номером q |
Таб. 3.2
Алгоритмом называется конечная непустая последовательность команд из списка предписаний МНР, начинающаяся с команды с номером 1.
Производя вычисления по данному алгоритму, МНР изменяет содержимое регистров памяти в точном соответствии с командами алгоритма.
Исходное состояние памяти, то есть последовательность чисел в регистрах перед началом вычислений, называется стандартной (начальной) конфигурацией.
Предположим, что некоторый алгоритм P состоит из последовательности команд I1, I2, ..., Is. МНР начинает вычисление с команды I1, затем выполняются команды I2, I3 и т. д. до тех пор, пока не встретится команда вида J(m, n, q). В этом случае МНР переходит к выполнению команды, предписанной J(m, n, q) и текущим содержанием регистров Rm и Rn
Пример 1. Рассмотрим алгоритм P1
I1 |
J(1, 2, 6) |
I2 |
S(2) |
I3 |
S(3) |
I4 |
J(1, 2, 6) |
I5 |
J(1, 1, 2) |
72

I6 T(3, 1)
Таб.3.3.
Применим алгоритм к следующей начальной конфигурации:
R1 |
R2 |
R3 |
R4 |
R5 |
... |
5 |
3 |
0 |
0 |
0 |
... |
Таб.3.4.
Ход вычисления на МНР по алгоритму P1 с начальной конфигурацией, изображенной на таблице 3., можно представить, записывая последовательно сверху вниз конфигурации машины вместе со следующей командой, к которой она переходит на данном шаге.
R1 |
R2 |
R3 |
R4 |
R5 |
... |
|
Следующая команда |
|
|
5 |
3 |
0 |
0 |
0 |
... |
|
I1 |
|
|
5 |
3 |
0 |
0 |
0 |
... |
|
I2 |
(так как R1 |
R2) |
5 |
4 |
0 |
0 |
0 |
... |
|
I3 |
|
|
5 |
4 |
1 |
0 |
0 |
... |
|
I4 |
|
|
5 |
4 |
1 |
0 |
0 |
... |
|
I5 |
(так как R1 |
R2) |
5 |
4 |
1 |
0 |
0 |
... |
|
I2 |
(так как R1 |
= R2) |
5 |
5 |
1 |
0 |
0 |
... |
|
I3 |
|
|
5 |
5 |
2 |
0 |
0 |
... |
|
I4 |
|
|
5 |
5 |
2 |
0 |
0 |
... |
|
I6 |
(так как R1 |
= R2) |
2 |
5 |
2 |
0 |
0 |
... |
|
I7 |
|
|
Таб. 3.5.(Вычисление по алгоритму P1 )
МНР выполняет алгоритм P: I1, I2, ..., Is до тех пор, пока это возможно. Вычисление останавливается тогда и только тогда, когда нет следующей команды, то есть когда МНР только что выполнила команду Ik и следующая команда в вычислении есть Iv, где v > s. Это может произойти одним из способов:
I) если Ik = Is (выполнена последняя команда в P) и Ik - арифметическая команда;
2)если Ik = J(m, n, q), Rm = Rn и q > s.
3)если Ik = J(m, n, q), Rm Rn и q = s.
Вэтом случае говорят, что вычисление остановилось после выполнения
команды Ik, и заключительная конфигурации есть последовательность r1, r2, r3,
... содержимого регистров на этом шаге.
Результатом применения алгоритма к некоторой начальной конфигурации будем считать число r1 из регистра R1 заключительной конфигурации.
Бывают, конечно, вычисления, которые никогда не заканчиваются, например, никогда не заканчивается ни при какой начальной конфигурации вычисление по алгоритму:
I1 S(1)
73

I2 J(1, 1, 1)
Таб.3.6.
Вслучае, если вычислительный процесс не заканчивается получением результата, то говорят, что данный алгоритм неприменим к начальной конфигурации.
Вдальнейшем для удобства обозначим через P(a1, a2, ..., an) вычисление по алгоритму P с начальной конфигурацией a1, a2, ..., an, 0, 0, ....
Если вычислительный процесс заканчивается с результатом b, будем писать
P(a1, a2, ..., an) = b.
Пусть f (x), (где x = (x1,..., xn )) – арифметическая функция, т.е. функция у
которая область определения и область значения является множество натуральных чисел.
Определение 1. Функция f называется вычислимой на МНР (или МНРвычислимой), если существует такой алгоритм P, что
1)вычисление P(a1, a2, ..., an) останавливается тогда и только тогда, когда (a1, a2, ..., an) принадлежит области определения f;
2)если (a1, a2, ..., an) принадлежит области определения f; то в заключительной конфигурации в регистре R1 находится натуральное число b такое, что f(a1, a2,
..., an) = b.
Рассмотрим теперь несколько простых примеров вычислимых функций.
Пример 2. |
Докажите МНР-вычислимость функции f (x, y)= x + y . |
||||||
Решение. |
Получим x + y, прибавляя y раз 1 к числу x. |
|
|||||
Начальной конфигурацией алгоритма служит x, y, 0, 0, 0, .... |
|
||||||
|
|
|
|
|
|
|
|
Типичной |
|
|
|
|
|
|
|
Конфигурац |
|
|
|
|
|
|
|
ией |
|
|
R3 |
R4 |
R5 |
|
... |
в процессе |
|
R2 |
|
||||
вычисления |
|
|
|
|
|
|
|
является |
|
|
|
|
|
|
|
R1 |
|
|
|
|
|
|
|
x + k |
|
Y |
k |
0 |
0 |
|
... |
Таб.3.7.
Определим алгоритм следующим образом:
I1 J(3, 2, 5)
74