Лекции по теории алгоритмов. Лекция Интуитивное представление об алгоритме Интуитивное определение алгоритма. Примеры алгоритмов
Скачать 2.84 Mb.
|
Лекция № 4. Рекурсивные функции 1. Примитивно-рекурсивные функции 2. Частично-рекурсивные и общерекурсивные функции 1. Примитивно-рекурсивные функции
Функция непосредственно следующее натуральное число, обозначаемая штрихом, позволяет по числу 0 построить любой начальный отрезок множества натуральных чисел. Обозначения при этом таковы: 0, 0/=1, 0//=1/,=2, … Функции выбора аргумента определяются равенствами: Wk(x1,x2, xk,…, xn)=xk (1kn). Функция непосредственно следующее натуральное число, и функции выбора аргумента образуюттак называемое множество базисных функций. Функции, входящие в это множество всюду определены на множестве натуральных чисел. Говорят, что функция может быть построена при применении оператора суперпозиции к функциям нескольких переменных, если она может быть определена в результате следующих действий: 1) подстановки функции в функцию; 2) переименовывания переменных; 3) отождествления переменных; 4) исключения переменных замещением их константами. Пример 4.1.1. Даны функции g(y1,y2), w(x1, x2, x3). Говорят, что функция f(x1, y1, y2, x3)=w(x1, g(y1,y2), x3) построена путем подстановки функции g(y1,y2) в функцию w(x1, x2, x3). Пример 4.1.2. Даны функции g(t), w(x1, x2, x3). Говорят, что функция f(x1,t,x3)=w(x1, g(t), x3) построена путем переименовывания переменных. Пример 4.1.3. Даны функции g1(t), g2(t), w(x1, x2, x3). Говорят, что функция f(x1,t)=w(x1, g1(t), g2(t)) построена путем отождествления переменных. Пример 4.1.4. Дана функция w(x1, x2, x3). Говорят, что функция f(x1,x3)= w(x1, m, x3) построена путем исключения переменных замещением их константами. Оператор примитивной рекурсии применяется к двум функциям n-1 и n+1 переменных для построения функции n переменных. Определяющие соотношения оператора примитивной рекурсии записываются так. 1. При n=1 по натуральному числу m и функции двух переменных h(u,v) строится функция одной переменной f(y): . 2. При n>1 по заданным функциям q(x1, x2, …, xn-1) и h(x1, x2, …, xn+1) строитсяфункцияnпеременных f(x1, x2, , xn–1, xn): . Определение 4.1.1. Функция называется примитивно рекурсивной, если она есть базисная функция или может быть построена исходя из базисных функций конечным числом применений операторов суперпозиции и примитивной рекурсии. Пример 4.1.5. Функция g(x)=x – базисная. Функция h(x1, x2, x3)=x3 /может быть получена применением оператора суперпозиции двух базисных функций x3 / и w(x1, x2, x3)=x3. Исходяиз функций g(x)=x, h(x1, x2, x3) построим функцию двух переменных f(x,y) с применением оператора примитивной рекурсии: Таким образом, согласно определению эта функция является примитивно рекурсивной. В то же время, исходя из определения функции h(x1,x2,x3) запись функции f(x,y) можно сделать более наглядной: Или совсем простой – f(x,y)=x+y. Последнее утверждение проверяется просто: f(x,0)=x+0=x, f(x,y+1)=x+(y+1)=(x+y)+1= f(x,y)+1=(f(x,y))/. Фактически в примере 5 мы доказали примитивную рекурсивность функции f(x,y)=x+y. Аналогично доказывается примитивная рекурсивность функций: , А также функций f(x,y)=xy, f(x)=x!. Определение 4.1.2. Транзитивное замыкание множества базисных функций относительно операторов суперпозиции функций и примитивной рекурсии называется классом примитивно рекурсивных функций. Определение 4.1.3. Говорят, что функция f(x1,x,2,…xn) получена из функций g(x1,x,2,…xn, z) и (x1,x,2,…xn) с помощью ограниченного оператора минимизации (ограниченного -оператора) и обозначают: f(x1,x,2,…xn)= z[g(x1,x,2,…xn, z)=0], если f(x1,x,2,…xn)= z(x1,x,2,…xn) тогда и только тогда, когда: g(x1,x,2,…xn, k)0 при k=0, 1, 2, … z–1, и g(x1,x,2,…xn, z)=0. Теорема 4.1.3. Применение ограниченного -оператора не выводит из класса примитивно рекурсивных функций. 2. Частично-рекурсивные и общерекурсивные функции Определение 4.2.1. Говорят, что функция f(x1,x,2,…xn) получена из функции g(x1,x,2,…xn, z) с помощью оператора минимизации (-оператора), и обозначают f(x1,x,2,…xn)= z[g(x1,x,2,…xn, z)=0], если f(x1,x,2,…xn)=zтогда и только тогда, когда g(x1,x,2,…xn, k)0 при k=0, 1, 2, … z–1, и g(x1,x,2,…xn, z)=0. Оператор минимизации – удобное средство для построения обратных функций. Функция g(x)= y[f(y)=x] – («наименьший yтакой, что, f(y)=x»)является обратной для функции f(x). Определение 4.2.2. Функция называется частично рекурсивной, если она базисная функция или может быть построена из базисных функций конечным числом применения операторов суперпозиции функций, примитивной рекурсии и -оператора. Определение 4.2.3. Класс частично рекурсивных функций есть транзитивное замыкание множества базисных функций относительно операторов суперпозиции функций, примитивной рекурсии и -оператора. Определение 4.2.4. Всюду определенная частичная рекурсивная функция называется общерекурсивной. Как следует из приведенных определений, любая примитивно рекурсивная функция является общерекурсивной. Обратное неверно.
Доказано, что диагональная функция Аккермана растет быстрее любой примитивно рекурсивной функции. В то же время, частично рекурсивные (в том числе и общерекурсивные) функции допускают достаточно простое стандартное выражение через примитивно рекурсивные функции (см. следующую теорему). Теорема 4.2.1 (Клини). Существует такая примитивно рекурсивная функция g(x), что какова бы ни была частично рекурсивная функция F(x1, …, xn), найдетсяпримитивно рекурсивная функция fF(x1, …, xn,z) для которой имеет место равенство: F(x1, …, xn)=g(z[fF(x1, …, xn,z)=0]. В то же время, функция f(x)=y[x+1+y=0] – пример частично рекурсивной нигде не определенной функции. Таким образом, иерархия классов рекурсивных функций может быть описана следующим образом: – класс общерекурсивных функций строго содержит класс частично рекурсивных функций; – класс частично рекурсивных функций строго содержит класс общерекурсивных функций. Лекция № 5. Алгоритмическая теория множеств 1. Перечислимые и разрешимые множества. 2. Перечислимость и вычислимость. 1. Перечислимые и разрешимые множества При использовании далее терминов «алгоритм», «вычислимая функция» имеется в виду любая возможная их формализация в терминах машин Тьюринга, нормальных алгорифмов или рекурсивных функций. Все рассматриваемые множества – суть подмножества натурального ряда. Дополнением множества MN является множество N\M. Определение 5.1.1. Множество MN называется разрешимым, если существует алгоритм, позволяющий для каждого nN определить, принадлежит ли это число множеству M или нет. Такой алгоритм называется разрешающим для множества M. В иной терминологии это определение формулируется так. Определение 5.1.1*. Множество MN называется разрешимым, если его характеристическая функция: является общерекурсивной. Теорема 5.1.1. Если множества А и В разрешимы, то разрешимы множества N\А, АВ, АВ. Доказательство. Если характеристические функции и – общерекурсивны, то и характеристические функции множеств N\А, АВ, АВ: , . также являются общерекурсивными функциями. Теорема 5.1.2. Любое конечное множество MN – разрешимо. Определение 5.1.2. Непустое множество MN перечислимо, если существует алгоритм, перечисляющий (порождающий) его элементы. Этот алгоритм называют порождающим алгоритмом для множества M. Пустое множество считается перечислимым по определению. В терминологии рекурсивных функций приведенное определение формулируется так. Определение 5.1.2*. Непустое множество MN перечислимо, если существует общерекурсивная функция M(x) такая, что: M={y: y=M(x), xN}. Теорема 5.1.3. Если множества А и В перечислимы, то перечислимо множество АВ. Доказательство. Положим Так как функция rest(x, 2) нахождения остатка от деления xна 2 является общерекурсивной (доказательство этого факта остается за читателем), то общерекурсивной будет и функция: , где – целая часть числа . В этом случае множество АВ={y: , xN} по определению будет перечислимым. Теорема доказана. Теорема 5.1.4. Если множества А и В перечислимы, то перечислимо множество АВ. Доказательство. Введем в рассмотрение следующие функции: 1) функцию ограниченного вычитания: 2) функции большого размаха: где . 3) где: A(x) – общерекурсивная функция, порождающая множество A; B(x) – общерекурсивная функция, порождающая множество B; Все перечисленные функции являются общерекурсивными, и потому общерекурсивной функцией будет функция AB(x)=A(n(s(x))), порождающая множество AB. Теорема доказана. Теорема 5.1.5. Непустое разрешимое множество MN перечислимо. Доказательство. Пусть – характеристическая функция множества MN, . Тогда функция является общерекурсивной и порождающей множество М. Если М={m0, m1,m2, …, mn, ..} и m0,<m1<m2 <…<mn, то график функции имеет вид: Теорема 5.1.6. Множество MN разрешимо тогда и только тогда, когда M и N\М перечислимы. Доказательство. Если множество M разрешимо, то по теореме 5.1 разрешимо его дополнение N\М. По теореме 5.4 перечислимы оба множества. В одну сторону теорема доказана. Пусть далее M и N\М перечислимы, что означает существование общерекурсивных функций М, N\М. Определим общерекурсивную функцию (x), значением которой является наименьшее число z, при котором либо М(z)=x, либоN\М(z)=x, следующим образом: . Тогда характеристическая функция множества М может быть записана так: . Так как: общерекурсивная функция, то теорема доказана. Следствие. Если множество M перечислимо, но неразрешимо, то множество N\М не перечислимо. Теорема 5.1.7. Множество записей машин Тьюринга является перечислимым множеством. Теорема 5.1.8. Множество записей самоприменимых машин Тьюринга перечислимо, но не разрешимо. Следствие. Дополнение множества записей самоприменимых машин Тьюринга неперечислимо. |