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

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

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

ЭЛЕМЕНТЫ ТЕОРИИ АЛГОРИТМОВ Примеры алгоритмов. Основные свойства алгоритмов

Понятия алгоритма и вычислимой функции являются фундаментальными в математике, логике, информатике. Решение многих теоретических и прикладных задач предполагает указания алгоритма – набора инструкций, выполняя которые можно за конечное число шагов получить ответ. Систематическое изучение алгоритмов и различных моделей вычислений привело к созданию ряда прикладных дисциплин, развитию средств вычислительной техники. Разработка теории алгоритмов в 30-е годы XX столетия явилось стимулом для появления первых ЭВМ в 40-х гг.

Многочисленные и разнообразные алгоритмы окружают человека во всех сферах жизни и деятельности: алгоритм изготовления детали, алгоритм выхода из лабиринта, алгоритм (рецепт) приготовления торта и т.д. Огромное количество алгоритмов встречается при изучении математики с первых классов школы: алгоритм сложения натуральных чисел (1 класс), алгоритм записи числа в десятичной позиционной системе счисления (1 класс), алгоритм сложения дробей (5 класс), алгоритм решения квадратных уравнений (7-8 класс), алгоритм дифференцирования элементарных функций (11 класс), алгоритм деления отрезка с помощью циркуля и линейки, алгоритм нахождения НОД двух многочленов и т.д.

Сам термин «алгоритм» («алгорифм») произходит о имени среднеазиатского ученого Мухаммеда Аль Хорезми (787 – ок. 850) – им были сформулированы правила выполнения четырех арифметических действий над числами в десятичной записи.

Опишем основные свойства алгоритмов:

1 . Массовость алгоритма. Алгоритм должен быть пригоден для решения целого класса задач.

2 . Детерминированность (определенность): каждый последующий шаг однозначно определяется предыдущими шагами.

79

3 . Дискретность (прерывность или скачкообразность) т.е. работа алгоритма происходит тактами (скачками, шагами).

4 . Результативность. После конечного числа шагов алгоритм должен выдать результат.

5 . Элементарность. Каждый шаг должен быть достаточно простым.

6 . Абстракция потенциальной осуществимости, т.е. конечный алгоритм считается осуществимым даже если на его выполнение не хватает одной человеческой жизни или поколения, бумаги на всем земном шаре.

К 30-м годам ХХ в. ученые предположили, что для решения некоторых классов задач алгоритмов не существует. Чтобы это подтвердить потребовалось точное определение алгоритма. Иначе неясно было отсутствие того, что требовалось доказать. В середине 30-х г.г. несколько ученых независимо друг от друга предложили уточнение понятия алгоритма, с тем чтобы дать математическое определение, наиболее близкое к интуитивному представлению о способах решения, вычислениях и т.д.:

1.А.Тьюринг дал определение в виде абстрактной схемы вычислительной машины (М.Т.);

2.Клини и Гёдель предложили определение алгоритма в виде рекурсивной функции;

3.Э.Пост предложил определение, которое получило название машина Поста;

4.Марков А.А. – определение нормального алгоритма;

5.А.Черч в виде вычислимости с помощью –конверсий. Эти уточнения понятия алгоритма были связаны, в основ-

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

80

Понятие вычислимой функции. График вычислимой функции

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

Графиком ВФ называется множество пар вида (х, f(х)). Примеры

1.х – любое натуральное число, f(х)=х2;

2.х – пара рациональных чисел х1, х2, f(х)=х1:х2 (эта функция определена

лишь для тех х, у которых х2≠0);

3.X – пара матриц X1, X2 с целочисленными элементами, f(X)=X1*X2

(эта функция определена лишь для тех X, у которых число столбцов в X1 равно

числу строк в X2)

Аргументами и значениями вычислимых функций могут быть лишь конструктивные объекты, так как только такими объектами могут манипулировать алгоритмы.

Понятие конструктивного объекта является первичным, неопределяемым понятием теории алгоритмов.

Простейшим примером конструктивных объектов являются слова в некотором алфавите А = {a, b, c, ….}. Элементы алфавита называются буквами, а последовательности букв - словами. Количество букв в слове называется длиной слова. Длина слова – это натуральное число. Рассматривается также и пустое слово – слово нулевой длины.

Пример: Алгоритм сложения натуральных чисел перерабатывает конструктивные объекты – слова в алфавите А = {0, 1, 2, … , 9, +}.

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

81

Разрешимые и перечислимые множества

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

-«вычисляет функцию f», если его область применимости совпадает с областью определения f, и А перерабатывает любой х из своей области применимости в f(х);

-«разрешает множество М относительно множества Х», если он применим к любому х из Х и перерабатывает любой х из Х∩М в слово «да», а любой х из Х\М – в слово «нет»;

-«перечисляет множество М», если его область применимости есть натуральный ряд, а совокупность результатов есть М. Множество называется разрешимым относительно Х, если существует разрешающий его относительно Х алгоритм. Множество называется перечислимым, если либо оно пусто, либо существует перечисляющий его алгоритм.

