О проверке сильной эквивалентности металинейных унарных рекурсивных программ

УДК 519.6

В. В. Подымов1

О ПРОВЕРКЕ СИЛЬНОЙ ЭКВИВАЛЕНТНОСТИ МЕТАЛИНЕЙНЫХ УНАРНЫХ РЕКУРСИВНЫХ ПРОГРАММ

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

Ключевые слова: проверка эквивалентности, рекурсивные программы.

1. Введение. Проблема эквивалентности программ в широком смысле формулируется следующим образом: для заданной пары программ проверить, имеют ли программы одинаковое поведение. Строгая формулировка проблемы эквивалентности зависит от формализации понятий программы и поведения.

В данной работе в качестве формализации понятия программы используется модель рекурсивных программ, предложенная в неопубликованных заметках к семинару IBM в 1969 г., о чем упоминается, например, в [1]. Вычисление рекурсивной программы есть последовательность термов, строящихся над заданными базовыми функциями и функциональными символами на основе функций, определенных в программе.

В [1] была показана разрешимость проблемы сильной эквивалентности линейных унарных рекурсивных программ. В том же году в [2] был предложен алгоритм, разрешающий проблему эквивалентности в классе свободных унарных рекурсивных программ. Несколькими годами позже в [3] была показана взаимная сводимость проблем эквивалентности для унарных рекурсивных программ и для детерминированных магазинных автоматов. Таким образом, результаты, полученные при исследовании проблемы эквивалентности в одной из этих моделей, оказываются применимы и к другой.

В работах [4, 5] был предложен метод исследования проблемы эквивалентности линейных унарных рекурсивных программ, семантика которых определена посредством специальных классов детерминированных динамических шкал, основанный на построении графа совместных вычислений и сведении проверки эквивалентности программ к задачам теории графов и теории групп. Однако предложенный метод не применим напрямую к более широкому классу металинейных унарных рекурсивных программ.

Цель данной работы состоит в обобщении метода совместных вычислений на класс металинейных унарных рекурсивных программ для исследования проблемы их сильной эквивалентности.

2. Основные понятия. В данном разделе вводятся синтаксис и семантика унарных рекурсивных программ. Содержательный смысл вводимых определений и их соответствие реальным функциональным программам подробно обсуждается, например, в работах [1, 2, 4, 6].

Считаем заданными конечный алфавит базовых функций 21, конечный алфавит логических условий С, счетно-бесконечный алфавит функциональных символов В дальнейшем будем использовать следующие обозначения и понятия: терм — слово в алфавите (21 U 5); базовый терм — слово в алфавите 21; Term и BTerm — множества всех термов и всех базовых термов соответственно; линейный терм — терм, содержащий не более одного вхождения символов алфавита 5; 2*, где S — произвольный алфавит, — множество всех слов в алфавите S; А — пустое слово (в любом алфавите); если h = а\й2    ап — слово в некотором алфавите, то \h\ = п — длина слова; h[i] — символ h\0pk-, op € — слово, составленное из символов щ, где г ор к, выписанных в порядке следования

в слове h; suf(/i, к) = Обозначения \h\ и h[i] используются в том же смысле и для произвольных

последовательностей.

1 Факультет ВМК МГУ, асп., e-mail: valdusQyandex.ru

2.1. Синтаксис программ. Унарной рекурсивной программой будем называть систему ж = = (¿о, F, D), где to G Term — запрос, F С \F\ < оо — множество заголовков функций, D:Fx£-> ^ Term — описание тел функций. Унарную рекурсивную программу ж = (to,F,D) будем называть металинейной, если область значений функции D состоит только из линейных термов. Мота линейную унарную рекурсивную программу далее будем называть просто программой. Под сложностью |тг| программы ж = (to, F, D) будем понимать пару (к, п), где к = \to\, п = ^ D(.f\ à)-

feF,se<c

