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

Учебное пособие 1518

.pdf
Скачиваний:
2
Добавлен:
30.04.2022
Размер:
1.29 Mб
Скачать

конфигурация Т1 легко превращается в стандартную начальную конфигурацию для Т2.

Пример: Машина Т+коп) вычисляет функцию f(x)=2x для x 0. При этом машина Ткоп строит двухкомпонентный вектор, а Т+ вычисляет функцию от двух переменных.

Имеет место важный факт. Оказывается, что для вычисления на машине Тьюринга достаточно, чтобы лента была бесконечна только в одну сторону, например, вправо. Такая лента называется правой полулентой. Это следует из теоремы:

Теорема: Для любой машины Тьюринга Т существует эквивалентная ей машина ТR с правой полулентой.

Может быть предложено 2 идеи построения такой машины:

1)всякий раз, когда головке прежней машины надо зайти за левый край ленты, новая машина предварительно сдвинет все написанное (вместе с головкой) на клетку вправо;

2)лента „„перегибается„„ пополам. При этом ячейки правой половины размещаются, например, в нечетных ячейках, а ячейки левой половины – в четных.

Рассмотрим теперь вычисление предикатов на машинах Тью-

ринга.

Машина Т вычисляет предикат Р( ) ( -слово в Аисх), если

Т( )=

, где =И, когда Р( ) истинно и =Л, когда Р( ) ложно. Если

же Р(

) не определено, то машина Т, как и при вычислении функ-

ций, не останавливается. При обычном вычислении предиката уничтожается , что может оказаться неудобным, если после Т должна работать другая машина. Поэтому вводится понятие вычисления с восстановлением: машина Т' вычисляет Р( ) с восстановлением, если Т( )=. Если имеется машина Т, вычисляющая Р( ), то имеется и Т', вычисляющая Р( ) с восстановлением.

Возникает вопрос, для всех, ли процедур, претендующих на алгоритмичность, т. е. эффективных процедур, могут быть построены реализующие их машины Тьюринга? Ответ на этот вопрос содержится в тезисе Тьюринга: „„Всякий алгоритм может быть реализован машиной Тьюринга”. Это не теорема и не постулат, а утверждение, связывающее теорию с теми объектами, для описания которых она построена. По характеру тезис напоминает гипотезу физики об адекватности математических моделей физическим явлениям, которые они описывают.

51

I mn .

4.5. Рекурсивные функции

Всякий алгоритм исходным данным, в случае, если он определен на них, ставит в соответствие результат. Поэтому с каждым алгоритмом однозначно связана функция, которую он вычисляет. Верно ли обратное: для всякой функции имеется алгоритм, вычисляющий еѐ? Оказывается, что нет. Тогда возникает вопрос; для каких функций алгоритмы существуют?

Исследование этих вопросов привело к созданию теории рекурсивных функций. В этой теории принят конструктивный финитный подход, основной чертой которого является то, что множество таких функций строится из конечного числа исходных объектов – базиса, с помощью простых операций, эффективная выполнимость которых достаточно очевидна. Операции над функциями называются операторами.

Займемся теперь конкретным выбором средств, с помощью которых будут строиться вычислимые функции. Очевидно, к вычислимым функциям следует отнести все числа: 0,1,2…. Однако в прямом включении бесконечного множеств констант нет необходимости. Достаточно одной константы 0 и функции следования f(x)=x+1, которую обозначают х , чтобы получить весь натуральный ряд. Кро-

ме того, в базис включим семейство { I mn } функций тождества (или введения фиктивных переменных):

I mn (x1,…,xn)=xm

(m n)

Мощным средством получения новых функций из уже имею-

щихся является суперпозиция. Оператором суперпозиции

S mn (h,g1,…,gm) называется подстановка в функцию от m переменных

функции от n переменных.

Например, для функций h(x1,…,xm),g1(x1,…,xn),…, gm(x1,…,xn)

S mn (h,g1,…,gm)=h(g1(x1,…,xn),…, gm(x1,…,xn)).

Это определение порождает семейство операторов суперпозиции { S mn }. Благодаря функциям тождества стандартизация суперпозиции не уменьшает ее возможностей: любую подстановку функций в функции можно выразить через S mn и

Пример 4.5:

f(x1,x2)=h(g1(x1,x2), g2(x1)) в стандартном виде запишется так:

52

f(x1,x2)= S 22 (h(x1,x2), g1(x1,x2), S 21 ( I12 (x1,x2), g2(x1), g3(x1))),

где g3(x1)- любая функция.

Используя подстановку и функции тождества, можно представлять и отождествлять аргументы в функции:

f(x2,x1, x3,…, xn)=f( I 22 (x1,x2), I12 (x1,x2), x3,…, xn), f(x1,x1, x3,…, xn)=f( I12 (x1,x2), I12 (x1,x2), x3,…, xn).