Обнаружены результаты (путем анализа понятия «алгоритм»):

-область возможных исходных данных и область применимости любого алгоритма суть перечислимые множества;

-для любой пары вложенных одно в другое перечислимых множеств можно подобрать алгоритм, у которого внешнее множество служит областью возможных исходных данных, а внутреннее – областью применимости. Кроме того, имеет место следующие теоремы.

Теорема 1 Функция f вычислима тогда и только тогда, когда перечислим ее график.

Теорема 2 Подмножество М перечислимого множества Х тогда и только тогда разрешимо относительно Х, когда М и Х\М перечислимы.

Теорема 3 Если Р, Q перечислимы, то Р Q, Р∩ Q также перечислимы.

Теорема 4 В каждом бесконечном перечислимом множестве Х существует перечислимое подмножество с неперечислимым дополнением. (В силу теоремы 2 это перечислимое подмножество будет неразрешимым относительно Х).

82

Теорема 5 Для каждого бесконечного перечислимого множества Х существует вычислимая функция, определенная на подмножестве этого множества и не продолжаемая до вычислимой функции, определенной на всем Х.

Теоремы 4, 5 в совокупности дают пример алгоритма с неразрешимой областью применимости.

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

Частично рекурсивные функции

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

I.Назовем исходными следующие числовые функции, в интуитивной вычислимости которых нет сомнений:

1)нуль функция: o(х) 0 для любого х;

2)функция следования: s(x)=x+1 для любого х;

3) функция

 

 

выбора

аргумента:

I m x ,x

,...,x

x ,

1 m n.

 

n 1 2

n

m

 

 

Например: o(5)=0; s(5)=6;

I32 2,3,4 3; I31 2,3,4 2.

II.Введем правила для получения новых функций из уже имеющихся. Назовем эти правила операторами.

1) Суперпозиция функций.

Пусть даны числовые функции f(x1, x2, …, xm) и g1(x1, x2, …, xn), g2(x1, x2, …, xn), … , gm(x1, x2, …, xn). Рассмот-

83

рим функцию h(x1, x2, …, xn)=f(g1(x1, x2, …, xn), g2(x1, x2, …, xn), … , gm(x1, x2, …, xn)). Будем говорить, что функция h получена суперпозицией из функций f и g1, g2, … , gm. Если функции f и g1, g2, … , gm всюду определены, то функция h всюду определена.

Например: 1) функция O(x1, x2, …, xn) 0 получается с по-

мощью суперпозиции из функций o(x) и I1n x1,x2 ,...,xn : O(x1, x2, …, xn)=o( I1n x1,x2 ,...,xn );

2) функция S m x ,x

,...,x

x

1 – из функций s(x) и

 

 

n

1 2

n

m

 

I m x

,x

,...,x : Snm x1, x2 ,..., xn s Inm x1, x2 ,..., xn .

n 1

2

n

 

 

 

 

Замечание: В определении оператора суперпозиции

а) все функции gi

зависят от одного и того же числа пере-

менных;

 

 

 

 

 

б) у функции f столько переменных, сколько функций gi. На практике иногда требуется находить суперпозицию не-

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

выбора аргументов Inm . Пример:

Функция h(x,y,z)=f(g1(x), g2(x, y, z), y, x) получена суперпозицией из функций f(x1, x2, x3, x4) и G1(x, y, z)=g1(x),

G2(x, y, z)=g2(x, y, z), G3(x, y, z)= I32 x, y,z , G4(x, y, z)= I31 x, y,z .

2) Примитивная рекурсия.

 

 

 

Пусть даны числовые

функции

g(x1, x2,…, xn) и

h(x1, x2,…, xn, xn+1, xn+2)

(n 1)

и

пусть

функция

f(x1, x2, …, xn, xn+1) определяется так: f(x1, x2, …, xn, 0)=g(x1, x2,…, xn);

f(x1, x2, …, xn, y+1)=h(x1, x2,…, xn, y, f(x1, x2, …, xn, y)).

Случай n=0 рассматривается отдельно. Пусть f(0)=k (k – фиксированное натуральное число), f(y+1)=h(y,f(y)). Тогда говорят, что функция f получена из функций g и h (или в случае n=0 из числа k и функции h) по схеме примитивной рекурсии.

84

Например, функция f x, y x y может быть получена с

помощью примитивной рекурсии из функций g x I

1 x

и

 

 

1

 

h x, y,z S33 x, y,z z 1.

 

 

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

 

 

 

f x,0 I1 x x;

 

 

 

 

1

x, y f x, y 1.

 

 

f x, y 1 S33 x, y, f

 

 

x+0=x; f(3,2)=f(3,1)+1=(f(3,0)+1)+1=3+1+1 x+(y+1)=(x+y)+1. =5.

Если функции g и h всюду определенные, то и f всюду определенная. Если g и h интуитивно вычислимы, то и f интуитивно вычислима.

Примеры:

1.Рассмотрим функцию f(x, y), заданную следующей схемой примитивной рекурсии:

f x,0 0;

f x, y 1 x f x, y .