Терм wD(f, ô)w, где w G BTerm, / G J, i G С, будем называть 5-преемником терма wfui в программе ж = (to,F,D). Для удобства будем обозначать 5-преемника терма t записью D(t,S). Если t\,t2,... ,tn — такая последовательность термов, что tn G BTerm и терм ti+i является преемником терма ti в программе 7г, 1 ^ г < п, то терм tn будем называть раскрытием терма t\ в программе ж. Раскрытие терма t в программе ж будем называть кратчайшим в этой программе, если его длина не превосходит длину любого другого раскрытия t в ж. Функциональный символ / будем называть завершаемым в программе ж, если существует хотя бы одно его раскрытие в этой программе.

Если программа ж во введенных понятиях ясна из контекста, то она не будет упоминаться.

2.2. Семантика программ. Трассой программы ж = (to,F,D) будем называть такую последовательность Т термов (возможно, бесконечную), что Т[ 1] = to и каждый следующий терм трассы Т является преемником предыдущего. Вычислением программы ж будем называть любую ее непродол-жаемую трассу. Если вычисление программы конечно и оканчивается базовым термом t, то терм t объявляется результатом вычисления. В противном случае вычисление считается безрезультатным.

2.3. Эквивалентность программ. Трассы Ть Т, программ тп =

соответственно будем называть совместными, если для любых термов ТЦг], T\[i + 1], '/"j[//']. T2[j + 1] трасс Ti, Т2 верно следующее: T\[i + 1] = Z>i(Ti.[г], 5) и T2[j + 1] = /ЛИТ>[//']. 5) для некоторого 5, S G С.

Программы Ж\ и ж2 будем считать сильно эквивалентными, если любые их совместные вычисления имеют одинаковый результат. Заметим, что введенное таким образом отношение сильной эквивалентности совпадает с отношением сильной эквивалентности (strong equivalence) в терминах работы [1].

2.4. Нормализация программ. Программу ж = (to,F,D) будем называть нормализованной, если выполнены следующие условия:

• к g

• для любых / G F, ô G С верно D(f, S) = aGt, где a G 21, G G F U {À}, t G BTerm;

• в множестве F выделен специальный символ /¡nf, такой, что все символы F, кроме него, являются

завершаемыми;

• для любого 5, S G С, верно D(/mf, S) = af-mf.

В работе [4] было доказано

Утверждение 1. Существует алгоритм, который по программе ж со сложностью (к,п) строит сильно эквивалентную ей нормализованную программу ж' со сложностью (k',n'), где к' = к, п' ^ к + п2, и имеет временную сложность О (к + п4).

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

3. Полиномиальная разрешимость проблемы эквивалентности. В данном разделе приводятся метод исследования сильной эквивалентности металинейных унарных рекурсивных программ и его обоснование. Основная идея метода состоит в построении и анализе графа, описывающего всевозможные совместные вычисления заданной пары программ. Более подробное содержательное описание метода приведено в данном разделе после введения понятия графа совместных вычислений.

Следующие очевидные утверждения позволяют не рассматривать некоторые частные случаи нормализованных программ.

Утверждение 2. Если каждый из запросов нормализованных программ ж\, ж2 содержит символ /inf, то Ж1 ~ 7г2.

Утверждение 3. Если запрос нормализованной программы ж^ содержит символ /¡nf и запрос нормализованной программы ж^-г не содержит символа /inf, то ж\ ю ж2-

Вес терма £ в программе тх (обозначаемый записью 11^11^ или просто \Щ\, если программа ясна из контекста) задается следующими соотношениями: 11А||^ = 0; если а € 21, то ЦаЦ^ = 1; если / € то Ц/Цтг есть длина кратчайшего раскрытия символа / в программе ж (бесконечность, если не существует ни одного раскрытия); Ц^гЦтг = Ц^Цтг + И^гЦтг-

Далее считаем заданными нормализованные программы 7п = (¿¿,¿<1,1)1), ж2 = Р2, Б2), все символы запросов которых являются завершаемыми. Будем полагать |-зт!| = (£1,711), |-ггз| = (к2,п2), к = тах{&1, к2} и п = тах{п1, п2}.

