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

ЭЛЕМЕНТЫ ТЕОРИИ АЛГОРИТМОВ_учит

.pdf
Скачиваний:
22
Добавлен:
03.05.2015
Размер:
408.81 Кб
Скачать

Рекурсивные предикаты

Давая определение предиката, мы отмечали присущее этому понятию свойство функциональности. Предикат Р(х1, х2,…, хn) заданный на множестве Мn есть функция с областью определения Мn, принимающая значения в двухэлементном множестве {0, 1}.

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

0, если высказывание Р x1, x2 ,...xn ложно,

Т.о., P x1, x2 ,...xn

1, если высказывание Р x1, x2 ,...xn истинно.

Если M=N, то имеет смысл поставить вопрос о примитивной рекурсивности функции Р.

Опр. Предикат Р называется примитивно рекурсивным, если его характеристическая функция Р примитивно рекурсивна. Р называется рекурсивным, если Р – общерекурсивная.

Например, предикаты Р1(x,y) = (x=y); Р2(x,y) = (x<y) являются примитивно рекурсивными, так как их представляющие функции являются ПРФ.

Действительно, в качестве представляющей функции первого предиката можно взять функцию вида Р1 (x) = sg|x-y|, где

является ПРФ.

Для предиката Р2(x,y) = (x<y) в качестве представляющей функции можно брать

2 x, y sg x y – она является ПРФ.

Теорема

Логические операции над предикатами сохраняют свойства примитивной рекурсивности предикатов.

Доказательство.

89

Приведем в виде таблицы истинностные значения логических операций: конъюнкции, дизъюнкции, импликации и отрицания.

Таблица 1. Результаты логических операций

P(x) P(x)Q(x)P (x)&Q(x)P(x) Q(x)P(x) Q(x)

0

 

1

 

0

 

0

 

0

 

1

 

 

 

 

 

 

0

 

1

 

1

 

0

 

1

 

1

 

 

 

 

 

 

1

 

0

 

0

 

0

 

1

 

0

 

 

 

 

 

 

1

 

0

 

1

 

1

 

1

 

1

Пусть Р(x) - представляющая функция предиката P(х);Q(x) - представляющая функция предиката Q(x), где в общем случае x = (x1, ..., xn).

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

Р&Q = sg( Р(x) + Q(x));

Р Q = Р(x) Q(x);

Р Q = sg( Р(x)+ sg( Q(x)));

Р = sg( Р(x))

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

Ограниченные кванторы

Пусть задан двуместный предикат P(x,y), где в общем случае x = (x1, ..., xn).

90

Определение. Говорят, что предикат R(x,z) получен из предиката P(x,y) с применением операции навешивания ограниченного квантора существования, т.е. R(x,z) = ( y)y zP(x,y), если

R(x,z) = P(x,0) P(x,1) ... P(x,z)

Определение. Говорят, что предикат Q(x,z) получен из предиката P(x,y) с применением операции навешивания ограниченного квантора всеобщности, т.е. Q(x,z) = ( y)y zP(x,y), если

Q(x,z) = P(x,0) & P(x,1) & ... & P(x,z)

Пример. Пусть P(x,y) = (x+y=5). Рассмотрим

R(x,z) = ( y)y zP(x,y) и Q(x,z) = ( y) y zP(x,y). Очевидно:

R(4,2)

=

( y)y 2P(4+y=5)

=

и

R(1,3)

=

( y)y 3P(1+y=5)

=

л

Q(4,2)

=

( y)y 2P(4+y=5)

=

л

Q(5,0)

=

( y)y 0P(5+y=5)

=

и

Справедлива теорема

Теорема

Операция навешивания ограниченных кванторов существования и всеобщности сохраняет свойство примитивной рекурсивности функций относительно совокупности предикатов

{Р}.

Доказательство.

Пусть задан предикат Р(x,y) и Р(x,y) - представляющая его функция и пусть R(x,z) = ( y)y zР(x,y).

Представляющую функцию предиката R(x, z) обозначим через R(x,z) и покажем, что ее можно представить следующим образом:

z

R x, z P x, y

y 0

91

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

1. Пусть предикат R(x,z0) = и. Тогда по определению операции навешивания ограниченного квантора существования, найдется y0 такое, что 0 y0 z0 и Р(x,y0) = и, следовательно(x,y0) = 0. Отсюда следует, что:

z

R x, z P x, y 0.

