Теория алгоритмов в задачах информационной безопасности конспект лекций. Учебное пособие
.pdf2.2. Суперпозиция машин Тьюринга
Существование суперпозиции. Пусть даны две машины Тьюринга T1 и T2, которые вычисляют соответственно словарные функции f1(ρ) и f2(ρ) в одном и том же алфавите. Тогда существует машина Тьюринга Т, которая вычисляет функцию f (ρ) = f2 (f1 (ρ)).
При этом для любого слова ρ функция f (ρ) |
определена в том |
и только том случае, когда определены |
функции f1(ρ) и |
f2 (f1 (ρ)). |
|
Построение программы. Программа машины Т строится следующим образом. Состояния машины T2 переобозначим так, чтобы они отличались от состояний машины T1. Начальное состояние
машины T1 объявляем начальным q1 для машины Т. Заключительное состояние q0(2) машины T2 объявляем заключительным q0 для машины Т. Заключительное состояние q0(1) машины T1 отождествляем с начальным состоянием q1(2) машины T2. Полученные
команды для обеих машин объединяем в одну программу. Рассмотрим начальную конфигурацию q1ρ. Поскольку
q1 = q1(1) – начальное состояние машины T1, то вначале Т работает
как машина T1, и если T1 применима к q(1)ρ, |
то на некотором шаге |
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
будет получена конфигурация q |
(1) f |
1 |
(ρ), но |
q(1) = q(2) – начальное |
|||||||||||
|
|
|
|
|
|
|
|
|
|
0 |
|
0 |
1 |
||
состояние для T2, и теперь Т действует как машина T2. Если T2 при- |
|||||||||||||||
менима к q0(1) f1(ρ), |
то на некотором шаге будет получена конфигу- |
||||||||||||||
рация q(2) f |
2 |
(f (ρ)), |
которая является заключительной для Т, так как |
||||||||||||
|
|
|
|
0 |
|
|
1 |
|
|
|
|
|
|
|
|
q(2) |
= q |
0 |
. |
Если T1 |
неприменима к |
|
q(1)ρ или T2 |
неприменима к |
|||||||
0 |
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
q (1) |
f |
1 |
(ρ), |
|
то Т неприменима к q ρ. |
|
|
|
|
||||||
0 |
|
|
|
|
|
|
|
|
1 |
|
|
|
|
||
Определение. Машина Т называется суперпозицией машин T1 |
|||||||||||||||
и T2. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Обозначение: T2 T1 . |
|
|
|
|
|
|
|||||||||
Схематически суперпозиция изображается так: |
|
||||||||||||||
|
|
|
|
|
|
|
|
|
ρ → f1 |
(ρ)→ f |
2 (f1 (ρ)). |
|
|
||
|
|
|
|
|
|
|
|
|
T |
T |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
21
2.3. Соединение машин Тьюринга
Пусть даны машины Тьюринга T1 и T2, вычисляющие словарные
функции f1 (ρ ) и f 2 (ρ) |
соответственно. Тогда существует машина |
|
Т, которая начальную конфигурацию |
q1ρ переводит в заключи- |
|
тельную q0 f1(ρ)* f2 (ρ), |
если f1(ρ) и |
f2 (ρ) определены, и не су- |
ществует в противном случае. Здесь « » – новый символ, не входящий в алфавиты машин T1 и T2.
Определение. Машина Т называется соединением машин T1 и
T2.
Обозначение: T1 T2.
Существование соединения машин. Существование машины Т вытекает из следующих неформально описываемых конструкций. Лента машины Т является двухэтажной. В качестве внешнего алфа-
a
вита Т берутся двухэтажные буквы , где a, b – буквы алфавитов
b
T1 и T2. Каждой букве a ставится в соответствие двухэтажная буква
|
^ |
Слову ρ = ai , , ai |
ставится в соответствие двухэтажное |
|
. |
||
a |
1 |
k |
|
|
|
||
^
слово
ai1
^
. Машина Т будет работать так:
aik
|
^ |
^ |
|
ai1 |
aik |
|
ai |
ai |
→ |
f |
(ρ) |
→ |
|||||
ai |
ai |
|
→ |
|
a |
|
→ |
1 |
f |
(ρ) |
k |
|
2 |
(ρ) |
|||
a |
i1 |
|
|
|
|
|
f |
|
|||||||||
|
1 |
|
k |
|
ik |
|
|
|
1 |
|
|
|
|
1 |
|
|
|
^ ^
→f1 (ρ)* f2 (ρ) .
Существование машин Тьюринга для реализации каждого шага очевидно.
2.4. Ветвление машин Тьюринга
Пусть даны машины Тьюринга T1 и T2, вычисляющие словарные функции f1 (ρ ) и f 2 (ρ) соответственно, заданные в одном алфави-
22
те. Тогда существует машина Тьюринга Т, которая начальную конфигурацию q1ε *ρ, где ε {0,1}, переводит в заключительную
q0 f1 (ρ), если, ε = 0 и в q0 f2 (ρ), если ε = 1.
Определение. Машина Т называется разветвлением машин T1 и T2.
Обозначение: T1 T2.
Представим разветвление схематически (рис. 2.2).
|
|
ε = 0 |
|
|
f1(ρ) |
|
|
T1 |
ερ |
|
|
T1 |
T2 |
ε = 1 |
|
|
|
|
|
f2(ρ) |
|
|
T2 |
Рис. 2.2. Схема разветвления машин Тьюринга
Существование разветвления. Существование машины Т вытекает из следующих конструкций. Пусть q1(1) и q1(2) – начальные
состояния машин T1 и T2 соответственно. Считаем, что множества внутренних состояний машин не пересекаются. Объединим программы машин T1 и T2, добавим новое начальное состояние q1 и
добавим следующие команды:
q10→ q1(1) ^ R ;
q1(1) → q1(1) ^ R ;
q11→ q1(2) ^ R ;
q1(2) → q1(2) ^ R .
Теперь заключительные состояния q0(1) и q0(2) машин T1 и T2 объединим, а полученное состояние q0 будем считать заключительным для Т. Если q1ε *ρ – начальная конфигурация, то машина
Т через два шага перейдет в конфигурацию q1(1)ρ, если ε = 0, и в
23
конфигурацию q1(2)ρ, если ε = 1, а затем будет работать как T1 или T2 соответственно.
2.5. Реализация цикла на машине Тьюринга
Понятие цикла. Важным приемом в программировании является разбиение решаемой задачи на циклы. После выполнения каждого цикла проверяется выполнимость некоторого условия. Если условие выполнено, то выдается результат, если нет, то цикл повторяется.
Точнее, процедура задается так. Пусть имеем словарные функции f1(ρ) и f2 (ρ) и некоторый предикат Ф на словах, его значе-
ния обозначим 0 и 1.
Предикат – функция, значения которой являются высказываниями об n-х объектах, представляющих значения аргументов.
Формально можно записать так: Ф : M n → Ω, где n 0 , M n – де-
картова степень непустого множества M, Ω = {истина, ложь}.
Для произвольного слова ρ проверяется, верно ли соотношение: Ф(ρ) = 1. Если да, то выдается ответ f1 (ρ), если иначе, то вычис-
ляется ρ′ = f2 (ρ). Затем проверяется, верно ли, что Φ (ρ′)= 1. Если да, то выдается ответ f1(ρ′), иначе вычисляется ρ′′ = f2 (ρ′), и т.д.
Существует машина Тьюринга Т, реализующая данную процедуру. Пусть существуют машины Тьюринга T1, T2 и TΦ для вычис-
ления функций f1 (ρ), f2 (ρ) и предиката Ф соответственно. Пусть
T0 – машина, которая оставляет всякое слово ρ без изменения. Машина Т строится в соответствии со схемой (рис. 2.3).
Заключительные состояния q 0(1) и q0(2) машин T1 и T2 не объеди-
няются, а считаются различными. Состояние q0(1) объявляется за-
ключительным для Т, |
а q0(2) отождествляется с начальным состоя- |
|
нием q1 |
для машины Т. Заключительное состояние для машины |
|
TΦ *T0 |
объявляется |
начальным для T1 T2. Из изложенного |
24
следует, что если T1 T2 работает как T1, то полученное ею значение является выходом Т, если же T1 T2 работает как T2, то полученное ею значение снова подается на вход машины Т.
|
|
|
ε = 1 |
|
|
|
f1(ρ) |
ρ |
ερ |
T2 |
|
TФ T0 |
T1 |
ε = 0 |
|
|
|
|
f2(ρ) |
Рис. 2.3. Схема цикла для машины Тьюринга
Пример реализации цикла. Используя данный прием, можно построить машину Тьюринга для перевода произвольного числа n ≥ 1, заданного в унарной записи, т.е. в виде 1n + 1, в его двоичную запись, начинающуюся с 1.
Входной алфавит машины есть A = {^, |, 0, 1}. Вначале стирается одна палочка, затем работа осуществляется с циклами (1 ≤ τ ≤ m). К концу каждого цикла τ машина находится в конфи-
гурации
q 1α α |
|| |. |
1 t |
|
двоичная |
n−τ |
запись числа |
τ |
В течение цикла τ стирается одна палочка, и к числу τ – 1 в двоичной записи прибавляется 1. Однако формальное описание машины Тьюринга требует большого числа технических деталей, поэтому мы их опускаем.
Таким образом, язык тьюрингова программирования содержит основные операторы программирования на алгоритмических языках и позволяет устраивать последовательное выполнение программ, параллельное их соединение, использовать условные переходы (если Ф, выполнить f1, иначе f2), реализовывать цикл (пока Ф, выполнять f1, иначе f2). Это является основанием для тезиса Тьюринга.
25
Тезис Тьюринга. Для всех процедур, претендующих называться алгоритмическими, при подходящем кодировании существует реализующая их машина Тьюринга.
Данный тезис доказать нельзя, поскольку здесь используется интуитивное понятие алгоритма. Подтверждением тезису является математическая практика, а также то, что описание алгоритма в любой другой алгоритмической модели может быть сведено к описанию его в виде машины Тьюринга. Однако принятие тезиса Тьюринга позволяет истолковывать утверждения о несуществовании машин Тьюринга для решения конкретных задач как утверждения о несуществовании алгоритмов вообще.
26
Лекция 3. Машина произвольного доступа
На лекции рассматриваются основные понятия, связанные с другой теоретической алгоритмической моделью, представляющей алгоритм детерминированным устройством, машиной произвольного доступа. Описываются принципы функционирования машины, приводятся примеры вычислимых функций. Дается понятие тезиса Черча, позволяющего истолковывать утверждения о несуществовании машины произвольного доступа для решения конкретных задач как утверждения о несуществовании соответствующих алгоритмов.
Ключевые слова: машина произвольного доступа (МПД); команда; обнуление; прибавление единицы; переадресация; условный переход; программа; вычисление; конфигурация; функционирование; ранг программы; композиция программ; тезис Черча.
Введение. Опишем другую алгоритмическую модель, представляющую собой идеализированную ЭВМ, предложенную в 70-х гг. XX в. с целью моделирования реальных вычислительных машин и анализа сложности вычислений.
3.1.Команды и программа машины произвольного доступа
Понятие МПД. Машина произвольного доступа (МПД) состоит из бесконечного числа регистров R1, R2, …, в каждом из которых может быть записано число из множества 0 .
Пусть rn – число, записанное в регистре Rn , n .
Определение. Состоянием или конфигурацией машины называ-
ется последовательность чисел (r1, r2 ,...).
Понятие функционирования МПД. Функционирование машины заключается в изменении конфигураций путем выполнения команд в порядке их написания.
27
Команды МПД |
|
1. |
Команда обнуления. Для всякого n имеется команда |
Z (n). |
Действие команды Z (n) заключается в замене содержимого |
регистра Rn на 0. Содержимое других регистров не меняется. Обозначение действия Z (n):
rn := 0.
2. Команда прибавления единицы. Для всякого n имеется команда S (n). Действие команды S (n) заключается в увеличении содержимого регистра Rn на 1. Содержимое других регистров не меняется. Обозначение действия S (n):
rn := rn + 1.
3. Команда переадресации. Для всех m, n имеется коман-
да T (m,n). Действие команды T (m,n) заключается в замене содержимого регистра Rn числом rm , хранящимся в регистре Rm . Содержимое других регистров не меняется (включая и Rm ). Обозначение действия T (m,n):
rn:= rm или rm → Rn .
4. Команда условного перехода. Для всяких m, n, q имеет-
ся команда J (m,n,q). Действие этой команды заключается в сле-
дующем:
а) сравнивается содержимое регистров Rn и Rm ;
б) если rm = rn , то МПД переходит к выполнению команды с
номером (идентификатором) q в списке команд;
в) если rm ≠ rn , то МПД переходит к выполнению следующей
команды в списке команд.
Определение. Программа МПД – конечная упорядоченная последовательность команд указанных типов.
3.2. Вычисление на машине произвольного доступа
Пусть зафиксирована начальная конфигурация K0 = (a1, a2,...) и программа P = I1I2...Is (Ij – команда или ее идентификатор).
28
Тогда однозначно определена последовательность конфигураций K0, K1,..., где K1 – конфигурация, полученная из K0 после выпол-
нения команды I1, и т.д. Пусть на некотором шаге выполнена команда It и получена конфигурация K t . Тогда, если It не является командой условного перехода, то следующая конфигурация Kt +1 получается из Kt применением команды I t +1 . Если It – команда условного перехода, т.е. It = J (m, n, q), то Kt +1 получается из Kt применением команды Iq , если в конфигурации Kt rm = rn , и ко-
манды It+1 , если rm ≠ rn .
Определение. Вычисление – последовательность конфигураций. Обозначение: P (a1, a2, …) =P(K0).
Условия остановки вычисления (работы машины):
1. Если выполнена последняя команда, т.е. t = s и It – не коман-
да условного перехода;
2. МПД останавливается на It , если It – команда условного пе-
рехода, т.е. It = J (m, n, q), rm = rn , в конфигурации K t , если q > s; 3. МПД останавливается в конфигурации K t , если It = J(m, n, q),
rm ≠ rn и t = s.
Определение. Если вычисление остановилось, то последовательность (r1,r2,...) содержимого регистров R1,R2, называется
заключительной конфигурацией. |
|
Определение. Если последовательность (r1, r2,...) конечна, то |
|
говорят, что |
МПД применима к начальной конфигурации |
K0 = (a1, a2,...), |
и записывают: P(a1, a2, …)↓ или P (K0)↓ . В про- |
тивном случае (т.е. когда последовательность (r1, r2,...) бесконеч-
на) говорят, что МПД неприменима к конфигурации K0 =(a1,a2,...),
и записывают: P(a1, a2, …)↑ или P (K0)↓ .
Будем рассматривать только такие начальные конфигурации, в которых имеется конечное число элементов, отличных от нуля, и
для таких конфигураций будем писать (a1, a2, ,an ) вместо
(a1, a2, , an ,0, ).
29
Очевидно, что для любого t конфигурация Kt , получаемая на
t-м шаге, будет содержать конечное число отличных от нуля элементов, если этим свойством обладает конфигурация K0.
Теперь условимся, что понимать под вычислением функций на МПД. Рассмотрим частичные функции f типа f : n0 → 0 . Пусть
P = I1I2...I s – фиксированная программа, и a1,..., an , b 0 .
Определение. Говорят, что вычисление дает результат b, если
P (a1, , an )↓ и в заключительной конфигурации r1 = b.
Обозначение: P(a1, , an )↓ b .
Определение. Говорят, что программа Р вычисляет функцию f,
если для любых чисел a1,..., an ,b 0 , P(a1, , an )↓ b f определена на наборе (a1,…, an) и принимает значение b, т.е.
f (a1,…, an) = b.
Определение. Функция f вычислима (на МПД), если существует программа Р, которая вычисляет f.
Обозначение: Е – класс вычислимых (на МПД) функций. Заметим, что любая программа Р для любого n ≥ 1 на начальных
конфигурациях вида K0 = (a1, a2, , an ,0, ) определяет n-мест-
ную частичную функцию fP(n) (x1, , xn ) такую, что для всех a1,..., an 0 :
f |
(n) (a , , a |
|
)= |
|
если P(a1, , an )↓ и P(a1, , an )↓ b; |
||
n |
b, |
||||||
|
P 1 |
|
|
определена, если P (a , , a |
|
)↑ . |
|
|
|
|
|
не |
n |
||
|
|
|
|
|
1 |
|
|
Очевидно, что разные программы могут вычислять одну и ту же функцию.
Распространим понятие вычислимости на функции, отличные от рассматриваемого типа.
Пусть D – некоторое множество, и f :Dn → D – функция от n переменных. Зафиксируем эффективное кодирование множества D числами из множества 0 , т.е. зададим инъективное отображение
α :D → 0 . Пусть α −1 – обратное отображение, оно определено на
30