Таким образом, если заданы функции I mn и операторы S mn , то

можно считать заданными всевозможные операторы подстановки функций в функции, а так же переименования, перестановки и отождествления переменных.

Еще одно семейство операторов – это операторы примитив-

ной рекурсии. Оператор примитивной рекурсии Rn определяет

(n+1) – местную функцию f через n-местную функцию g и (n+2)-ме- стную функцию h следующим образом:

f(x1 ,

,xn ,0 )

g(x1 , ,xn

),

 

 

 

(4.2)

f(x1 ,

,xn ,y

1) h(x1 ,

,xn ,y,f(x1 , ,xn ,y)).

Пара уравнений (4.2) называется схемой примитивной рекурсии. Тот факт, что f определена схемой (4.2), выражается равенством f(x1,…,xn)=Rn(g,h). В случае, когда h=0, т.е. определяемая функция f является одноместной, схема (4.2) принимает вид:

f(0)=с,

(4.3)

f(y+1)=h(y,f(y)), где с=const.

Схемы (4.2) и (4.3) определяют f рекурсивно не только через другие функции g и h, но и через значения f в предшествующих точках. Для вычисления f(x1,…,xn,k) понадобится (k+1) вычисление по схеме (4.2) для y=0,1,…,k.

Пример 4.6: Записать в стандартном виде n!.

f( 0 ) 1,

h(y,z) (y 1)z y z,

f(y 1) (y 1)f(y).

53

Индуктивное определение примитивно-рекурсивной функции.

1.Функции 0, хи I mn для всех натуральных m и n, где

mn являются примитивно – рекурсивными.

2.Если g1(x1,…,xn),…,gm(x1,…,xn), h(x1,…,xm) – прими-

тивно-рекурсивные, то S mn (h,g1,…,gm) – примитивно-рекурсивная функция для всех m, n N.

3.Если g1(x1,…,xn) и h(x1,…,xn,y,z) примитивно-ре- курсивные, то Rn(g,h)- примитивно-рекурсивная функция.

4.Других примитивно-рекурсивных функций нет.

Пример 4.7:

1) Сложение f+(x,y)=x+y примитивно-рекурсивно f+(x,0)=x= I11 (x)

f+(x,y+1)= f+(x,y)+1= (f+(x,y)) ,

значит,

f+(x,y)=R1( I11 (x) ,h(x,y,z)), где h(x,y,z)=z =z+1.

2)Умножение f (x,y)=xy примитивно-рекурсивно f (x,0)=0

f (x,y+1)= f (x,y)+х= (f (x, f (x,y))

3)Возведение в степень fехр(x,y)=xу примитивно-рекурсивно

fехр(x,0)=1

fехр(x,y+1)= х xу = (f (x, fехр(x,y))

Пример 4.8: Вычитание.

Определим функцию х÷y (арифметическое или урезанное вычитание) так:

x y

x y,

если x

y

0,

если x

y

 

Примитивно-рекурсивными являются следующие функции:

1)f(x)= x÷1 Определяется схемой: f(0)= 0÷1=1

f(y+1)= y.

2)f(x,y)=x÷y :

54

f(x,0)=x

f(x,y+1)= x÷(y+1)= (x÷y) ÷1=f(x,y) ÷1.

Для определения функции из пункта 2) используется функция из пункта 1).

3) f(x,y)=|x-y|=(x÷y)+(y÷x);

4) sg(x)

0,

если x

0

:

1,

если x

0

sg(0)=0

sg(x+1)=1

5)min(x,y)=x (x y) max(x,y)=y+(x y)

Спомощью функции sg(x) и ее отрицания 1-sg(x) построим примитивно-рекурсивное описание функций, связанных с делением.

Пример 4.9: Деление

1) Функция r(x,y) – остаток от деления у на х: r(x,0)=0 r(x,y+1)=(r(x,y,)+1)sg(|x-(r(x,y)+1)|)

Смысл: если у+1 не делится на х, то sg(|x-(r(x,y)+1)|)=1 и r(x,y+1)=r(x,y,)+1; если же у+1 делится на х, то r(x,y+1)=sg(|x- (r(x,y)+1)|)=0

2) Функция q(x,y)=[y/x] – целая часть дроби у/x: q(x,0)=0

q(x,y+1)=q(x,y)+ sg (|x-(r(x,y)+1)|).

Если у+1 делится на х, то q(x,y+1) на единицу больше, чем q(x,y), если нет, то q(x,y+1)= q(x,y).

В рекурсивных описаниях функций из примера 4.9 отчетливо видны логические действия: проверка условия (делимость у+1 на х) и выбор дальнейшего хода вычислений в зависимости от истинности условия.