y 0

2. Предположим, что предикат R(x,z0) = л. Тогда по определению операции навешивания ограниченного квантора существования, для любого набора (x,y) Р(x,y) = л, следовательно (x,y0) = 1 и

z

R x, z P x, y 1

y 0

Пусть Q(x,z) = ( y)y zР(x,y). Аналогично доказывается случай, когда задана операция навешивания ограниченного квантора всеобщности. Можно доказать, что в качестве представляющей функции предиката можно брать

Q x, z Sg

 

z

 

 

 

 

 

P x, y

 

y 0

 

и R(x,z) является ПРФ относительно совокупности { Р(x,y)} (докажите самостоятельно).

Пусть задана совокупность функций { 1, ..., k} и совокупность предикатов {Р1, ..., Рm}.

Определение. Функция f(x1, ..., xn) называется ПРФ относительно заданной совокупности функций и предикатов, если она ПРФ относительно совокупности = { 1, ..., m, Р1, ...,Рm}, где Рi - представляющая функция предиката Рi, 1 i m.

92

Кусочное задание функции

Одним из часто встречающихся, особенно в теории алгоритмов, способов задания функций является их задание с помощью так называемого оператора условного перехода. Этот оператор по функциям f1(х1, х2,…, хn) и f2(х1, х2,…, хn) и предикату Р(х1, х2,…, хn) строит функцию (х1, х2,…, хn):

f1 x1, x2 ,...xn , если высказывание Р x1, x2 ,...xn истинно,

x1, x2 ,...xn

f2 x1, x2 ,...xn , если высказывание Р x1, x2,...xn ложно.

Говорят ещё что функция (х1, х2,…, хn) – кусочнозаданная. С помощью характеристических функций предиката Р и его отрицания Р функцию (х1, х2,…, хn) можно представить следующим образом:

(х1, х2,…, хn) = f1(х1, х2,…, хnР(х1, х2,…, хn) + + f2(х1, х2,…, хnР(х1, х2,…, хn).

Справедлива теорема:

Т. Если функции f1, f2 и предикат Р примитивно рекурсивны, то и кусочно-заданная функция , построенная из f1, f2 и Р, примитивно рекурсивна.

Отсюда следует, что оператор условного перехода примитивно рекурсивен.

Оператор условного перехода может иметь и более общую форму, когда переход носит не двузначный, а многозначный характер и определяется конечным числом предикатов Р1, Р2,…, Рk, из которых истинен всегда один и только один предикат. И в такой форме оператор условного перехода примитивно рекурсивен, так как и в этом случае производимую им функцию можно представить в аналогичном виде:

(х1, х2,…, хn) = f1· Р1 + … + f1· Рk.

Это соотношение определяет функцию и в том случае, когда ни один из операторов Р1, Р2,…, Рk не является истинным: в этом случае значение рано нулю.

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

93

константы на всех остальных натуральных числах, на которых она не определена.

Например, функцию , определенную на множестве {1, 3, 9, 17} равенствами (1) = 8; (3) = 0; (9) = 4; (17) = 6 с по-

мощью оператора условного перехода можно описать следующим образом:

8, если х 1,

0, если х 3,

x

4, если х 9,

6, во всех остальных случаях.

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

Следует отметить также, что мы имеем дело не с функциями, а с их примитивно рекурсивными описаниями. Различие здесь такое же, как и различие между булевыми функциями и их представлениями в виде формул. Примитивно рекурсивные описания разбиваются на классы эквивалентности: в один класс входят все описания, задающие одну и туже функцию. Задача распознавания эквивалентности примитивно рекурсивных описаний является алгоритмически неразрешимой.

Понятие машины Тьюринга.

Введение понятия машины Тьюринга явилось одной из первых и весьма удачных попыток дать точный математический эквивалент для общего интуитивного представления об алгоритме. Это понятие названо по имени английского математика, сформулировавшего его в 1937 г., за 9 лет до появления первой ЭВМ.

М.Т. есть математическая (воображаемая), а не физическая машина. Она моделирует некие реальные процессы. Тьюринг предпринял попытку смоделировать действия математика, осуществляющего некую умственную созидательную деятельность. Такой человек, находясь в определенном «умонастроении» просматривает некоторый текст. Затем вносит в

94

этот текст какие-то изменения, проникается новым «умонастроением» и переходит к просмотру последующих записей.

М.Т. действует примерно также. Ее удобно представлять в виде автоматически работающего устройства. В каждый дискретный момент времени устройство, находясь в некотором состоянии, обозревает содержимое одной ячейки, протянутой через устройство ленты, и делает шаг, заключающийся в том, что устройство переходит в новое состояние, изменяет содержимое обозреваемой ячейки и переходит к обозрению следующей ячейки: справа или слева. Причем шаг осуществляется на основании предписанной команды. Совокупность всех команд представляет собой программу машины Тьюринга.

Итак, машина Тьюринга состоит из:

1)ленты, разбитой на клетки (ячейки), ограниченной слева и потенциально неограниченной справа:

2)читающей и пишущей головки (каретки);

