Теория алгоритмов в задачах информационной безопасности конспект лекций. Учебное пособие
.pdf
|
Начало (x1,…, xm, 0,…) |
|
|
|
|
Запомнить x1,…, xm в Rt+1,…, Rt+m |
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
f1(x1,…, xm) → Rt+m+1 |
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
… |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
g(f1,…, fn) → R1 |
|
|
|
|
|
fn(x1,…, xm) → Rt+m+n |
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
Рис. 4.1. Схема вычисления суперпозиции |
|
|
|
|
|||||||||
|
|
|
частично рекурсивных функций |
|
|
|
|
|
||||||||
|
|
Доказательство. |
|
Если |
|
x = (x ,..., x |
n |
), |
то |
h (x ,.., x |
n |
)= |
||||
= f (Iin (x),..., Iin (x)), |
|
|
|
1 |
|
|
1 |
|
|
|||||||
и потому функция h вычислима. |
|
|
|
|
||||||||||||
1 |
m |
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
Теорема. |
О вычислимости рекурсии. |
Пусть функции |
||||||||||||
g (x1,..., xn ), |
h(x1,..., xn , y, z) |
вычислимы на МПД. Тогда функция |
||||||||||||||
f = R (g, h) вычислима.
Доказательство. Пусть G и Н – программы стандартного вида для вычисления функций g и h. Построим программу F, вычисля-
ющую функцию f = R (g, h).
По начальной конфигурации (x1,..., xn , y, 0,...) по программе G
вычисляется |
f (x1,..., xn ,0) = g (x1,..., xn ). |
Теперь, |
если y ≠ 0, то |
|
применяем |
(многократно) программу |
Н для |
нахождения |
|
f (x1,..., xn ,1), f (x1,..., xn , 2),..., f (x1,..., xn , y). |
Положим m = |
|||
= max(n + 2, |
r (G), r (H )). Запоминаем |
x1,..., xn , |
y, |
в регистрах |
Rm+1,..., Rm+n , Rm+n+1. Номер цикла k, где k = 0, 1,…, y помещаем в Rm+n+2 . Промежуточное значение f (x1,..., xn , k) помещаем в
Rm+n+2 .
Приведем схему работы программы МПД (рис. 4.2).
41
Начало (x1,…, xn, y, 0,…) |
|
|
|
1. Запомнить x1,…, xn, y в Rm+1,…, Rm+n, Rm+n+1 |
|
|
||||||
k = 0 |
|
|
|
2. Запомнить k в Rm+n+2 |
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
f(x1,…, xn, 0) = g(x1,…, xn) → Rm+n+3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
k = y ? |
|
Да |
||||
|
|
k++ |
|
|
|
|||||||
|
|
|
|
(rm+n+2 = rm+n+1 ?) |
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
Нет |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
f (x1,…, xn, y) → R1 |
|||||
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
(rm+n+3 → R1) |
||||
|
|
|
|
|
|
|
|
останов |
||||
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|||||||
|
|
|
|
f (x1,…, xn, k+1) = h(x1,…, xn, k, f (x1,…, xn, k)) → Rm+n+2 |
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
Рис. 4.2. Схема вычисления рекурсии частично рекурсивных функций
42
Программа F для вычисления f (здесь t = m + n):
T (1, m + 1)
…
T (n + 1, m + n + 1) G [1, 2, …, n → m + n + 3]
Iq: J (t + 2, t + 1, p)
H [m + 1, … m + n, t + 2, t + 3 → t + 3] S (t + 2)
J (1, 1, q) Ip: T (t + 3, 1)
Следовательно, функция f вычислима. |
|
Теорема. О |
вычислимости минимизации. Пусть функция |
g (x1,..., xn−1, y) |
вычислима на МПД. Тогда вычислима и функция |
f (x1,..., xn )= μ y (g (x1,..., xn−1, y)= xn ).
Доказательство. Пусть G – программа стандартного вида, вычисляющая функцию g. Пусть m = max(n +1, r (G)). Построим про-
грамму F для вычисления функции f по следующему алгоритму: вычислять g (x1,..., xn−1, y) при y = 0, 1, 2,… до тех пор, пока не
найдется y, такой что g (x1,..., xn−1, y)= xn , тогда y будет требуемым
выходом.
Помещаем x1,..., xn , y в регистры Rm+1,..., Rm+ n , Rm+n+1. Полагаем в начале y = 0. Промежуточное значение g (x1,..., xn−1, y)
помещаем в Rm+ n+ 2. Вычисление функции f происходит в соответ-
ствии со схемой (рис. 4.3).
Программа для вычисления функции f:
T (1, m + 1)
…
T (n, m + n)
Ip: G [m + 1,..., m + n − 1, m + n + 1→ m + n + 2]
J (m + n, m + n + 2, q)
43
Начало (x1,…, xn, 0,…) |
|
1. |
Запомнить x1,…, xn в Rm+1,…, Rm+n |
y = 0 |
|
2. |
Запомнить y в Rm+n+1 |
g(x1,…, xn–1, y) → Rm+n+2
|
g(x1,…, xn-1, y) = xn ? |
|
Да |
|
|
y++ |
|
|
|||
|
|
|
|||
(rm+n+2 |
= rm+n ?) |
|
|
|
|
|
|
|
|
||
|
Нет |
|
|
|
|
|
|
y → R1 |
|
||
|
|
|
|
||
|
|
|
останов |
|
|
|
|
|
|
|
|
Рис. 4.3. Схема вычисления минимизации частично рекурсивных функций
44
S (m + n +1)
J (1,1, p)
Iq: T (m + n +1,1)
Получаем, что функция f вычислима.
Далее приведем следствие из всех трех доказанных теорем. Следствие. Частично рекурсивные функции вычислимы на
МПД, т.е. Ч Е.
Покажем теперь частичную рекурсивность вычислимых функций.
Теорема. О частичной рекурсивности функций, вычислимых на МПД. Всякая вычислимая на МПД функция является частично рекурсивной.
Доказательство. Пусть f (x1,..., xn ) – вычислимая на МПД
функция, и пусть P = I1 I2…Is – соответствующая программа. Будем называть шагом вычисления выполнение одной команды програм-
мы. Для произвольных x = (x1,..., xn ) и t 0 щие функции, связанные с вычислением P (x):
|
r |
(содержимое R ) после t шагов в P(x),если P(x) |
|||||
c(x,t)= |
1 |
1 |
|
|
|
|
|
|
не остановилось к этому моменту; |
||||||
|
r |
(содержимое R ), если P(x) остановилось раньше; |
|||||
|
|
1 |
1 |
|
|
после t шагов в P (x), |
|
|
номер следующей |
команды |
|||||
j (x, t)= |
|
если P (x) не остановилось к этому моменту; |
|||||
|
0, если P (x) остановилось после t шагов или раньше. |
||||||
|
|
|
|
|
|
|
|
Таким образом, c (x, 0)= x |
, j (x |
, 0)=1. Очевидно, |
что функции |
||||
c (x,t), |
|
|
1 |
|
|
|
|
j (x,t) всюду определены. |
Найдем теперь выражение для |
||||||
f (x) через введенные функции. Если значение f (x) |
определено, |
||||||
то P (x) останавливается после t0 |
шагов, где t0 = μ t |
(j (x, t,)= 0), |
|||||
поэтому |
f (x)= c (x,t0). Если же значение f (x) не определено, то |
||||||
45
P (x) |
не останавливается, и тогда j (x,t)≠ 0 для любых t 0, |
||||
поэтому μ t (j (x, t)= 0) не определено. Следовательно, во всех слу- |
|||||
чаях t0 = μ t (j (x, t)= 0). |
j (x,t) |
|
|||
Теперь, если убедиться, что функции c (x,t) и |
частично |
||||
рекурсивны, то таковой будет и функция f (x). |
Ясно, |
что суще- |
|||
ствует |
неформальный алгоритм вычисления значений |
функций |
|||
c (x,t) |
и j (x,t). |
Для этого нужно по заданным x, t |
написать по- |
||
следовательность |
конфигураций K0 → K1 → … → Kt |
и |
выписать |
||
содержимое регистра R1 и номер выполняемой на шаге t + 1 команды. По тезису Черча функции c (x,t) и j (x,t) частично рекурсив-
ны, и, значит, функция |
f (x) является частично рекурсивной. |
|
Замечание. |
Более |
точный анализ показывает, что функции |
c(x,t) и j (x,t) |
являются примитивно рекурсивными. |
|
Следствие. Классы функций Ч и Е совпадают.
46
Лекция 5. Нормальные алгоритмы
Лекция посвящена изучению еще одного типа алгоритмических моделей, который связывает понятие алгоритма с преобразованием слов в произвольных алфавитах, – нормальных алгоритмов. Показывается, что класс функций, вычислимых по Маркову, совпадает с классом функций, вычислимых по Тьюрингу, с классом частично рекурсивных функций и с классом функций, вычислимых на МПД.
Ключевые слова: формулы подстановки; простая формула; заключительная формула; нормальный алгоритм; схема нормального алгоритма; вычислимые по Маркову функции; обращение слова; принцип нормализации.
Введение. На лекции обсуждается еще один подход к уточнению понятия алгоритма, предложенный А.А. Марковым и называемый, «нормальные алгоритмы». В этом случае неформальное понятие эффективности связывается с переработкой слов в некотором конечном алфавите в соответствии с определенными правилами. В качестве элементарного преобразования используется подстановка одного слова вместо другого. Множество таких подстановок определяет схему алгоритма. Правила, определяющие порядок применения подстановок, а также правила останова являются общими для всех нормальных алгоритмов.
5.1. Схема нормального алгоритма
Пусть А = {a1, …, an} – алфавит.
Определение. Если P, Q – слова в алфавите А (возможно, пустые), то выражения P → Q и P → Q называются формулами подстановки в алфавите А, причем знак «→» не входит в алфавит А.
Определение. Формула P → Q называется простой, а формула
P → Q – заключительной.
Обозначим через P → ( )Q любую из этих формул. Определение. Произвольная конечная последовательность та-
ких формул называется схемой SN нормального алгоритма N.
47
Таким образом, схема нормального алгоритма имеет вид
P1 →()Q1
SN : P2 →()Q2
...
Pm →()Qm
Схема SN определяет следующий алгоритм N, перерабатывающий слова в алфавите А, т.е. вычисляющий словарную функцию в алфавите А. Говорят, что слово Р входит в слово W, если существуют слова V1 и V2 (возможно, пустые) такие, что W = V1 P V2. Если слово V1 имеет наименьшую длину из всех слов такого вида, то говорят о первом вхождении Р в слово W.
5.2. Вычислимые по Маркову функции
Пусть дано произвольное слово К в алфавите А.
Определение. Если ни одно из слов P1,…, Pm не входит в слово К, то говорят, что схема SN не применима к К.
Обозначение: SN : – |.
Если схема не является неприменимой к К, то среди слов P1, …, Pm существует слово Pi, входящее в К.
Пусть t – минимальное число такое, что Pt входит в К, и пусть К = V1 Pt V2, где V1 имеет минимальную длину, т.е. берется первое вхождение Pt в К. Тогда определим слово W = V1 Qt V2.
Определение. В этом случае говорят, что схема SN применима к К.
Обозначение: SN : К W или SN : К W – в зависимости от того, применялась простая формула или заключительная соответственно.
Через SN : К | W обозначим случай, когда существует конечная последовательность слов W0, W1, … Wk в алфавите А такая, что К = W0, W = Wk , и выполнено
SN : W0 W1, SN : W1 W2, …, SN : Wk – 1 Wk либо SN : Wk – 1 Wk.
48
Первый случай можно обозначить как SN : К | W. Определение. Нормальный алгоритм N со схемой SN вычисляет
словарную функцию Fs : A* → A*, где А* – множество слов в алфавите А, если для любых слов P, Q A*
F (P) = Q либо SN :P| Q и SN :Q −; s либо SN :P| Q.
Опишем работу нормального алгоритма. Если дано слово Р, то находим в схеме алгоритма SN первую формулу Pt → ( )Qt такую, что Pt входит в Р, и производим замену первого вхождения Pt словом Qt. Пусть W1 – результат этой подстановки. Если применяемая формула Pt ( )Qt – заключительная, то работа алгоритма заканчивается, и слово W1 есть результат работы алгоритма. Если применяемая формула Pt → Qt – простая, то к слову W1 применяем описанную процедуру. Если на некотором шаге получено слово Wi, к которому не применима схема алгоритма SN, т.е. ни одно из слов не входит в Pj, j {1,...,m}, то работа алгоритма заканчивается, и
Wi есть результат работы алгоритма. Если описанный процесс не заканчивается, то, по определению, алгоритм не применим к слову Р.
Определение. Словарная функция f в алфавите А, f : A* → A* называется вычислимой по Маркову, если существует схема нормального алгоритма SN в алфавите В А, вычисляющая f, т.е. Fs = f.
Обозначение: М – класс функций, вычислимых по Маркову.
5.3. Примеры нормальных алгоритмов
Приведем примеры нормальных алгоритмов.
Пример 1. А = {a1, a2}. Схема SN : a1 → ^ . Данный алгоритм a2 →a2
оставляет пустое слово «^» без изменения и всякое слово Р в алфавите А переводит в слово Q, полученное из Р путем вычеркивания первого вхождения буквы а1. Алгоритм N не применим к словам, не содержащим вхождений символа а1.
49
Пример 2. А = {a1, …, an}.
Схема
a1 → ^
a2 → ^
SN : ... .
an → ^
Данный алгоритм переводит всякое слово Р в алфавите А в пустое слово.
Пример 3. А = {1}. Схема SN : ^→ 1. Данный алгоритм перево-
дит всякое слово Р = 1...1 |
в слово Q = 1...1 |
. Если представить |
|
|
|
x |
x+1 |
|
натуральное число n словом 1n + 1, то данный алгоритм вычисляет функцию f (n) = n + 1.
Пример 4. A = {a1, …, an}. Схема SN : ^→ ^. Данный алгоритм вычисляет функцию Fs (P) = P для любого слова Р. Если же взять схему SN : ^→^ , то данный алгоритм вычисляет нигде не определенную функцию.
Пример 5. A = {a1,…, an}.
Определение. Если P = ai1 ,..., aik , то обращением слова Р назо-
вем слово P−1 = aik ,..., ai1 .
Рассмотрим алфавит В = А {α, β} и соответственно схему SN:
1)αα → β;
2)βa → aβ, для любых a A;
3)βα → β;
4)β → ^;
5)αab → bα a, для любых a, b A;
6)^ → α.
Покажем, что данный алгоритм N осуществляет обращение слов в алфавите А.
Пусть P = a j0 ,..., a jk |
– слово в алфавите А. Тогда |
|
|
|
|
|
|||||||||||||
P |
|
αP |
|
a j |
αa j |
...a j |
|
( |
|
) |
a j |
a j |
α.a j |
a j |
..a j |
|
( |
|
) |
|
(по6) |
|
(по 5) |
1 |
0 |
|
k |
|
1 |
2 |
0 |
3 |
|
k |
|
||||
|
|
|
|
|
|
по 5 |
|
|
по 5 |
||||||||||
50
