- •1.Понятие множества. Конечные и бесконечные множества. Операции над
- •Основная теорема:
- •4. Обобщённое равенство. Абстракция. Примеры.
- •6. Отношение порядка. Частичный порядок. Линейный порядок.
- •Оператор суперпозиции
- •9.Оператор примитивной рекурсии, алгоритм его вычисления
- •10. Определение класса примитивно-рекурсивных функций. Примитивная рекурсивность функций сложения и умножения
- •11.. Доказательство существования вычислимых не примитивно
- •12.. Оператор минимизации, алгоритм его вычисления. Определение
- •13.. Представление и реализация алгоритма. Непроцедурность
- •Стратегии:
- •21.. Понятие протокола. Поведение процесса. Примеры.
- •25.. Определение np-полной задачи. Теорема Кука.
- •Теорема Кука:
Оператор суперпозиции
Функция hn(x1, ..., xn) получается из функций gm, fn1, ..., fnm с помощью оператора суперпозиции, если hn(x1, ..., xn) = gm(fn1(x1, ..., xn), ..., fnm(x1, ..., xn)).
П онятно, что функция gm (x1, х2, ... ,xm) и есть та функция, которую определяет функциональный терм fn (f1m(x1, х2, ... ,xm),..., fnm (x1, х2, ... ,xm)) при соответствующей интерпретации (рис. 2.2).
(Рис. 2.2)
Таким образом, функция g = Sn+1(f, f1,..,fn) определятся/вычисляется функциональным термом (рис. 2.2). И наоборот, функциональному терму соответствует применение некоторого оператора суперпозиции. Переменные y1, у2, .. ,ym представляют промежуточные величины.
Пусть φn - множество всех частичных вычислимых функций от n переменных. Тогда оператор суперпозиции Sn+1 может рассматриваться как всюду определенная функция Sn+1 : φnxφmxφmx...xφm → φm. Теперь в этих терминах можно перефразировать понятие функции, полученной применением оператора суперпозиции, а именно:
функция g(x1, х2, ... ,xm) получается суперпозицией из функций f(x1, х2, ... ,xn), f1(x1, х2, ... ,xm),..., fnm (x1, х2, ... ,xm) , если g есть значение операторного терма Sn+1 (h, h1, ..., hn), где h, h1, ..., hn - переменные и интерпретация ставят в соответствие:
переменной h – значение f, элемент из φn,
переменным h,h1, ..., hn - значения fi из φm соответственно, i = 1,2,..., n,
функциональному символу Sn+1 - функцию f(f1(x1, х2, ... ,xm),..., fn (x1, х2, ... ,xm))= g(x1, х2, ... ,xm).
Таким образом, можно использовать либо операторную, либо термальную запись представления функции g. В первой из них g есть значение операторного терма, во второй g определяется как функциональный терм. Этот функциональный терм и определяет алгоритм вычисления функции g.
9.Оператор примитивной рекурсии, алгоритм его вычисления
Оператор примитивной рекурсии:
Функция fn+1(x1, ..., xn, y) получается из функций gn(x1, ..., xn) и hn+2(x1, ..., xn, y, z) с помощью оператора примитивной рекурсии, если она может быть задана схемой примитивной рекурсии:
fn+1(x1, ..., xn, 0) = gn(x1, ..., xn),
fn+1(x1, ..., xn, y+1) = hn+2(x1, ..., xn, y, fn+1(x1, ..., xn, y)). (1)
Соотношения (1) называются схемой примитивной рекурсии. Они определяют оператор примитивной рекурсии R. Эта схема, собственно, и есть алгоритм вычисления функции f. Оператор определен на множестве φ частичных вычислимых функций, f = R(g,h).
Если n = 0, то одноместная функция f строится примитивной рекурсией из функции-константы Cnst (это просто некоторое натуральное число) и двухместной функции h
f(0)= Cnst, f(x+l)= h(x,f(x1)).
Понятно, что функция f существует и единственна. Это следует из того, что определение функции, построенной примитивной рекурсией, фактически содержит схему (алгоритм) ее вычисления. Распишем детально эту схему, используя термальные представления.
Пусть необходимо вычислить значение функции f при у = k. Тогда из определения (1) схемы примитивной рекурсии имеем последовательность функциональных термов, вычисляющих значение функции f(x1, х2, ... ,xn, k):
to: fo=f(x1, х2, ... ,xn, 0) =g(x1, х2, ... ,xn); |
t1: f1=f(x1, х2, ... ,xn, 1) =h(x1, х2, ... ,xn, 0, g(x1, х2, ... , xn)); |
t2: f2=f(x1, х2, ... ,xn, 2) =h(x1, х2, ... ,xn, 1, f(x1, х2, ... , xn, 1)); |
...................................... |
tk: fk=f(x1, х2, ... ,xn, k) =h(x1, х2, ... ,xn, k-1, f(x1, х2, ... , xn, k-1)); |
Здесь представлен способ вычисления f, следовательно, функция f определена однозначно. Эту последовательность k+1 функциональных термов to, t1,... удобно для наглядности изобразить графически
Это множество функциональных термов и определяет, собственно, алгоритм вычисления функции f. Множество термов (представление алгоритмов в виде множества термов) позволяет легко построить программу Р, реализующую оператор суперпозиции и вычисляющую функцию f:
f(x1,…,xn, xk) -?
P:
s=k-1;
f[0]=g(x1,…,xn);
for(i=1; i<s; i++);
f[i]=h(x1,…,xn,i-1,f[i-1]);
(рис 1)
Таким образом, алгоритм вычисления функции f задан применением оператора примитивной рекурсии. Функций g и h задаются функционально ∞ множеством функциональных термов.
Функционально ∞ множество – это множество, которое в каждом случае конечно, но не ограниченно.
(пример, файл)