Теория алгоритмов в задачах информационной безопасности конспект лекций. Учебное пособие
.pdf
α (D) = {α (d) | d D} и принимает значения из D. Тогда для любой функции f :Dn → D можно однозначно определить функцию f * : n0 → 0 , где f * = αf α −1 или
f * (a1,..., an )= α (f (α −1 (a1),..., α −1 (an ))),
для любых a1,...,an 0 .
Определение. Функция f называется вычислимой (на МПД) то-
гда и только тогда, когда вычислима функция f *.
Кодирование множества целых чисел
Для любого z :
2z, если z ≥ 0;
α (z)= − (2z + 1), если z < 0;
α −1 ( )= 1 m, если m − четно;
m 2 ( )
− 12 m + 1 , если m − нечетно.
Таким образом, можно считать определенным понятие вычислимости целочисленных функций.
Рассмотрим примеры вычислимых на МПД функций.
Пример 1. Функция f (x, y) = x + y. Эта функция может быть вычислена следующей программой при начальной конфигурации
K0 = (x, y, 0, 0, …). P = I1 I2 I3 I4, где
I1 = J (3, 2, 5),
I2 = S (1),
I3 = S (3),
I4 = J (1, 1, 1).
Данная программа прибавляет 1 к x до тех пор, пока r3 не станет равным y. Результат находится в первом регистре заключительного состояния.
Пример 2. Деление четных чисел на 2.
( ) x / 2, если x − четное;
Функция f x = неопределена, если x − нечетное.
31
Эта функция может быть вычислена программой
Р = I1 I2 I3 I4 I5 I6,
где I1 = J (1, 2, 6),
I2 = S (3),
I3 = S (2),
I4 = S (2),
I5 = J (1, 1, 1),
I6 = T (3, 1).
Данная программа прибавляет 1 к r3 и 2 к r2 до тех пор, пока r2 не станет равным x, тогда r3 даст результат, который на последнем шаге будет скопирован в R1. Если программа «зависнет», то МПД не применима к данной конфигурации.
Поскольку доказательства вычислимости конкретных функций связаны с предъявлением конкретных программ, их вычисляющих, то следует ввести некоторые соглашения о составлении и записи программ. Также аналогично композиции машин Тьюринга можно ввести композицию программ МПД.
Пусть P = I1I 2...I s .
Определение. Говорят, что программа Р имеет стандартный вид, если для всякой команды условного перехода J(m, n, q) выполнимо q ≤ s + 1.
Определение. Две программы Р и P′ называются эквивалент-
ными, если они определяют одни и те же n-местные функции, т.е.
fP(n) = fP(n′ ) для всех n ≥ 1.
Утверждение. Об эквивалентной программе. Для всякой про-
граммы Р существует эквивалентная ей программа стандартного
вида P′ (может быть, не единственная). |
|
|||||||||||||
Пусть P = I |
1 |
I |
2 |
...I |
s |
. Тогда определим P′ = I ′I ′ |
...I ′ , где для лю- |
|||||||
|
|
|
|
|
|
|
|
|
|
1 2 |
s |
|||
бого k = |
|
положим |
|
|||||||||||
1,s |
|
|||||||||||||
|
Ik , если Ik не является командой условного перехода; |
|||||||||||||
I′ |
|
|
, если I |
|
= |
J (m,n,q), q ≤ s + 1; |
|
|||||||
= I |
k |
k |
|
|||||||||||
k |
|
|
|
|
|
|
|
|
|
|
|
|||
|
J (m,n,s + 1), если Ik = J (m,n,q), q > s + 1. |
|
||||||||||||
Очевидно, P′ |
удовлетворяет нужным требованиям. |
|||||||||||||
32
Пусть даны две программы стандартного вида P и Q. Образуем новую программу PQ – к командам программы P припишем команды программы Q. Пусть P = I1I 2...I s , Q = I s +1...I s +t . Тогда
PQ = I1I 2...I s I s+1 I s+t , где команды J(m, n, q) из программы Q должны заменить на J (m, n, s + q). Тогда результат работы программы PQ совпадает с результатом вычисления по программе P, к которому применена программа Q.
Определение. Ширина или ранг программы P – минимальное натуральное число r (P) такое, что для всех m,n , входящих в
команды из Р, т.е. S(n), Z(n), T(m, n), J(m, n, q), выполнено условие m, n < r(P).
Смысл числа r(P) состоит в том, что регистры Rt , где t > r(P), в ходе вычисления по программе Р не будут менять свое содержимое и не будут влиять на содержимое регистров R1, , Rr (Р) .
Заметим, что можно организовывать вычисление, используя программу Р, в случае, когда входные данные программы находятся в регистрах Ri1 , , Rin , а результат заносится в Ri . Далее для
простоты положим, что регистры Ri1 , , Rin отличны от R1, , Rn .
Пусть Р вычисляет f в стандартном понимании вычислимости. Тогда программа
|
|
T (i1,1) |
|
|
... |
|
|
T (in , n) |
P[i , ,i |
n |
→ i]: Z (n + 1) |
1 |
... |
|
|
|
Z (r (P)) |
P
T (1,i)
будет вычислять f (x1, , xn ) и результат запишет в Ri . Данную
программу обозначим P[i1, ,in → i].
Пример композиции программ для МПД. Функция f (x, y) = xy – вычислимая функция. Пусть Н – программа, вычисля-
33
ющая функцию x + y (программа для вычисления данной функции приведена ранее). Тогда f (x, y) = xy вычисляется следующей программой:
J (2,3,ρ))
S (3)
H [1,4→ 5] T (5,4)
J(1,1,1)
ρ: T (5,1)
Здесь ρ – метка, и запись H [1, 4 → 5] означает, что программа H работает с регистрами 1, 4, а результат записывает в регистр 5.
x 0 = 0;
Программа Р вычисляет xy по правилу ( )xy = x y − 1 + x.
Как следует из изложенного, язык программ МПД содержит основные процедуры языков программирования и позволяет организовывать композицию (соединение) программ и использовать программы в качестве подпрограмм других программ. Это является основанием для тезиса Черча.
Тезис Черча для МПД. Введенный класс вычислимых функций в точности отвечает классу алгоритмически вычислимых функций.
Так же как и тезис Тьюринга, данный тезис доказать нельзя, однако принятие его позволяет истолковывать утверждения о несуществовании МПД для решения конкретных задач как утверждения о несуществовании соответствующих алгоритмов.
34
Лекция 4. Частично рекурсивные функции и их вычислимость
На лекции рассматривается класс частично рекурсивных функций – пример алгоритмической модели еще одного типа, для которого понятие алгоритма связывается с вычислением значений числовых функций. Частично рекурсивные функции вводятся через базисные функции и операции над ними. Далее описываются различные виды частично рекурсивных функций, такие как общерекурсивные и примитивно рекурсивные функции, приводятся соответствующие примеры. Обосновывается равенство классов функций, вычислимых на машине произвольного доступа, и частично рекурсивных функций.
Ключевые слова: частично рекурсивные функции; общерекурсивные функции; примитивно рекурсивные функции; базисные функции; операция суперпозиции; операция примитивной рекурсии; операция минимизации; тезис Черча.
Введение. Рассмотрим еще один класс вычислимых функций, предложенный в 30-х гг. XX в. Геделем, Клини и Черчем в качестве уточнения понятия алгоритма – класс частично рекурсивных функций. В данном случае понятие алгоритма связывается с процедурами вычисления значений числовых функций.
4.1. Базисные функции и операции над ними
Понятие класса частично рекурсивных функций. Данный класс определяется путем указания конкретных исходных (базисных) функций и фиксированного множества операций получения новых функций из заданных. Будем рассматривать функции вида f : n0 → 0 .
Приведем базисные функции и операции над ними.
Базисные функции:
1)нуль-функция o(x)=0, x 0;
2)функция следования s(x)= x +1, x 0 ;
35
3) функции выбора аргументов Imn (x1, , xn )= xm , n , 1≤ m ≤ n .
Таким образом, если фиксируем n, то получим n+2 базисные функции, иначе их бесконечно много.
Операции над функциями
1.Операция суперпозиции. Пусть заданы n-местная функция g
ифункции f1, , fn , зависящие от одних и тех же переменных
x1, , xm . Это можно сделать путем введения фиктивных перемен-
ных. Суперпозицией функций g и f1, , fn называется функция h (x1, , xm )= g (f1 (x1, , xm ), , fn (x1, , xm )).
Если среди заданных функций имеются частичные, то и функция h будет частичной. Функция h на наборе переменных x1, , xm
определена тогда и только тогда, когда ( ) определены все функции f1 (x1, , xm ), , fn (x1, , xm ), и функция g определена на наборе f1(x1, , xm ), , fn (x1, , xm ).
Обозначение: h = S (g, f1, , fn ).
2. Операция примитивной рекурсии. Пусть заданы n-местная функция g (x1, , xn ) и (n + 2)-местная функция h(x1, , xn , y, z). Определим (n+1)-местную функцию f индуктивным образом с помощью соотношений:
f (x1, , xn ,0)= g (x1, , xn );
f (x1, , xn , y +1)= h(x1, , xn , y, f (x1, , xn , y)).
Ясно, что данные соотношения однозначно определяют функцию f. Если функции g и h частичные, то f (x1, , xn , y +1) считается определенной в том и только в том случае, когда определены f (x1, , xn , y) и h(x1, , xn , y,t) при t = f (x1, , xn , y). Значит,
если f (x1, , xn , y0) не определено, то и f (x1, , xn , y) не определено при y > y0 . Про функцию f говорят, что она получена рекур-
сией из функций g и h.
Обозначение: f = R(g, h).
36
3. Операция минимизации. Пусть задана n-местная функция g (x1, , xn−1, y). Зафиксируем набор (x1, , xn−1, xn ) и рассмотрим уравнение относительно y: g (x1, , xn−1, y)= xn . Будем решать
данное |
уравнение методом |
тотального |
перебора, т.е. вы- |
числяя |
последовательно |
g (x1, , xn−1,0), |
g (x1, , xn−1,1), |
(x1, , xn−1, 2),... и сравнивая с xn . Наименьшее y, для которого исходное уравнение превращается в верное равенство, обозначим через μ y (g (x1,..., xn−1, y)= xn ). При этом считаем, что y определено, если g (x1, , xn−1, z) определено при всех z ≤ y. В противном
случае считаем, что y не определено. Значение y есть функция f от переменных x1, , xn , про которую говорят, что она получена из
функции g операцией минимизации, f (x1,…, xn) = μy.
Обозначение: f = M y g.
Заметим, что операции S и R, будучи примененными к всюду определенным функциям, дают всюду определенные функции. Операция М может давать частичные функции даже при применении к всюду определенным функциям.
Пример. μ y (x2 + y = x1)= x1 − x2 . Здесь g (x2, y)= x2 + y всюду определена, но x1 − x2 определена только при x1 ≥ x2 .
4.2. Виды частично рекурсивных функций
Определение. Функция f (x1,…, xn) называется частично рекур-
сивной или вычислимой по Черчу, если она может быть получена из базисных функций o(x), s(x), Imn (x1,..., xn ) применением конечного
числа раз операций суперпозиции, рекурсии и минимизации. Определение. Всюду определенная частично рекурсивная
функция называется общерекурсивной.
Определение. Если рассматривать тот же базис функций, но в качестве допустимых операций брать операции суперпозиции и рекурсии, то получаемые функции называются примитивно рекур-
сивными.
37
Обозначения:
Ч – класс частично рекурсивных функций, Ч0 – класс общерекурсивных функций,
Чпр. – класс примитивно рекурсивных функций.
Класс частично рекурсивных функций – одно из главных понятий теории алгоритмов. Это объясняется тем, что какие бы классы точно очерченных «алгоритмов» до сих пор не рассматривались, во всех случаях оказывалось, что соответствующие числовые функции, вычислимые посредством алгоритмов этих классов, были частично рекурсивными. Поэтому общепринятой является гипотеза, формулируемая как тезис Черча для частично рекурсивных функций.
Тезис Черча для частично рекурсивных функций. Класс ал-
горитмически вычислимых функций совпадает с классом всех частично рекурсивных функций.
Принятие данного тезиса позволяет истолковывать доказательство, что некоторая функция не является частично рекурсивной, как доказательство отсутствия алгоритма вычисления ее значений.
4.3. Примеры частично рекурсивных функций
Приведем примеры функций, относящихся к классу частично рекурсивных функций.
1. Функции-константы. f (x)= m = s (s ( s (o (x)) )) (m раз при-
меняем s(x)) – и общерекурсивные, и частично рекурсивные, и примитивно рекурсивные.
2. |
Функция |
f (x, y)= x + y . Имеем |
x +0 = x = I12 (x, y), |
|||
x +(y +1) =(x + y)+1. Это есть рекурсия с |
помощью |
функций |
||||
g (x)= x и h (x, y, z)= s (z), т.е. f = R (g, h). |
|
|
||||
Проверка: f (x, 0) |
= g(x), f (x, y + 1) = s(f (x, y)) = h (x, y, f (x, y)). |
|||||
3. |
Функция |
f (x, y)= x y. |
Имеем f (x, 0)= x 0 = 0, |
x(y +1)= |
||
= xy + x. Это |
есть |
рекурсия |
с помощью функций g (x)= o(x), |
|||
h(x, y, z)= x + z , т.е. f = R(g, h). |
|
|
|
|||
Проверка: f (x, 0) |
= 0 = g (x), f (x, y + 1) = x + xy = h (x, y, f (x, y)). |
|||||
38
4. Функция f (x, y) = xy. Имеем f (x, 0) = x0 =1, f (x, y + 1) = x y+1 = x x y . Это есть рекурсия с помощью функций g(x)= s(o(x)), h(x, y,z)= x z , т.е. f = R(g, h).
5. |
Функция |
f = sg(x)= 0, |
если x = 0; |
Имеем |
sg(0)= 0 , |
||||
sg(x +1)=1. Это |
|
|
1, |
если x > 0. |
|
|
|
|
|
рекурсия, в которой g = o(x), h = s(o(x)), т.е. |
|||||||||
f = R(g, h). |
|
|
(x)= 1, |
если x = 0; |
|
|
|
|
|
6. |
Функция |
f = |
|
Имеем |
|
|
(0)=1, |
||
sg |
sg |
||||||||
|
|
|
|
0, |
если x > 0. |
|
|
|
|
sg(x +1)= 0. Это рекурсия, в которой g =1, h = o(x), т.е. f = R (g, h).
Все функции из приведенных примеров являются примитивно рекурсивными.
4.4. Способы доказательства вычислимости функций
Перечислим основные способы доказательства вычислимости функций. Пусть задана функция f, для которой необходимо определить, вычислима она или нет.
1.Написать программу машины Тьюринга или МПД, вычисляющую f, либо показать, что f принадлежит классу функций, вычислимость которых доказана.
2.Написать рекурсивную схему для f, показывающую, что f – частично рекурсивна.
3.Дать неформальное (но достаточно точное) описание алгоритма, вычисляющего f, и затем сослаться на тезис Черча.
В дальнейшем будем пользоваться третьим способом.
4.5.О совпадении классов вычислимых функций
Покажем теперь вычислимость на МПД частично рекурсивных функций.
Базисные функции o(n), s(n), Imn (x1,..., xn ) вычислимы на МПД командами Z(n), S(n), T(m, 1).
39
Теорема. |
О вычислимости суперпозиции. |
Пусть |
функции |
|||
g (y1,..., |
yn ), |
f1 (x1,..., xm ),…, fn (x1,..., xm ) вычислимы на МПД. |
||||
Тогда вычислима и функция h(x1,..., xm )= S (g, f1,..., fn ). |
|
|||||
Доказательство. Пусть G, F1,..., |
Fn – программы стандартного |
|||||
вида |
для вычисления функций |
g (y1,..., yn ), |
f1(x1,..., xm ),..., |
|||
fn (x1,..., xm ) |
соответственно. Напишем программу Н для вычисле- |
|||||
ния |
h. |
Положим t = max(n, m, r (G), r (F1),..., r (Fn )). |
Запомним |
|||
x1,..., xm |
в регистрах Rt +1,..., Rt +m , |
в регистрах |
Rt +m+1,..., Rt+m+n |
|||
запоминаем значения F1 (x1,..., xm ),..., Fn (x1,..., xm ) соответствен-
но. Указанные регистры не затрагиваются вычислениями по программам G, F1,..., Fn . Приведем программу H вычисления h:
T (1,t + 1)
T (2,t + 2)
…
T (m,t + m)
F1 (t + 1,...,t + m → t + m + 1)
…
Fn (t + 1,...,t + m → t + m + n)
G (t + m + 1,...,t + m + n → 1).
Вычисление по программе H происходит в соответствии со схе-
мой (рис. 4.1).
Очевидно, что вычисление H (x1,..., xm ) останавливается тогда и только тогда, когда заканчиваются вычисления каждой
Fi (x1,..., xm ), i = 1,n, и вычисление G (f1 (x1,..., xm ),..., fn (x1,..., xm )).
Следствие. Пусть f (y1,..., ym ) – вычислимая на МПД функция,
и xi1 ,..., xim – последовательность m переменных из |
x1,..., xn (воз- |
|||
можно |
с |
|
повторениями). Тогда функция |
h(x1,..., xn )= |
= f (xi |
,..., xi |
m |
) вычислима. |
|
1 |
|
|
||
40
