Определение рекурсивной схемы
Рекурсивная схема (РС) так же, как СПП определяется в некотором базисе. Полный базис РС, как и базис ССП, включает четыре счетных множества символов: переменные, функциональные символы, предикатные символы, специальные символы.
Множества переменных и предикатных символов ничем не отличаются от ССП. Множество специальных символов - другое, а именно: {if, то, else,(,),,}. Отличие множества функциональных символов состоит в том, что оно разбито на два непересекающиеся подмножества: множество базовых функциональных символов и множество определяемых функциональных символов (обозначаются для отличия прописными буквами, например, F(1), G(2), и т.д.).
В базисе РС нет множества операторов, вместо него – множество логических выражений и множество термов.
Простые термы определяются так же, как термы–выражения в СПП. Среди простых термов выделим базовые термы, которые не содержат определяемых функциональных символов, а также вызовы-термы вида F(n)(t1,t2,…tn), где t1,t2,…t n - простые термы, F(n) - определяемый функциональный символ.
Логическое выражение- слово вида
p(n)(t1,t2,…tn),
где p(n) - предикатный символ, а t1,t2,…tn - базовые термы.
Терм - это простой терм, или условный терм, т.е. слово вида
ifpthent1elset2,
где p - логическое выражение, t1, t2 - простые термы, называемые левой и соответственно правой альтернативой.
Примеры термов:
§f(x, g(x, y)); h(h(a)) - базовые термы;
§f(F(x), g(x, F(y))); H(H(a)) - простые термы;
§F(x); H(H(a)) - вызовы;
§ifp(x, y) then h(h(a))elseF(x) - условный терм.
Используется бесскобочная форма представления:
ifpxy thenhhaelseFx - условный терм.
Расширим в базисе В множество специальных символов символом "=".
Рекурсивным уравнением, или определением функции F назовем слово вида
F(n)(x1,x2,…xn) = t(x1,x2,…xn),
где t(x1,x2,…xn) - терм, содержащий переменные, называемые формальными параметрами функции F.
Рекурсивной схемойназывается пара (t, М), где t - терм, называемый главным термом схемы (или ее входом). М - такое множество рекурсивных уравнений, что все определяемые функциональные символы в левых частях уравнений различны и всякий определяемый символ, встречающийся в правой части некоторого уравнения или в главном терме схемы, входит в левую часть некоторого уравнения. Другими словами, в РС имеется определение всякой вызываемой в ней функции, причем ровно одно.
Примеры РС:
RS1: F(x); F(x) = ifp(x) thenaelseg(x, F(h(x))).
RS2: A(b, c); A(x, y) = ifp(x) thenf(x)elseB(x, y);
B(x, y) = ifp(y) thenA(g(x), a) elseC(x, y);
C(x, y) = A(g(x), A(x, g(y))).
RS3:F(x); F(x) = ifp(x) thenxelsef(F(g(x)), F(h(x))).
Пара (RS, I), где RS - PC в базисе В, а I - интерпретация этого базиса, называется рекурсивной программой. При этом заметим, что определяемые функциональные символы не интерпретируются.
Протоколы выполнения программы (RS1, I1) и (RS1, I2), где I1 и I2 - интерпретации из п. 1.2.3 (рисунок 1.3, б, в), выглядят следующим образом:
№п/п | Значение терма для (RS1, I1) | Значение терма для (RS1, I2) |
F(4) | F(a,b,c) | |
4*F(3) | CONSCAR(abc, F(b,c)) | |
4*(3*F(2)) | CONSCAR(abc, CONSCAR(bc, F(c))) | |
4*(3*(2*F(1))) | CONSCAR(abc, CONSCAR(bc, CONSCAR(c, F(е)))) | |
4*(3*(2*(1*F(0)))) | CONSCAR(abc,CONSCAR(bc,CONSCAR(c, е))) = abc | |
4*(3*(2*(1*1)))=24 |
Дата добавления: 2015-07-18; просмотров: 794;