Лемма 1. Пусть Т1, Т2 — совместные трассы программ и\, ж2 соответственно, % — вычисление программы и^, префиксом которого является трасса г € {1,2}. Тогда существует вычисление программы и^-г-, совместное с вычислением префиксом которого является трасса Т3_г.

Лемму обосновывает тот факт, что в конец совместной трассы, не являющейся вычислением, всегда можно дописать 5-преемника ее последнего терма для некоторого 8, 8 € С, с сохранением совместности.

Лемма 2. Пусть Т — произвольная трасса нормализованной программы ж = (¿о,-Р, -О). Тогда ||Т[г]|| ^ ЦТ'ЬШ пРи ъ ^ 3- Если при этом трасса Т является конечным вычислением и ТЦ] — его последний терм, то равенство норм достигается в том и только в том случае, когда ТЩ — кратчайшее раскрытие терма ТЩ.

Справедливость леммы вытекает из того, что каждое раскрытие терма ТЩ является также и раскрытием терма ТЩ.

Лемма 3. Если ф то и\ оо ж2.

Доказательство. Предположим без ограничения общности, что < Рассмотрим

кратчайшее раскрытие к терма ^. Терм к является результатом некоторого вычисления Т\ программы . По лемме 1 существует вычисление Т2 программы ж2, совместное с вычислением Т\. По лемме 2 результат вычисления Т2 либо не определен, либо имеет длину большую, чем \к\. Лемма доказана.

Считаем далее, что =

Введем понятие (ориентированного) графа совместных вычислений 0Ж1^Ж2 программ щ, ж2. Вершинами графа являются наборы вида у = (С?1, С2, Я2, и\, и2, г«1, и)2), где О^ € $ и {А}, Щ € $*, щ,Уг € ВТегт, г € {1,2}. Кроме того, для вершины у определен ее тип:

В графе г1)7Г2 также содержатся вершины у*, и т;^, не совпадающие ни с одной из описанных выше, type(г'^) = type(,Uinf) = "X". Вершина (¿¿[1], ¿о[1], К А, А, А) выделена в графе

в качестве корня.

Дуги графа С7Г1)7Г2 помечены парами {й1,й2), где с^ € С и {е}. Метки дуг, исходящих из вершины V, составляют множество {(6, <5)|<5 € £}, если type(,u) = " = "; {(е, <5)|<5 € £}, если type(,u) = и У "; {(6, е)|<5 € £}, если type(,u) = " -< "; 0, если type(,u) = "X". При этом различные дуги, исходящие из одной вершины, помечены различными парами.

Определим вершину у", в которую ведет дуга из вершины V = (С?1, С2, Т12,и1,и2,и1,и2), помеченная парой ((¿1, й2). Рассмотрим вершину у' = {О^, 0'2,К\, Н2,и'1,и2,и'1,и'2), задаваемую следующим образом. Если с^ = е, ТО Ст'^ — В ПрОТИВНОМ Случае — ^г^'г^гч ГДС ^ ^ $ и {А},

и € ВТегт.

Если (¿1 = (¿2 € С, ^ и Цб^-Ц ^ ЦОз-^'Ц, то проверяются следующие условия:

1) а 1 = а2; 2) Ц!)^^, (¿1)|| — \\02(02, й2)\\ = ЦСиЦ — ЦС^Ц; 3) для некоторого и; верно к:1и; = где кг = ¿¿«г|>||<з£ ||_цс?л|, hз-i = ¿з_гИз_г. Если хотя бы одно из условий не выполнено, то у' = V*. Если С'! = 0'2 = /ш, то у' = уш. Иначе и\ = ¿¿«¿^цо^.ц-цс^ц, иг-% = А, и'к = шЩкик, -

А; €{1,2}.

Если ^ € С и (¿з_г = £, то проверяются следующие условия: 1) ЦДДОг, (¿¿)|| = ||С?г||; 2) для некоторого «3-г верно и^-г = Если хотя бы одно из условий не выполнено, то у' = у*. Иначе и[ = А, и[ = Би 1{ищ, ||Дз-г|| - ||-Йг||), =

