Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Теория алгоритмов в задачах информационной безопасности конспект лекций. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
15.08.2026
Размер:
736 Кб
Скачать

 

Начало (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,..., xn1, y)

вычислима на МПД. Тогда вычислима и функция

f (x1,..., xn )= μ y (g (x1,..., xn1, y)= xn ).

Доказательство. Пусть G – программа стандартного вида, вычисляющая функцию g. Пусть m = max(n +1, r (G)). Построим про-

грамму F для вычисления функции f по следующему алгоритму: вычислять g (x1,..., xn1, y) при y = 0, 1, 2,… до тех пор, пока не

найдется y, такой что g (x1,..., xn1, y)= xn , тогда y будет требуемым

выходом.

Помещаем x1,..., xn , y в регистры Rm+1,..., Rm+ n , Rm+n+1. Полагаем в начале y = 0. Промежуточное значение g (x1,..., xn1, 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 + 1m + 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 I2Is – соответствующая программа. Будем называть шагом вычисления выполнение одной команды програм-

мы. Для произвольных 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 , то обращением слова Р назо-

вем слово P1 = 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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]