Из функций примеров 4.7 и 4.8 легко получается примитивная рекурсивность логических функций, т.е. числовых функций на множестве {0;1}, которые ведут себя как логические.

Действительно:

55

x 1 x

x y max( x; y)

(4.4)

x y min(x; y).

Из полноты этого множества функций и того, что суперпозиция является примитивно-рекурсивным оператором, следует примитивная рекурсивность всех логических функций.

Определение: Характеристической функцией предиката R(x1, x2,…, xn) будем называть функцию:

 

 

1,

если R(x1 , x2 ,..., xn ) выполняется

R

(x1 , x2

,..., xn )

если нет

 

 

0,

Предикат называется примитивно-рекурсивным, если его характеристическая функция примитивно-рекурсивна. В силу соотношений (4.4), если предикаты Р1,…,Рк примитивно-рекурсивны, то и любой предикат, полученный из них с помощью логических операций примитивно-рекурсивен.

Пример 4.10: Предикаты

1. Предикат Pdn (x) „„х делится на n” примитивно-ре- курсивен при любых n

Pd n (x) sg(r(n, x)).

2.Предикат Pdm ,n (x) „„х делится на n и m” примитивно-

рекурсивен:

Pdm ,n (x) Pdm (x) Pdn (x)

3.Отношение x1>x2 – примитивно-рекурсивно:

(x1, x2 ) sg(x1 x2 ) .

Подведем некоторые итоги. Из простейших функций - константы 0, функции х+1 и функций тождества Inm с помощью опера-

торов суперпозиции и примитивной рекурсии получено огромное разнообразие функций, включающих функции арифметики, алгебры, анализа, логики, и т.д. Тем самым выяснено, что эти функции имеют примитивно-рекурсивное описание, которое однозначно определяет

56

процедуру их вычисления, а отсюда следует, что их естественно отнести к классу вычислимых функций.

5. Автоматы

5.1. Определение основных понятий

Определение: Конечным автоматом (автоматом) называется система S={A,Q,V, , }, в которой A={a1,…, am}; Q={q1,…, qn}; V={v1,…, vk} – конечные множества (алфавиты), а : Q A Q и :

QA V – функции, определяемые на этих множествах.

Аназывается входным алфавитом, V- выходной алфавит, Q

– алфавит состояний, - функция переходов, - функция выходов. Если, кроме того, в автомате S выделено одно состояние, называемое начальным (q1), то такой автомат называется инициальным и обозначается (S,q1), таким образом, по неинициальному автомату с n состояниями можно n различными способами определить инициальный автомат. Поскольку функции и определены на конечных множествах, их можно задавать таблицами. Обычно две

таблицы сводятся в одну

: Q A=Q V. Эта таблица называется

таблицей автомата или просто автоматной таблицей.

Пример 5.1: Таблица задает функции переходов и выходов для

автомата с алфвитами: A={a1, a2, a3}; Q={q1, q2, q3, q4}; V={v1, v2}

 

 

 

 

 

Таблица 18

 

q\a

a1

 

a2

 

a3

 

 

q1

q3,v1

 

q3,v2

 

q2,v1

 

 

q2

q4,v1

 

q1,v1

 

q1,v1

 

 

q3

q2,v1

 

q3,v1

 

q3,v2

 

 

q4

q4,v1

 

q2,v1

 

q1,v2

 

Еще один способ задания автомата – ориентированный мультиграф, называемый графом перехода или диаграммой переходов.

Вершины графа соответствуют состояниям; если (qi,aj)=qk и (qi,aj)=Ve, то из qi в qk ведет ребро, на котором написаны aj и Ve.

57

a3 /V1

 

 

 

q2

 

 

 

 

 

a2 /V1

 

 

 

 

a1 /V1

 

 

3

1

 

1

1

 

 

 

 

a

 

a /V

 

 

 

 

 

/V

 

a

2

1

 

q1

 

 

 

 

 

 

/V

4

 

a3

/V2

 

 

 

q

 

 

 

 

 

 

 

 

 

a

2

2

 

 

 

a1 /V1

 

 

 

/V

 

 

 

 

 

a1 /V1

 

 

 

 

 

 

 

 

 

 

 

q3

 

 

 

 

 

 

 

 

 

a3 /V2

a2 /V2

 

 

 

 

Рис. 9

Кратные ребра не обязательны, например два ребра из q2 в q1 можно заменить одним ребром, на котором написаны обе пары q3|V1

и q2|V1.

Для любого графа переходов в каждой вершине qi выполнены следующие условия, которые называются условиями автомат-

ности и корректности:

1)для каждой входной буквы аj имеется ребро, выходящее из qi, на котором написанно aj (условие полноты);

2)любая буква aj встречается только на одном ребре, выходящим из qi (условие непротиворечивости и детерминированности).