Вершина у" совпадает с вершиной у' в следующих случаях: 1) у' € {и,*,, т;^}; 2) type(г'') = " = "; 3) для некоторого I верно = А и и\ ф А; 4) = С2 = = К2 = А. Если выполняются соотношения

если Сг1 = л, сг2 л, =, если Ф А, С2ф А, ±, если £?1 = £?2 = А.

если 01 ф А, С2 = А, если = А, С2 Ф А,

1 —

G[ = G'2 = и'-у = и'2 = А, i?i Ф А и i?2 ф А, то v" = (Д![1], Д2[1], Д! | , Д21, А, А, Л, А). В остальных случаях вершина v" = (G",G'2, R'{, R2,u",v,2,ui',«") определяется следующими соотношениями.

Если Gi = G'2 = А и для некоторого i верно и\ Ф А, то G" = А, G'l_i = [1], i?" = Ri,

i?3_j = -йз-гЬг, и" = «¿I^IIG^Jh и'з-г = К = К I ||; «З-г =

Если G- = А, ^ А и !! = А, то G" = Щ1], = и" = А, и'^ = «s-ikllGJ'IHIG^Jb

-^Н \ -^Н ""V I

Щ - Л, -

Непосредственно из построений вытекает следующая

Л е м м а 4. Для любой вершины (Gi, G2, R\, R2, v,\, u2, v,\, u2), достижимой из корня графа GWli7T2, и любого г, г € {1, 2}, верны следующие соотношения: 1) Gj ф /inf; 2) щ = А шш «2 = А; 3) и\ = А шш йг = А; 4) ^ щ 5) |tij| ^ щ 6) \\GiUiU\Ri || = \\G2u2u2R2\\; 7) если и^-г = А, то ||Gj«j|| ^ ||0з_г||; 8) если Щ-i = А, то IlSjiijll ^ ||i?3_j||.

Поясним содержательный смысл введенных понятий. Рассмотрим процесс построения совместных вычислений программ. На каждом шаге считаются построенными термы WifiWiRi либо WiRi вычислений программ 7Tj, i G {1,2}, где Wi,Wi G BTerm, fi G Ri € 3*. Построенные термы представляются в виде hGiUiliUiRi, где h, h, v,\, и2, v,\, и2 G BTerm, G\,G2 G $ U A, R,R2 G $*, ||Gi«i|| = ЦОг^гЦ, ||«ii2i|| = Цйг-йгЦ; хотя бы одна из компонент и\, и2 совпадает с А и хотя бы одна из компонент и\, и2 также совпадает с А. Заметим, что компоненты Gj, гц, щ, Ri в так представленных термах определены однозначно. Описанные компоненты соответствуют вершине (Gi, G2, R\, R2, v,\, u2, v,\, u2) графа совместных вычислений. Запись type(v) определяет, какие термы вычислений будут рассмотрены в следующий момент функционирования программ. Если type(v) = "±", обе программы завершили свою работу. Если type(v) = " = ", на следующем шаге рассматриваются 5-преемники построенных термов для произвольного 5, 8 G С, одинакового для обеих программ. Если type(v) = "-<", на следующем шаге рассматриваются уже построенный терм второй программы и 5-преемник первой программы для произвольного 5, 8 G С. Если type(v) = " >- ", на следующем шаге рассматриваются уже построенный терм первой программы и 5-преемник второй программы для произвольного S, S G С. Корень графа GWl^2 отвечает первому шагу построения. Вершина v^ соответствует случаю, когда необходимого представления термов получить не удается. Вершина Vinf соответствует случаю, когда в обоих термах присутствует символ /inf, т. е. построенные трассы могут быть продолжены только до бесконечных вычислений.

Маршрут в графе GWu7T2 будем называть корневым, если он начинается в корне графа GWu7r2. Далее корневой маршрут в графе GWu7T2 будем называть просто маршрутом.

Рассмотрим произвольный маршрут fi и пару последовательностей логических условий <52) следующего вида. Последовательность öi есть выписанные в порядке следования в маршруте fi i-e компоненты меток дуг, отличные от е.