3)внешнего алфавита – конечного набора символов

S={s0, s1, …sn}. Среди них выделяют s0 – символ пустой ячейки;

Замечание: можно обойтись алфавитом, состоящм из 2-х символов S={0, 1}, где 0= s0 – символ пустой клетки.

4)Множества внутренних состояний или внутреннего алфавита Q={q0, q1, …, qm}. Среди этих состоя-

ний выделяют два: q1 – начальное состояние;

q0 – заключительное состояние;

5)Множества символов сдвига {л; н; п}: л – влево; н

– неподвижно; п – вправо.

Машина Тьюринга работает тактами (шагами). Эта работа описывается командами. Каждая команда имеет вид: saqb sczqd, z {л; н; п};

s S; q Q.

95

q1
0 1 0 1 0
q2
0 1 0 1 0
q2
0 1 1 1 0
q2
0 1 0 1 0

По этой команде читающая головка, находясь в состоянии qb и обозревая символ sa заменяет этот символ на sc, затем делает движение z на одну клетку и переходит в новое состояние

qd:

sa

qb

sс

qd z = п

Список всех команд МТ называется программой этой машины. Программу удобно записывать в виде таблицы, назы-

ваемой машинной таблицей:

 

q1

 

qb

 

qm

s0

 

 

 

 

 

s1

 

 

 

 

 

 

 

 

 

 

 

sa

 

 

sczqd

 

 

 

 

 

 

 

 

sn

 

 

 

 

 

Пример: Пусть работа машины описывается командами:

0q1 0пq2;

0q2 1пq2; начало;

1q2 1пq2.

1ый шаг;

2ой шаг;

3ий шаг.

96

 

q1

q2

0

0пq2

1пq2

1

1пq2

На этой простой машине можно реализовать любой алгоритм.

Определение машинно-вычислимой функции. Примеры.

Будем рассматривать теоретико-числовые функции – это функции всюду определенные на N со множеством значений из N.

Примеры:

1)f1(x, y)=x+y – теоретико-числовая функция;

2)f2(x, y)=x y;

3)f3(x, y)=z z = НОД(x, y);

4)f4(x, y)=z z = НОК[x, y];

5)f5(x, y)=x-y – не является теоретико-числовой функци-

ей.

Замечание. Числа на ленте будут записываться в u–нарной системе счисления; u–нарная – значит при записи используется 1 символ, т.е. число изображается единичками или палочками.

Опр. Теоретико-числовая функция называется вычислимой на МТ, если существует машина Тьюринга со следующими свойствами:

1)машина начинает работать со следующей ситуации (см. рис.) на ленте:

0 1 1 … 1 0 1 1 … 1 0 … 0 1 1 … 1

q1 x1 x2 xn

(на ленте имеется запись n аргументов функции). Читающая головка – под первой клеткой в состоянии q1. Такая ситуация называется стандартным восприятием n-ки чисел.

2)После конечного числа шагов машина останавливается, переходя в состояние q0, на ленте появляется запись:

0 1 1 … 1 0

q0 f(x1, x2, …, xn) – значение функции.

97

Читающая головка устанавливается под крайней левой клеткой в состоянии q0.

Примеры:

1). Построить машину Тьюринга, вычисляющую функ-

цию: (х) 0.

0 1 1 1 0

q1 х

начало.

План:

1)читающая головка двигается вправо до ближайшей пустой клетки;

2)двигается влево, стирая единицы, на некотором шаге обозревает 0 и останавливается.

Начало

0q1

0пq2

0?

+

0лq3

 

 

 

 

 

-

 

 

 

 

 

 

 

 

 

 

 

+

 

1пq2

 

0?

0нq0

 

 

 

 

 

 

 

-

Конец

98