Для данного автомата S его функции S и S могут быть определены не только на множестве А всех входных букв, но и на множестве Авсех входных слов. Для любого входного слова

 

a j a j

...a j

,

 

 

 

 

 

1

 

2

K

 

 

 

 

(qi

, q j

,..., q j

(

(... (qi

, q j ),..., q j

)q j

).

 

1

 

 

K

 

1

K 1

K

Это традиционное определение с “многоточиями”. Немного точнее читается индуктивное определение:

1)(qi, aj) задается автоматной таблицей S;

2)Для любого слова A* и любой буквы aj

(qi, aj)= (

(qi, ) ,aj).

(5.1)

С

помощью

расширенной функции

определятся

расширенная функция

 

(qi,

aj)= (

(qi, ) ,aj).

(5.2)

58

Зафиксируем в автомате S начальное состояние q1 и каждому

выходному слову

a j

a j

...a j

поставим в соответствие слово в

 

 

1

 

2

K

 

выходном алфавите:

 

 

 

 

=

(qi, aj1)

(qi, aj1, aj2)…

(qi, aj1, aj2 ,…,ajk)

(5.3)

Это соответствие, отображающее входные слова в выходные

слова, называется

автоматным отображением , а также автомат-

ным (или

ограниченно детерминированным) оператором, реали-

зуемым оператором (S,q1).

Иногда говорят кратко – оператор (S,q1) или оператор S (если автомат S инициальный), и записывают S (q1, )= и S( )= .

Число букв в называют длиной слова и обозначают | | или l( ). Автоматное отображение также удобно определить индуктивно:

S (qi , a j )

(qi , a j

);

(5.4)

S (qi , a j )

S (qi , ) ( (qi , a j ), a j ).

 

Автоматное отображение обладает двумя свойствами, которые

следуют из (5.3) и (5.4):

 

 

1. слова

и S(

)=

имеют одну длину:|

|=| |;

2. если

= 1

2 и

S( 1 2)= 1 2, где

| 1|=| 1|, то S( 1)= 1.

Другими словами: образ отрезка длиной i равен образу отрезка той же длины.

Свойство 2 отражает тот факт, что автоматные операторы – это операторы без предвосхищения, т.е. операторы, которые перерабатывая слово слева направо не «заглядывают вперед»: i-я буква выходного слова зависит только от i букв входного слова. (пример оператора с предвосхищением – оператор отражения, ставящий в

соответствие слову a j

a j

...a j

слово a j

 

...a j , здесь первая буква

1

 

2

K

K

1

 

выходного слова равна последней входного).

 

Введенные

определения

 

(5.1)-(5.4)

наглядно

интерпретируются на графе переходов. Если зафиксированна

вершина qi, то всякое слово = a j a j

...a j

однозначно определяет

1

2

K

 

 

путь длины к из этой вершины (обозначим его (qi,

)), на к ребрах

которого написаны соответственно буквы a j a j

...a j

, поэтому (qi,

 

 

1

2

K

59

)- это последняя вершина пути (qi, );

(qi, )- выходная буква,

написанная на последнем ребре пути (qi,

), а отображение S(qi,

) –

слово, образованное к выходными буквами на к ребрах пути (qi,

).

Пример 5.2: Для автомата S с заданной таблицей:

(q2, a3a2)= (q2, a3a1)=q3, (q2, a3a1a1)=q2,

(q2, a3a2)=v2, (q2, a3a1)=v1, (q2, a3a1 a1)=v1,

S(q2, a3a2)= v1v2,

S(q2, a3a1)=v1 v1, S(q2, a3a1 a1)=v1 v1 v1.

Состояние qj называется достижимым из состояния qi, если имеется входное слово , такое, что (qi, )= qj.

Автомат S называется сильно связным, если его входной алфавит состоит из одной буквы: А={a}, а все слова имеют вид ааа..а.

Пример 5.3:

1

 

 

 

 

Таблица 19

 

 

 

 

 

 

 

 

 

Q

a

0

 

2

 

 

 

 

3

 

8

 

1

3,0

 

 

 

 

0

 

 

2

4,0

0

 

0

 

 

 

 

3

4,0

2

4

0

 

 

 

4

7,0

 

9

 

 

 

 

 

5

4,2

5

 

7

1

 

 

6

5,0

0

 

 

 

1

 

 

7

6,1

 

 

 

 

 

 

 

 

8

9,0

 

6

 

 

 

9

9,1

 

 

 

Рис. 10

 

 

 

 

 

 

 

Автоматная таблица и граф автономного автомата, задаваемый таблицей (входные буквы на ребрах опущены); выходной алфавит V={0,1,2}. Здесь и далее символы состояний qi для краткости заменены их индексами.

60