Каждая трасса Т в заданной программе и = (to,F, D) однозначно определяется последовательностью логических условий 8, такой, что T[j + 1] = D(T[j), 8[j)). Если последовательности S2 задают соответственно трассы Ti, Т2 в программах ж2, то пару (Ti,T2) будем называть проекцией маршрута fi.

Лемма 5. Пусть разность длин произвольного конечного маршрута fi и его префикса fi' превосходит п. Пусть, кроме того, пары трасс (Т\,Т2) и (T^Tg) являются проекциями маршрутов fi и fi' соответственно. Тогда |Ti| > |Т{| и \Т2\ > |Тз|.

Доказательство. Пусть маршрут fi оканчивается вершиной v. Если type(v) = " = ", то неравенства в условии леммы справедливы уже при добавлении одной вершины. В противном случае type(v) G {" >- ", " -< "}. При добавлении вершины к маршруту длина пятой (при type(v) = " >- ") или шестой (при type(v) = " < ") компоненты вершины уменьшается хотя бы на единицу по сравнению с предыдущей вершиной. При этом длина пятой и шестой компонент не может превышать п. Следовательно, при добавлении некоторого числа вершин, не превосходящего п, тип последней вершины будет равен " = ". При добавлении еще одной вершины неравенства в условии леммы становятся справедливыми.

Лемма 6. Любой конечный маршрут fi имеет проекцию (Т\,Т2), обладающую следующими свойствами:

1) если последняя вершина маршрута fi имеет вид (G\, G2, R\, R2, v,\, u2, u\-, u2), то трассы Ti, T2

конечны и оканчиваются соответственно термами hGiUihu\Ri и hG2u2hu2R2, где

h, h G BTerm;

2) если маршрут fi оканчивается вершиной Vinf, то Ti, Т2 суть совместные трассы, последние

термы которых содержат хотя бы по одному вхождению символа /inf.

Лемма 7. Пусть Ti, Т2 — совместные вычисления программ ni, 7г2 соответственно. Тогда существует маршрут fi с проекцией (Т{,Т2), для которого выполнены следующие условия:

1) если маршрут fi оканчивается в одной из вершин Vinf, v*,, то Т[, Т'2 суть префиксы вычислений

Ti, Т2 соответственно;

2) в противном случае 1\ Ч"{. Т> '/"5.

Справедливость лемм 6, 7 легко обосновывается индукцией по длине маршрута с применением леммы 5.

Л е м м а 8. Пусть вершина у = (Gi, G2, ¿?i, R2,ui,u2,tii,u2) является последней вершиной маршрута fi, Gi,G2 £ $ и для некоторого 8, 8 € С, верно неравенство ||Di(Gi, <5)|| — ||Л>2£)|| т^ ф ||Gi|| — ||1|- Тогда проекция маршрута fi может быть продолжена до совместных вычислений программ ж i, ж2, имеющих различные результаты.

Доказательство. Пусть (Ti,T2) — проекция маршрута fi, оканчивающегося вершиной у. По лемме 6 трассы Ti, Т2 совместны и оканчиваются термами вида t\ = hGiUihu\Ri ш t2 = = hG2u2hu2R2 соответственно, где h, h € BTerm. Несложно убедиться, что трассы Т[ и Т2, где T¡ получается из T¿ дописыванием в конец терма D(í¿,5), совместны. Без ограничения общности будем считать, что ||Di(Gi, <5)|| — ||D2(G2, <5)|| < ||Gi|| — ||G2||. Продолжим трассу Т[ до вычисления Т", оканчивающегося кратчайшим раскрытием t[ терма t\. Продолжим трассу Т2 до вычисления Т2 любым совместным образом, и пусть оно оканчивается термом t'2. По лемме 2 справедливы соотношения llalli = llalli < ||t21| ^ ||í2||. Следовательно, равенство t[ = t'2 невозможно.

Л е м м а 9. Пусть вершина v = (Gi, G2, R\, R2,ui,u2,tii,u2) является последней вершиной маршрута fi и для некоторого i, i € {1, 2}, верны следующие соотношения: 1) € G^-i = А; 2) для некоторого 8, 8 € С, верно неравенство ||D¿(G¿, <5)|| ф ||G¿||. Тогда проекция маршрута fi может быть продолжена до совместных вычислений программ ж2, имеющих различные результаты.

