УДК 519.172.1 В.В. Кручинин
Рекурсивные композиции деревьев и их свойства
Введены операции рекурсивной композиции деревьев, показана связь между алгебраическими структурами и деревьями, доказано, что для любой примитивно-рекурсивной функции можно взаимно однозначно поставить в соответствие схему рекурсивной композиции построения дерева терма. Получены выражения для числа листьев и узлов деревьев, полученных на основе рекурсивной композиции.
Введение
Деревья играют фундаментальную роль в системах программирования. Деревья поиска [1], деревья выражений [2], синтаксические деревья [3] стали важными инструментами в исследовании и создании различных алгоритмов обработки информации. Однако деревья можно использовать не только в компьютерных науках, но и в исследованиях, связанных с теорией рекурсивных функций [4, 5]. Рассмотрим вопросы построения деревьев для рекурсивных функций. Для этого введем ряд операций композиции деревьев и на их основе покажем взаимно однозначную связь между деревьями и примитивно-рекурсивными функциями.
Простая композиция. Пусть даны два дерева и 2)2. Дерево имеет Ь = листов. Тогда композицией двух деревьев и £>2 назовем дерево £>3, получаемое путем замены некоторого листа ^ е на корень дерева Б2. Запишем эту операцию следующим образом: £>3 = Х>2) •
Графическое изображение этой операции показано на рис. 1.
Суперкомпозиция. Множественная композиция (суперкомпозиция) — это выполнение множества композиций {5;.(£>0,£)у)};=1 для некоторого подмножества листьев дерева В0 и деревьев {1);-}*=1. Эту операцию будем обозначать следующим образом:
в = ь>А>-°2.....Л*).
Графическое изображение показано на рис. 2.
Простая рекурсивная композиция. Пусть даны два дерева -О0 и Б. Тогда определим операцию простой рекурсивной композиции следующей схемой:
Д(0) = А,;
д(п + 1 )щдад. (1)
Для нахождения дерева Л(п+1) производится композиция Б и Щп) для /г еД. Если п равен нулю, вместо й(0) подставляется 1>0, производится композиция 8Д1),1>0)) и определяется дерево Д(1). Как только найдена композиция Щк), при к<п, выполняется композиция для й(г + 1). На рис. 3 этот процесс показан графически.
Рис. 2. Операция суперкомпозиции деревьев
Рекурсивная суперкомпозиция. Расширим понятие простой рекурсивной композиции следующим образом: вместо простой композиции в выражении (1) разрешим использование суперкомпозиции, причем все деревья D1>Z>2,...,Dfc являются результатом выполнения рекурсивной суперкомпозиции R(n) для индексов листьев ^.¿г,...,^- Рекурсивную суперкомпозицию можно описать следующей схемой:
Д(0) = D0;
R(n +1) = Sktk.....i/t(D,D1,D2,...,Dk),
Dj = R(n), j = ljt.
Операция рекурсивной суперкомпозиции показана на рис. 4.
R(n+1)
R(n+1)
AAAAAAAA
Рис. 3. Операция простой рекурсивной композиции
Рис. 4. Операция рекурсивной суперкомпозиции
Связь между алгебраическими структурами и деревьями
Пусть дана терминальная алгебра Ар = {X,, где X — множество переменных; Г = {Д1,/*}2» •••»/«} — содержит т. операций. Тогда для любого терма t е Т(Х) можно получить
соответствующее дерево Б,.
Построение дерева производится по индукции:
1) если t еХ, то соответствующее дерево имеет единственный узел, помеченный как
2) если для термов рх,р2>...,рк е Т(Х) имеются деревья 01,02,..., Бк соответственно, то терм ^(р1,р2,...рк) можно представить суперкомпозицией .....¿(-ОрА'Аг.....2)^), где
— дерево с корнем, помеченным , и имеющим к сыновей, соответствующим операндам этой операции.
Таким образом, все листья дерева Dt представляют собой переменные х1 е X , а узлы соответствуют операциям ^ = . Назовем такое дерево деревом терма. Пример,
пусть Х={а,Ь,с,х,у,г], ^={х,+,-} тогда терм х+(у+г) (а~Ьс) будет представлен деревом терма, показанном на рис. 5.
Между термом г е Т(Х) и деревом Д существует взаимно днозначное соответствие. Покажем теперь, что любой прими-тивно-рекурсивной функции ^х1,х2,...,хп) можно взаимно однозначно поставить схему рекурсивной суперкомпозиции построения дерева терма. По определению [6] функция ^х1г...,хп) примитивно-рекурсивна если ее можно получить из простейших функций о(;с), б(д;), 1^1(х1,...,хп) конечным числом операций при-Рис. 5. Дерево для терма митивной рекурсии и подстановки. Для простейших функций о(дс), *+(у+2)*(а-г>*с) з(лс),/^(хр-.-.х^) деревья строятся однозначно (табл. 1):
Деревья для простейших функций
о(х) 8(Ж) 1т(х1>"->хп)
© О
© © ( X, ) Г XЛ ( х„ )
Покажем, что для оператора суперпозиции 5 можно взаимно однозначно поставить суперкомпозицию деревьев.
Пусть имеются две рекурсивно-примитивные функции f1(x1,x2,...,xn) и f2(x1,x2,...,xm), которым соответствуют деревья терма и Причем листьями дерева Х>г являются переменные {яг}?=1. листьями Л12 — • Выполним оператор суперпозиции: вместо переменной х,. подставим функцию [2{х1,х2,...,хт), получим ^{х1,х2,...,х1 = ^(х1,х2,...,хт),...,хп). Тогда выполнение этого оператора для деревьев £)1 и Х>2 соответствует операции простой композиции Листу, соответствующему переменной х1 функции /1(х1,хг,...,хп) в дереве 2)г, будет поставлено в соответствие дерево 1>2. Тем самым дерево /)3 = 3^01,02) будет соответствовать результату выполнения оператора суперпозиции
Рассмотрим оператор примитивной рекурсии Я:
Язс1,х2,...,а:в,0) = й{х1гх2,...,хп);
Кх1,х2,...,хп,у + 1) = Н(х1,х2,...,хп,у,Кх1,х2,...,хп,у)).
Пусть для примитивно-рекурсивных функций g и Л имеются деревья и Х)д соответственно. Тогда для примитивно-рекурсивной функции f можно построить следующую схему рекурсивной суперкомпозиции деревьев:
Д(0) = 2>„,
Н(У += .....^.ЛрЛ......
Докажем по индукции: для f(x 1,х2,...,хП,0), по определению, соответствует дерево Dg, тогда запишем R(0) = Dg. Пусть для f(xl,x2,...,xn,y) соответствует дерево R{y) = Dn. Тогда,
производя суперкомпозицию деревьев S^i¡2.....if¡ (Dh,Dn,Dn,...,Dn), получим R(y + 1). Таким
образом, схема рекурсивной суперкомпозиции деревьев R(y + 1) однозначно соответствует функции f(xx,x2,...,xn,y+\).
Следовательно:
1) для простейших функций о(х), s(x), I^l(x1,...,xn) взаимно однозначно ставятся деревья терма (см. таблицу);
2) для оператора суперпозиции S взаимно однозначно ставится композиция деревьев терма;
3) для оператора примитивной рекурсии взаимно однозначно ставится схема рекурсивной композиция деревьев терма.
По определению примитивно-рекурсивная функция строится только из примитивно-рекурсивных функций. Для любой примитивно-рекурсивной функции можно взаимно однозначно задать схему рекурсивной композиции построения дерева терма, внутренними узлами которого являются примитивно-рекурсивные функции, а листьями — предметные символы.
Рассмотрим примеры.
1. Функция сложения х+у (рис. 6)
g(x) = 1\(х), h{x,y,z) = /|(x,¡/,s(z)),
3
R(0)
R(y+D
T)
Рис. 6. Схема рекурсивной композиции построения дерева терма для сложения
X
2. Функция [*/у] = XsS(i -У-х) (рис. 7)
g(x) = о(х), _
h(x, y,z,u) = u + sg(z у-х),
Щ1+1) 11(0) =
Рис. 7. Схема рекурсивной композиции построения дерева терма [х/у"\
3. Пусть дана следующая примитивно-рекурсивная функция:
Я» + 1>«{2./(») + 3°'
Тогда функция £(х)=1, а функция к(х)=2х+3. Соответствующие деревья 2>г и 1>й представлены на рис. 8. Схема рекурсивной композиции деревьев для данной функции следующая:
що) = , Щу +1) = вх(х>й,Д(г/)).
Здесь х обозначает лист, который будет заменен на дерево Щу). Схема рекурсивной композиции изображена на рис. 8.
На основании схемы, представленной на рис. 8, строится конкретное дерево для конкретных значений аргументов функции. Например, для /(2) (рис. 9).
О,,
О
*-(п+1)
Д2) С=>
Рис. 8. Деревья и и схема рекурсивной композиции для функции /(я+1)
Рассмотрим теперь обратный пример, пусть имеется схема рекурсивной композиции для построения дерева терма (см. рис. 8). Необходимо получить рекурсивную функцию. Для этого выполним следующие шаги:
1) по схеме рекурсивной композиции построения дерева строим деревья и £>Л;
2) используя деревья и £)Л , получаем выражения для функций £(х)=1 и /г(х)=2х+3;
3) строим рекурсивную функцию, в нашем случае
ЯЛ + 1Н2-«пН30,
Рис. 9. Дерево для функции Я2)
Свойства рекурсивных композиций
При фиксации параметров рекурсии в схеме рекурсивной композиции можно получить конкретное дерево терма. Во внутренних узлах этого дерева записаны примитивно-рекур-сивные функции, а листья содержат значения предметных переменных. Предположим, что для деревьев Dg и Dh имеются значения числа узлов Ug, Uh и значения числа листьев Lg> Lh-
Тогда можно записать выражения для числа листьев, внутренних узлов и общее число узлов для схемы рекурсивной композиции:
ДО) = Lg , Цп +1 ) = Lh+ L(n) -1,
т.е. в дереве Dh i-лист заменяется на дерево R(n), таким образом, складываем число листьев Lh и L(n) за вычетом i-го листа.
В явном виде число листьев будет равно
L(n) = n-Lh+ Lg - п . Аналогичное выражение будет и для числа узлов:
U(n) = nUh+Ug-n. Тогда число внутренних узлов для схемы рекурсивной композиции будет равно
Uop(n) = U(n)-L(n). Для схемы рекурсивной суперкомпозиции выражения будет другими:
ЦО) = Lg , Цп + 1) = Lh +k-L(n)-k, где k — число замен листьев в дереве Dh на деревья R(n). Тогда можно записать
Цп +1) = Lh + k ■ (Lk + k ■ L(n -1) - k) - k .
Получим
Цп +1) = Lh J k1 + kn+l ■ Lg - k ■ X k1 ,
i=0 ¿=0
далее
L(n) = (Lh-k)±f^- + kn-Lg.
1-k s
Аналогично получим
U(n) = (Uh-k)±f^r + kn Ug.
L ft
Выводы
1. Имея примитивно-рекурсивную функцию, можно взаимно однозначно задать схему рекурсивной композиции построения дерева терма.
2. Имея схему рекурсивной композиции построения дерева терма, можно получить выражение примитивно-рекурсивной функции.
Литература
1. Ахо А. Построение и анализ вычислительных алгоритмов / А. Ахо, Дж. Хопкрофт, Дж. Удьман. - М. : Мир, 1979. - 535 с.
2. Бердж В. Методы рекурсивного программирования / В. Бердж. - М. : Машиностроение, 1983. - 248 с.
3. Ахо А. Теория синтаксического анализа, перевода и компиляции. Т2. Компиляция / А. Ахо, Дж. Ульман. - М. : Мир, 1978. - 487 с.
4. Успенский В.А. Теория алгоритмов: основные открытия и приложения / В.А. Успенский, A.JI. Семенов. - М. : Наука, 1987. - 288 с.
5. Гончаров С.С. Счетные булевы алгебры и разрешимость / С.С. Гончаров. - Новосибирск : Научная книга, 1996. - 364 с.
6. Мальцев А.И. Алгоритмы и рекурсивные функции / А.И. Мальцев. - М. : Наука, 1986. - 386 с.
Кручияин Владимир Викторович
Канд. техн. наук, зав. ЛИСМО ТУСУРа
Тел.: 45 10 00
Эл. почта: kru@tcde.ru
V.V. Kruchinin
Recursive compositions tree and their characteristic
The incorporated operations to recursive composition tree, is shown relationship between algebraic structure and tree, is proved that for any primitive recursive function possible one-to-one to put in correspondence to scheme to recursive composition of the building tree of term. Expressions are received for number leaf and nodes tree, got on base of the recursive composition.