Здесь g(x)=o(x) 0; h(x, y, z)=x+y.

Вычислим: f(2, 2)=2+f(2, 1)=2+2+f(2, 0)=4+0=4;

f(3, 4)=3+f(3, 3)=3+3+f(3, 2)=6+3+f(3, 1)=9+3+f(3, 0)=12+0=12.

Нетрудно показать, что f(x, y)=x·y.

2. Зададим схемой примитивной рекурсии функцию xy. Для определенности положим 00=1.

Имеем:

f x,0 1;

f x, y 1 x f x, y .

Здесь g(x) 1;

h(x, y, z)=x·z.

Вычислим: f(3, 2)=3·f(3, 1)=3·3·f(3, 0)=9·1=9; f(2, 3)=2·f(2, 2)=2·2·f(2, 1)=4·2·f(2, 0)=8·1=8.

3. Рассмотрим схему:

f x,0 x;

f x,y

f x, y 1 x .

85

Вычислим: f(3, 2)=

3

f 3,1

3 f 3,0

33

 

3

3 .

Здесь g(x)=x;

 

 

 

 

 

h(x, y, z)=xz.

 

 

x

...x

 

 

 

 

y раз

 

 

 

 

f(x, y)=x x

 

 

 

 

 

 

 

 

 

 

4. Рассмотрим функции sg(x) («сигнум х») и sg(x).

0,

если х 0;

 

 

1,

если х 0;

 

 

sg(x)

если х 0;

и sg(x)

если х 0.

1,

 

 

0,

Эти функции задаются следующими схемами:

sg 0 0;

sg x 1 s o x .

sg 0 1;

sg x 1 o x .

 

x y, x y;

может быть получена

5. Функция f x, y x y

 

0, x y

 

по схеме примитивной рекурсии из функций g x I12 x, y и

h x, y, z z 1.

Легко понять, что:

f x,0 x;

 

 

 

f x, y 1 h

 

 

 

 

x, y, x y .

Т.е. f x, y 1 x y 1.

Опр. Функции, полученные из простейших с помощью суперпозиций и примитивных рекурсий, называются примитивно рекурсивными.

3) Оператор минимизации ( –оператор).

Пусть g(x1, x2,…, xn, y) – произвольная числовая функция. Зафиксируем значения x1, x2,…, xn и черезy[g(x1, x2,…, xn, y)=0] обозначим наименьшее число y такое, что:

1.для всех t, 0 t<y, функция g(x1, x2,…, xn, t) определена и больше 0;

86

2. g(x1, x2,…, xn, y) определена и равна 0.

Если одно из этих условий не выполняется, т.е. для неко-

торого t функция g(x1, x2,…, xn, t) или g(x1, x2,…, xn, y) не опре-

делена, или же для всех z функция g(x1, x2,…, xn, z) определена и больше нуля, будем считать, что выражение

y[g(x1, x2,…, xn, y)=0] не определено.

Например, пусть g(x, y)=x-y-3. Тогда y[g(4, y)=0]=1, т.к. 4-0-3=1>0, а 4-1-3=0; y[g(3, y)=0]=0, 3-0-3=0; а выраженияy[g(0, y)=0], y[g(1, y)=0] и y[g(2, y)=0] не определены, по-

тому что разность k-0-3, где k=0, 1, 2 в области натуральных чисел не определена.

Пусть f(x1, x2,…, xn)= y[g(x1, x2,…, xn, y)=0]. В этом слу-

чае говорят, что функция f получена из функции g с помощью

- оператора.

 

Пусть f1(x)= y[x-y-3=0],

тогда f1(x) получается из

g(x, y)=x-y-3 с помощью -

оператора. Значения f1(0), f1(1),

f1(2) не определены, но и функция g(x, y)=x-y-3 не является всюду определенной.

Функция f2(y)= x[x-y-3=0] является нигде не определенной, т.к. для любого натурального числа m в области натуральных чисел выражение 0-m-3 не определено. Значит с помощью - оператора получена нигде не определенная функция.

Функция x-y не является всюду определенной (например, 0-m не опр.), но функция f3(x)= y[x-y=0], полученная из нее с помощью - оператора, всюду определенная, причем, для лю-

бого m f3(m)=m (все разности m-0, m-1, …, m-(m-1) определе-

ны и отличны от нуля, а m-m=0). Т.о., с помощью - оператора получена всюду определенная функция.

Умея отвечать на вопрос: каково наименьшее значение y, при котором g(x1, x2,…, xn, y)=0, мы сможем отвечать на вопрос: каково наименьшее значение y, при котором две функ-

ции равны: g1(x1, x2,…, xn, y)=g2(x1, x2,…, xn, y). Для этого надо построить с помощью -оператора функцию f(y)= y[ g1-g2 =0].

87

Опр. Функция называется частично рекурсивной, если она может быть получена из простейших с помощью конечного числа суперпозиций, примитивных рекурсий и - оператора (минимизации).

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

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

Тезис Чёрча. Числовая функция тогда и только тогда машинно вычислима, когда она частично рекурсивна.

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

88