Доказательство данной леммы повторяет доказательство леммы 8 с тем лишь различием, что трасса совпадает с трассой T3_¿.

Теорема 1. и\ оо ж2 тогда и только тогда, когда в графе GW1í7T2 из корня достижима вершина V*.

Доказательство. Необходимость. Пусть 7ti оо тт2. Это означает, что существуют совместные вычисления Ti, Т2 программ ж2 соответственно, обладающие одним из следующих свойств:

1) вычисления Ti, Т2 конечны и имеют различные результаты;

2) одно из вычислений конечно, тогда как другое бесконечно.

В первом случае определяемый леммой 7 конечный маршрут не может оканчиваться нигде, кроме вершины уф (согласно леммам 4 и 6). Во втором случае определяемый леммами 5 и 7 конечный маршрут может оканчиваться только вершиной v(согласно лемме 6).

Достаточность. Из лемм 8, 9 и определения графа совместных вычислений следует, что проекция маршрута, оканчивающегося вершиной v*,, может быть продолжена до вычислений, имеющих различные результаты. Теорема доказана.

Таким образом, задача проверки сильной эквивалентности программ сводится к задаче проверки достижимости вершины vв графе Gw1í7t2 из его корня. Однако граф GW1í7T2 содержит хоть и конечное, но довольно большое (экспоненциальное относительно размеров программ) число вершин. Следующие леммы ограничивают число вершин в графе совместных вычислений сильно эквивалентных программ.

Лемма 10. Если вершины уг = (G\,G2, R\, R2,u\,u2,u\,u2), i € {1,2}, достижимы из корня графа GWu7T2 и выполнены соотношения = \uf\, |и2| = \и2\ и (u\,ul) ф то и\ ю 7г2.

Доказательство. Без ограничения общности будем считать, что и\ = и\ = А. Пусть проекция маршрута Ог, оканчивающегося в вершине уг, задает совместные трассы Т-f, Т2, оканчивающиеся термами t\ = hGihu[Ri, t2 = hG2u\hxú2R2, i € {1,2}.

Продолжим трассу Т/ до вычисления Tj1, результат которого есть кратчайшее раскрытие hw\w\ терма i}, где \w\\ = ||Gi||. Пусть 8\, 82,..., 8S — такая последовательность логических условий, что Т{[к + г] = Di (Ti [А; + г — 1], <5¿), где к = (Т/), 1 ^ i ^ s. Продолжим трассу Tj2 до вычисления Tf таким

образом, чтобы выполнялось равенство Т2р + г] = Di(T2p + г — 1], <5j), где I = |Т2|. Тогда результат вычисления Т2 будет иметь вид gw\wf.

Продолжим произвольным образом трассу Tg, i G {1, 2}, до вычисления Т^, совместного с вычислением 7"|. Если какое-либо из вычислений 7~J. l'.j бесконечно, то tti оо тт2. Если результат вычисления какого-либо из вычислений Т\ имеет вес, отличный от веса результата вычисления Т|, то ю %2. В противном случае результаты вычислений Т2, l'.j имеют вид соответственно hw\v\€i\ и gw2u2w2,

где = Nl^il = \wi\-

Так как |г4| = \и2\ и и\ ф и2, справедливо хотя бы одно из неравенств w\v\ ф w\, w2u2 ф w\. Лемма доказана.

Лемма 11. Если вершины vl = (G\,G2, R\, R2,ui,u2,u[,u2), г G {1,2}, достижимы из корня графа GWu7T2 и выполнены соотношения = (иЦ = \и2\ и (^ь^г) Ф (гг?,то и\ ю тт2.

Доказательство. Без ограничения общности считаем, что и\ = и\ = А. Пусть проекция маршрута fi\ оканчивающегося в вершине уг, задает совместные трассы Т|, Т|, оканчивающиеся термами hGi'uihRi, hGiu2hui2R2 соответственно, i G {1,2}. Определим вычисления Tf, Т|, i G {1,2}, тем же способом, что и в доказательстве леммы 10. Результат вычисления i G {1,2}, представим в виде hlw\. Теми же рассуждениями, что и в лемме 10, можно получить, что результат вычисления Tg, i G {1, 2}, определен, имеет тот же вес, что и результат вычисления и имеет вид h%w2u2w2, где 1^2^21 = \u1w1\. Так как \иЦ = \и2\ и ф и2, справедливо хотя бы одно из неравенств w\ ф w\ Ф w2u%w2. Лемма доказана.

Из доказанных утверждений естественным образом следует описание алгоритма проверки сильной эквивалентности металинейных унарных программ.

Первый этап алгоритма состоит в приведении программ к нормализованному виду. Второй этап алгоритма состоит в построении связного подграфа графа GWli7T2, содержащего корень графа. Если число вершин в подграфе превышает (к2п3) или добавлена вершина vто согласно теореме 1 и леммам 10, 11 констатируется неэквивалентность программ. Если нельзя добавить ни одной вершины, то согласно теореме 1 констатируется эквивалентность программ.

Для определения того, содержится ли добавляемая вершина в подграфе, достаточно произвести ее посимвольное сравнение с каждой вершиной построенного подграфа. Таким образом, добавление вершины может быть произведено за время 0(&2п4), и временная сложность алгоритма не превосходит 0(к4п7).

Описание алгоритма обосновывает следующую теорему.

Теорема 2. Проблема сильной эквивалентности металинейных унарных рекурсивных программ разрешима за полиномиальное относительно размеров программ время.

В работе [2] была исследована проблема сильной эквивалентности свободных унарных рекурсивных программ, частным случаем которых являются металинейные унарные рекурсивные программы. Однако разрешающий алгоритм, предложенный в [2], имеет экспоненциальную временную сложность.

Также в работе [7] была показана разрешимость проблемы сильной эквивалентности металинейных унарных рекурсивных программ с возможностью засылки констант, но сложность разрешающего алгоритма при этом не обсуждалась.

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

СПИСОК ЛИТЕРАТУРЫ

1. Garland S. J., LuekhamD. С. Program schemes, recursion schemes and formal languages //J. Computer and System Sei. 1973. 7. N 2. P. 119-160.

2. Ashcroft E., Manna Z., Pnueli A. Decidable properties of monadic functional schemes //J. ACM. 1973. 20. N 3. P. 489-499.

3. Friedman E. P. Equivalence problems for deterministic languages and monadic recursion schemes //J. Computer and System Sei. 1977. 14. N 3. P. 342-359.

4. Захаров В. А. Об эффективной разрешимости проблемы эквивалентности линейных унарных рекурсивных программ // Математические вопросы кибернетики. № 8. М.: Наука, 1999. С. 255-273.

5. Подымов В. В. Алгоритм проверки эквивалентности линейных унарных рекурсивных программ на упорядоченных полугрупповых шкалах // Вестн. Моск. ун-та. Сер. 15. Вычисл. матем. и киберн. 2012. № 4. С. 37-43.

ВЕСТН. МОСК. УН-ТА. СЕР. 15. ВЫЧИСЛ. МАТЕМ. И КИБЕРН. 2013. № 1

27

6. Котов В.Е., Сабельфельд В.К. Теория схем программ. М.: Наука, 1991.

7. Лисовик Л. П. Металииейные схемы с засылками констант // Программирование. 1985. № 2. С. 29-38.

Поступила в редакцию 08.06.12

ON THE STRONG EQUIVALENCE CHECKING FOR METALINEAR MONADIC RECURSIVE PROGRAMS

Podymov V. V.

This paper presents a technique which makes it possible to solve the strong equivalence problem for metalinear monadic recursive program schemata in polynomial time. The main idea is to reduce the strong equivalence problem to the st-connectivity problem by analyzing a special graph which describes the set of all consistent computations for a given pair of programs.

Keywords: equivalence checking, recursive program schemata.