Научная статья на тему 'АЛГОРИТМЫ ПРОВЕРКИ ЭКВИВАЛЕНТНОСТИ ПРОГРАММ С ПРОЦЕДУРАМИ В ПРОГРЕССИВНЫХ ПОЛУГРУППОВЫХ ПЕРЕГОРОДЧАТЫХ МОДЕЛЯХ'

АЛГОРИТМЫ ПРОВЕРКИ ЭКВИВАЛЕНТНОСТИ ПРОГРАММ С ПРОЦЕДУРАМИ В ПРОГРЕССИВНЫХ ПОЛУГРУППОВЫХ ПЕРЕГОРОДЧАТЫХ МОДЕЛЯХ Текст научной статьи по специальности «Математика»

CC BY
22
6
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ПРОБЛЕМА ЭКВИВАЛЕНТНОСТИ / ПРОГРАММЫ С ПРОЦЕДУРАМИ / ПЕРЕГОРОДЧАТЫЕ МОДЕЛИ / ПОЛУГРУППЫ / EQUIVALENCE PROBLEM / PROCEDURAL PROGRAMS / GATEWAY MODELS / SEMIGROUPS

Аннотация научной статьи по математике, автор научной работы — Подымов В.В.

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Efficient equivalence-checking algorithms for procedural programs in progressive semigroup gateway models

The main focus of the paper is on the program equivalence problem: to check whether given programs have similar (equivalent) behaviours. Considered models of procedural programs --- gateway models --- are relatively young, and not much is known on decision of respective equivalence problems. We propose a decision technique for consistent halting problem for non-procedural programs which allows, combined with other known results, to state decidability and polynomial decidability of equivalence problem for procedural programs in a wide range of gateway models, and to construct respective decision algorithms.

Текст научной работы на тему «АЛГОРИТМЫ ПРОВЕРКИ ЭКВИВАЛЕНТНОСТИ ПРОГРАММ С ПРОЦЕДУРАМИ В ПРОГРЕССИВНЫХ ПОЛУГРУППОВЫХ ПЕРЕГОРОДЧАТЫХ МОДЕЛЯХ»

УДК 519.681

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

АЛГОРИТМЫ ПРОВЕРКИ ЭКВИВАЛЕНТНОСТИ ПРОГРАММ С ПРОЦЕДУРАМИ В ПРОГРЕССИВНЫХ ПОЛУГРУППОВЫХ ПЕРЕГОРОДЧАТЫХ МОДЕЛЯХ*

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

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

1. Введение. Одна из ключевых проблем теоретического анализа программ — проблема эквивалентности — формулируется так: для заданных программ проверить, имеют ли они одинаковое (эквивалентное) поведение. Для "реальных" программ эта проблема обычно неразрешима (следует из теоремы Райса-Успенского [1]), и в связи с этим анализ проблемы обычно выполняется в рамках модели, задающей класс упрощенных программных семантик. Один из видов таких моделей — алгебраические модели программ с процедурами — был предложен в [2] для моделирования последовательных программ с учетом аппарата вызовов процедур. Результаты исследования проблемы эквивалентности в алгебраических моделях программ с процедурами на текущий момент получены только для моделей особого вида, называемых перегородчатыми. Устройство класса семантик, задаваемого перегородчатой моделью, содержательно описывается так: вызов процедуры и возврат из нее могут произвольно изменить текущее состояние данных программы, а изменение данных при выполнении остальных действий подчиняется заранее выбранным законам и в рамках этих законов может быть произвольным. Основные результаты исследования проблемы эквивалентности в перегородчатых моделях предложены в [3,4]. Проблема эквивалентности программ с процедурами простого вида (примитивных) сведена к проблеме эквивалентности программ без процедур в той же модели, а произвольных программ — к проблемам эквивалентности и совместного останова (в терминах [4] — непустоты пересечения). Проблема совместного останова состоит в проверке того, задается ли моделью хотя бы одна семантика, согласно которой обе программы завершают выполнение (останавливаются). Полиномиальная разрешимость проблемы эквивалентности программ без процедур известна для широкого спектра моделей [5]. Результаты, посвященные решению проблемы совместного останова, отсутствуют. В данной работе предлагается подход к решению проблемы совместного останова программ без процедур, из которого с учетом упомянутого сведения следуют разрешимость и полиномиальная разрешимость программ с процедурами в широком спектре моделей, класс семантик которых основан на полугруппах (точнее, на моноидах, описывающих свойства примитивов программ).

2. Общие понятия и обозначения. Алфавитом называется непустое конечное множество символов. Словом в алфавите X, а также Х-словом, называется конечная последовательность символов из X. Записями X * и Л обозначаются соответственно множество всех Х-слов и пустое слово (любого алфавита). Записью |Бгде Б — последовательность, обозначается размер (длина)

1 Факультет ВМК МГУ, науч. сотр., к.ф.-м.н., e-mail: valdusQyandex.ru

* Работа выполнена при финансовой поддержке РФФИ, проект № 18-0Ю0854.

£, т. е. количество элементов, содержащихся в £. Последовательность £1 называется префиксом последовательности £2, если £2 может быть получена из £1 добавлением некоторых элементов в конец — в частности, любая последовательность является своим префиксом.

Моноид М = (5, ■, е) состоит из произвольного множеств а элементов 5, ассоциативной операции ■ : £ х £ —у £ и нейтрального элемента е: е ■ в = в ■ е = в для любого в. Моноид М принято отождествлять с множеством £, если это не приводит к неоднозначности изложения. Моноид М = (£, ■, е) порождается алфавитом X, а также называется X-моноидом, если задано отображение [■] : X* — £ такое, что £ = {[Л,] | Н € X*} и для любой пары Х-слов Н, д справедливо равенство [Н] ■ [д] = [Нд].

3. Схемы программ с процедурами. Далее считаются заданными следующие алфавиты: операторов (О), вызовов (С), возвратов (ЭТ), логических условий (£), процедурных символов (Р = С и ЭТ), действий (А = О и Р) и условий перехода (£е = £ и {е}, где е / £). Процедурой Р назовем систему (Ур,Ур,епр , ехр , Тр, Ор, Ср, Хр, Ер ), где Ур и Ур — конечные непересекающиеся множества операторных и процедурных вершин, еп р и еж р — вход и выход соответственно (епр = еж р, епр,ехр / У£ и У|), Тр : (У£ и У£ и {епр}) х £ — (У£ и У£ и {еж р}) — функция переходов, Ор : Ур° — О — функция, помечающая каждую операторную вершину выполняемым оператором, и Ср : У? — С, Жр : Ур — {1,2,... } и Др : Ур — ЭТ — функции, помечающие каждую процедурную вершину выполняемым вызовом, номером вызова и выполня-

Р

Ур = Ур и Ур и {епр, еж р} и множеством дуг {V —— V' | Тр(^,1) = V'}.

Программой (с процедурами) назовем набор процедур п = (Р1,..., Р&) с попарно непересекающимися множествами вершин, такой, что номер вызова каждой процедурной вершины каждой процедуры набора не превосходит к. Для программы п будем использовать обозначения: п[г] = Р%, УП = Ур1 и ■ ■ ■ и УРк\ УП° = У° и ■ ■ ■ и У°; У? = У^ и ••• и У£ ; ТП, ОП и СП — функции, графики которых являются объединением графиков соответствующих функций Тр4, Ор1 и Ср; процедур Рг, 1 ^ г ^ к. Введенные множества и функции назовем так же, как и объединяемые множества

п

п | п|

программы п будем считать мощность множества УП-

Состоянием вычисления программы п назовем четверку (V, V, Н, I) где V € УП, V € (Ут)*, Н € А*, I € £еи I = ев том и только том случ ае, если ^^) = (ехП, Л) ми V € У?- Начальными состояниями программы п объявим состояния вида (епП, Л, Л, I) где I € £. Трассой программы п назовем непустую последовательность ее состояний вычисления И1, И2,..., такую, что и 1 — начальное состояние и для каждой пары соседних состояний щ = (^, Н, VI, 1г),

иг+1 = (^+1,Нг+1, ^+1,1г+1) справедливо следующее. Если ^ — вход или ^ € УО то VI -— и = V,. Если V € У?, то = (^)| и = Если VI — выход, то V = ^+1и, где

и € У?, И и — Vг+l. ЕСЛИ € У,?, ТО Нг+1 = НОп(^+1). ЕСЛИ Vг+l — ВХОД, ТО Нг+1 = НСп(VI).

Если Vг+l — выход и V = vu, где и € У?, то Нг+1 = НгДП(и^^^^^^^шк случаях Нг+1 = Нг. Трасса г реализуется на функции разметки ц : А* — £ и называется ц-трассой, если для каждого состояния вычисления (V, V, Н, I) трассы г справедлива импликация I = е ^ I = ц(Н).

Если трасса г оканчивается состоянием (V, V, Н, I), то будем говорить, что трасса г оканчивается в вершине V и ею порождается слово а(г) = Н. Трассу программы п назовем вычислением, если она бесконечна или оканчивается состоянием (ежП[ф Л, Н, е), где Н € А*. Отдельно отметим, что для каждой программы п и каждой функции разметки ц существует единственное ц-вычисление программы п, и ц-трассами программы п являются в точности все префиксы ее ц-вычисления.

Пример. На рисунке изображена программа п = (п[1],п[2]) над алфавитами О = {уъу2,у3}, С = {С1,С2}, ЭТ = {г1 , г2}, £ = {0,1}, рассмотренная в качестве примера в [4] и адаптированная к системе определений данной работы. Квадратами изображены процедурные вершины, кругами — операторные вершины, двойными кругами — входы и выходы. Пример вычисления этой программы (для простоты вместо вершин указаны только их типы: еп — мод, еж — выход, о — операторная, р — процедурная):

(еп, Л, Л, 0), (о, Л, у1,0), (о, Л, у1 у2,1), (р, Л, у1 у2, е), (еп,р, у1 У2С1,1), (о,р, У1У2С1У2,1), (ех,р,У1У2С1У2Г1,0), (о, Л, у1 У2С1У2Г1У3,1), (еж, Л, у1 У2С1У2ПУ3, е). Это вычисление реализуется на любой функции разметки такой, что

МЛ) = Мш) = МУ1У2С1У2Г1) = 0 и МУ1У2) = ^(У1У2С1) = МУ1У2С1У2) = ^(У1У2С1У2Г1У3) = 1, и вычислением порождается слово У1У2С1У2^1Уз-

4. Полугрупповые перегородчатые модели программ. Записью В(М), где М — О-

моноид, обозначим перегородчатую модель программ, основанную на моноиде М. Выбором модели В(М) определяются класс допускаемых функций разметки и понятие эквивалентности программ, описанные далее.

Процедурным разбиением Ш-слова Н назовем пару ((р1,... , рп), (Н0,..., Нп)), в которой р1,..., рп € Р Н0,...,Нп € О* и Н = Н0р1Н1 р2Н2 . ..рп Нп. Значени ем [ [Н] ] Ш-слов а Н с разбиением (Р, (Н0,..., Нп)) в модели В(М) назовем пару (Р, ([Н0],..., [Нп])). Функция разметки ^ допускается моделью В(М) (и называется В(М)-раз^еткой), если для любых Ш-слов Н, д, справедлива импликация [[Н]] = [[д]] ^ ^(Н) = ^(д).

Результатом конечной трассы т в модели В(М) назовем значение [[а(т)]]. Все бесконечные трассы имеют особый результат *, отличный от всех результатов конечных трасс. Программы П1, П2 эквивалентны в модели В(М) (п ) П2), если для любой В(М)-разметки ^результаты

вычислений программ п1; п2 совпадают. Проблема эквивалентности программ в модели В(М) формулируется так: для заданных программ с процедурами П1, П2 проверить справедливость соотношения п1 ) п2.

5. Рассматриваемое семейство перегородчатых моделей программ. Моноид М назовем прогрессивным, если для любой пары О-слов Н, д, справедлива импликация [Н] = [Нд] ^ ^ д = Л. Отметим, что прогрессивный моноид в [3] называется моноидом без циклов, однако это название не очень удачно (циклом также называется полугруппа особого вида), а в [5] результаты формулируются для так называемых упорядоченных моноидов, но верны только для прогрессивных (в обоснованиях утверждений [5] используется прогрессивность моноида, при этом прогрессивный моноид всегда упорядочен, а обратное неверно для некоторых моноидов, не обладающих свойством левого сокращения).

Элемент в2 моноида М достижим из элемента $1 ($1 ^ £2), если существует элемент в, такой что в2 = в1 ■ в, и строго достижим из в1 (в1 < в2), если в1 ^ в2 и в1 = в2. Критериальная система К = (Ш, , и*, для моноида М состоит го моноида Ш = (Б^, °,е), элементов и* этого моноида, отношения нестрогого частичного порядка ^ на М, для любых элементов въ $2 удовлетворяющего импликации в1 ^ в2 ^ в1 ^ в2, и гомоморфизма ^ : М х М ^ Ш (отображения, сохраняющего операцию: ^(в1 ,в2) ° ^>(в3,в4) = ^(в1 ■ в3,в2 ■ в4)), такого, что:

1) ° ^(в1, в2) ° и* = е тогда и только тогда, когда в1 = в2;

2) для любых элементов в1, в2 моноид а М уравнение X ° ^(в1,в2) ° и* = е имеет не более одного решения относительно X, представимого в виде ° ^(в^, в^);

3) если ° ^(в1, в2) = ° <^(в3, в4), то (в1 ^ в2 ^ в3 ^ в4) и (в2 ^ в1 ^ в4 ^ в3).

Символом — будет обозначаться отношение строгого частичного порядка, индуцируемое отношением в1 — в2 ^ в1 ^ в2 и в1 = в2• В дальнейших рассуждениях понадобятся следующие

1

Пример программы с процедурами

множества элементов W: W+ = {w+ о ^>(si,s2) | si,s2 € M}, W= = {w+ о ^>(s,s) | s € M}, W^ = {w+ о <^(si,S2) | Si,S2 € M; si ^ S2}, Wy = {w+ о ^(si,S2) | si,s2 € M; S2 ^ si} и W|| = W+ \ (W= и W^ и Wy).

Сформулируем несколько проблем для критериальной системы K. Проблема достижимости: для заданных А-слов h, g проверить справедливость соотношения [h] ^ [g]. Проблема частичного тождества,: для заданных А-слов h, g, и, v проверить справедливость равенства w+ о ^>([h], [g]) = w+ о ^>([и], [v]). Проблема полного тождества: для заданных А-слов h, g, и, v проверить справедливость равенства w+ о <^([h], [g]) о w* = w+ о <^([и], [v]) о w*. Критериальная система разрешима, если существуют алгоритмы решения этих трех проблем, и эффективна, если существуют алгоритмы указанного вида, полиномиальные по времени относительно разме-h g и v M

критериальная система, и эффективно критеризуем, если для него существует эффективная критериальная система.

6. Проблема совместного останова программ без процедур. Программой без процедур назовем программу, состоящую ровно из одной процедуры и не содержащую процедурных вершин. Программа п останавливается та функции разметки если ^-вычисление программы п конечно. Для программ щ, п2 возможен совместный останов в модели B(M) (ni ~B(m) п2), если существует B(M)-разметка, на которой останавливаются обе программы ni, п2. Предлагаемое решение проблемы эквивалентности программ в модели B(M) основано на решении проблемы совместного останова программ без процедур в B(M): для произвольно заданных программ без процедур ni, п2 проверить справедливость соотношения ni ~B(m) п2.

Решение проблемы совместного останова программ без процедур для прогрессивных эффективно критеризуемых D-моноидов M можно получить, адаптировав решение проблемы эквивалентности тех же программ для тех же моноидов, предложенное в [5]. В дальнейших определениях и леммах п. 6 полагаются заданными программы без процедур ni, П2 (без ограничения общности считается, что V^i П УП2 = 0), прогрессивный моноид M = (S, -,е) и критериальная система K = (W, w+,w*, для M, где W = (SW, о, e). Трассы n, t2 программ п^ п2 соответственно назовем совместными, если существует B(M)-разметка, на которой реализуются обе трассы Ti, т2.

Графом совместных вычислений Г (для щ, п2, M и K) называется бесконечный ориентированный размеченный граф следующего вида. Вершины графа Г будем называть узлами, чтобы не путать с вершинами программ. Множество всех узлов графа Г имеет в ид х УП2 х W+. Узел (enni ,enn2 ,w+) объявляется корнем графа. Все узлы графа разобьем на пять множеств: У=, Уц, У^, Уу, Уф, определяемых следуюпщм образом. Рассмотрим узел 7 = (vi,v2,w). Включение 7 € У= верно, если vi = ежП1, v2 = ежП2 и ш € W=; 7 € Уц — если vi = ежП1, v2 = ежП2 и ш € W||; 7 € У^ — есл и vi = ежП1 и верно хотя бы одно из двух: 1) v2 = ежП2 или 2) ш € W^; 7 € Уу — есл и v2 = ежП2 и верно хотя бы одно из двух: 1) vi = ежП1 или 2) ш € Wy; 7 € Уф — в остальных случаях. Из п. 3 определения гомоморфизма критериальной системы следует, что указанное разбиение корректно, т. е. никакие два из пяти указанных множеств не содержат общих узлов.

Г

7

{(1,1) | l € £}, если 7 € У=; {(li,4) | li,l2 € оли 7 € Уц] {(l,e) | I € оли 7 € У^;

ii I2

{(e,l) | l € и 7 € Уу; 0, если 7 € Уф. Дуга (v^v2^) ———> (v', v2, ш') определяется так. Если

lj = е, то vi = vi5 а иначе vi —^ vi, i € {1,2} ш' = ш о ^([ai], [а2]), где а = А, если lj = е или v' = ежП4, а иначе а = Oni (v').

Записью Li(Q), где Q — маршрут в Г и i € {1, 2}, обозначим последовательность логических условий, являющихся i-ми компонентами меток дуг Q и выписанных в порядке следования в Q. Корневым маршрутом назовем маршрут в графе Г начинающийся в корне. Записью L(t), где

TT

выписанных в порядке следования в т. Проекцию pr(Q) = (pri(Q),pr2(Q)) корневого маршрута

О определим так: ргг(О) — трасса программы п длины (О)| +1 (бесконечная, если последовательность ¿г(О) бесконечна), такая, что Ь(рГг(О)) = Ьг(О).

Утверждение 1 [5, лемма 3]. Для любого корневого маршрута, О существует единственная проекция, и трассы рг1(О) и рг2(О) совместны. Если, кром,е того, маршрут О конечен и оканчивается в узле (11, 12, ш), то трассы рг1 (О) рг2(О) оканчиваются в вершинах 11; 12 соответственно, и ш = ° ^([а(рг1 (О))], [а(рг2(О))]).

Для сохранения наглядности изложения факты существования и единственности проекции корневого маршрута далее используются без упоминания утверждения 1.

Утверждение 2 [5, следствие из утверждения 2]. Если О — корневой маршрут иг € {1, 2}, то для любого вычисления программы пг, начинающегося с ргг(О), существует совместное вычисление программы п3_г, начинающееся с рг3_г(О).

Утверждение 3 [5, лемма 4]. Для любых совместных конечных вычислений р1, р2 программ П1, п2 соответственно существует конечный корневой маршрут О, такой, что рг1 (О) = = Р1 и РГ2 (О) = р2.

Узел графа Г назовем выходным, если обе содержащиеся в нем вершины являются выходами программ, и реализуемым, если он достижим из корня графа.

Лемма 1. п1 ~В(м) п2 тогда и только тогда, когда в графе Г реализуем хот,я, бы один выходной узел.

Доказательство. Необходимость. Если п ~®(м) П2, то существуют совместные конечные вычисления р1, р2 программ П1, П2. По утверждению 3 существует конечный корневой маршрут О, такой, что рг1(О) = р1 и рг2(О) = р^. По утверждению 1, маршрут О оканчивается в выходном узле.

Достаточность. Если в Г реализуем выходной узел 7, то существует корневой маршрут О, оканчивающийся в 7. По утверждению 1, рг1(О) и рг2(О) — совместные конечные вычисления программ П1, п2, а значит, п1 ~В(м) п2. Лемма доказана.

Вершину 1 программы без процедур назовем: завершаемой, если из 1 достижим выход, а иначе незавершаемой; нетерминальной, если из 1 достижим хотя бы один цикл, а иначе терминальной; промежуточной, если она завершаема и нетерминальна.

Лемма 2. Ни из какого узла 7 = (1^12,ш), такого что хотя бы одна из вершин 11, 12 Г

Доказательство. Так как все вершины программ без процедур, достижимые из незавер-шаемых, также являются незавершаемыми, то и в каждом узле, достижимом из 7, содержится хотя бы одна незавершаемая вершина. Выходы программ по определению завершаемы, а значит, из 7 не достижим ни один выходной узел. Лемма доказана.

Лемма 3. Если в Г реализуем хотя бы один узел 7 = (11, 12,ш), такой, что одна из вершин 11 и 12 терминальна, а другая заверимема, то в Г реализуем и хот,я, бы один выходной узел.

Доказательство. Для ясности положим, что вершина 1 терминальна, а вер шина 13_ завершаема. Рассмотрим произвольный корневой маршрут О, окачивающий ся в 7. По утверждению 1, рг1(О) и рг2(О) — совместные трассы программ П1, П2, оканчивающиеся в вершинах 11, 12. Так как вершина 13_ завершаема, существует конечное вычисление р3_ программы П3_г, начинающееся с рг3_г(О). По утверждению 2, существует вычисление рг программы пг, начинающееся с рГг(О) и совместное с р3_г- Так как вершина 1 терминальна, вычисление рг конечно. По утверждению 3 существует конечный корневой маршрут О', такой, что рп(О) = р1 и рг2(О) = р2. По утверждению 1 маршрут О' оканчивается в выходном узле. Лемма доказана.

Лемма 4. Если в Г реализуемы узлы 71 = (11,12,ш1),...,7^ = (11,12,ш^), где 11 и 12 — промежуточные вершины, элементы ш1,..., попарно различны, и N = (|п1| — 1) ■ (|п21 — 1) +1, Г

11

0 &1, 1 О2 Оп п 0 п

грамме П1 существует маршрут 10 —> 11 —> ... —> 1, такой, что 10 = 11 и 1п — терминальная

вершина. Рассмотрим кратчайший такой маршрут: 1 ^ п ^ | — 1. Аналогичными рассужде-

0 1 т 0 т ниями выберем маршрут и0 —^ и1 —^ ... —^ и" в программе п2, такой что и0 = и" —

терминальная вершина и 1 ^ т ^ |п21 — 1- По лемме 3 достаточно показать, что хотя бы из

одного узла т» достижим хотя бы один из узлов (-» , ит , ш), (-", и-7, ш), где 0 ^ г ^ п, 0 ^ j ^ ти

элемент ш произволен.

Для каждого узла 7» рассмотрим длиннейший маршрут П» в Г следующего вида: маршрут начинается с 7»; ^(П») — префикс последовательности ..., стга-1; £2(Пг) — префикс последовательности ¿1,..., Так как каждая дуга Г помечена хотя бы одним логическим условием, то длина маршрута П» не превосходит п + т — 1, а значит, маршрут П» конечен. По заданию дуг графа Г в узлах П» могут содержаться только вершины V0,..., -и"-1, и0,..., и™-1, и для последнего узла 7г' = (-', и», ш') маршрута П» справедливо хотя бы одно из трех условий: 7' € У=; = V"-1 и 7» € V.« и и» = ит-Ч 7' € У>_ и Ух- Есл и 7' = (-"-1, и-7, ш') € У. то 7' ——" (-", и-7, ш) (для некоторого ш). Если 7» = (-"-1,и7, ш») € Ух, то 7» —'—+" (-", и-7+1,ш). Если 7» = , ит-1,ш') € У>_,

то 7» -'—"> ,ит,ш). ЕслИ 7» = ,ит-1,ш') € Ух, то 7» СГ7+1(-7+1,ит,ш). Осталось показать, что хотя бы один из узлов 7», 1 ^ г ^ N не принадлежит множеству У=, т.е. что хотя бы один элемент ш' не принадлежит множеству ТУ=.

Заметим, что для каждого узла (-р, и9, ш) каждого маршрута П» справедливо равенство ш = = ш» о ^2) где = [ОП1 (-1)... ОП1 (-р)] и 82 = [ОП1 (-1)... ОП1 (-р)] — элементы моноида М, зависящие только от вершин узла и не зависящие от г. Кроме того, если г = и ш»о<^(5р, «2) € то ш- о ^(йр, 82) € так как в противном случае ш» о ^(йр, «2) о ад* = е = ш- о ^(йр, «2) о ад* (по п. 1 определения гомоморфизма критериальной системы), и тогда уравнение X о <^(5р, ^2) о ад* имеет два различных решения из множества (ш» и ш-), чего быть не может (по п. 2 определения гомоморфизма критериальной системы).

Суммарно в узлах маршрутов П», 1 ^ г ^ N содержится не более п■ т различных пар вершин программ П1, П2. Как показано выше, для каждой пары (-р,и9) не более чем в одном маршруте содержится узел (-р, и9, ш), такой, что ш € Из этого и неравенств N > (|п11 — 1)-(|п2| — 1) ^ п-т следует, что хотя бы один маршрут П» не содержит узлов множества У=. Лемма доказана.

Теорема 1. Проблема совместного останова программ без процедур в В(М) разрешима для любого прогрессивного критеризуемого О-моноида М и разрешима за, время, полиномиальное относительно размеров программ, для любого эффективно критеризуемого О-моноида М.

Доказательство. Проблема совместного останова решается алгоритмом, естественным образом вытекающим из лемм 1-4. Алгоритмом для программ без процедур П1, П2, поданных на вход, пошагово строится множество X реализуемых узлов графа Г. В алгоритме также используется множество У необработанных реализуемых узлов. В начале построения X = 0 и У = (7Г}, где 7Г — корень графа.

Шаг построения множества X выглядит так. Произвольно выбирается узел 7 множества У.

Узел 7 удаляется из У. Если 7 удовлетворяет условию леммы 2, то шаг завершается, а иначе выполняются дальнейшие действия. В У добавляются все талы, достижимые из 7 по одной дуге. Узел 7 добавляется в X. После завершения шага начинается следующий шаг.

Построение множества X завершается в каждом из следующих случаев: множество У на очередном шаге пусто; в множество X добавлен узел, удовлетворяющей лемме 3; после добавления узла в X в этом множестве содержится (|пх| — 1) ■ (|п21 — 1) + 1 узлов, удовлетворяющих лемме 4. Согласно лемме 1 и леммам, упомянутым в описании алгоритма, в последних двух случаях п1 ) п2, а в остальных случаях п1 ~В(м) п2, и алгоритмом выдается соответствующий от-

Г

содержащихся программных вершин удовлетворяет одной и только одной из лемм 2-4.

Далее полагаем N = тах(|п1|, |п21) Суммарное число узлов, появляющихся в X и У на всех шагах построения, оценивается как О^4): в X добавляется не более N2 узлов с заданной парой программных вершин, и общее число таких пар не превосходит N2; для каждого узла, добавляемого в X, в У добавляется константное число узлов (не более |£е|2). Разметка вершин программ

свойствами завершаемости и терминальности может быть выполнена перед началом построения X за полиномиальное время алгоритмами проверки достижимости вершин в графе.

Элемент о ^>([h], [g]) моноида W представляется парой слов h, g. В представлении корня используются пустые слова. При вычислении узла, достижимого по одной дуге, к словам представления соответствующим образом дописываются операторные символы. Длины слов в таких представлениях, возникающих при работе алгоритма, не превосходят N4. Среди различных представлений одного элемента алгоритмом выбирается первое полученное представление. Проверка равенства элементов, представленных парой h, g и тарой и, v, выполняется алгоритмом проверки частичного тождества в критериальной системе. Суммарно алгоритмом выполняется O(N8) таких проверок: количество шагов построения X не превосходит O(N4), и на каждом шаге выполняется не более O(N4) проверок. Для проверки принадлежности узла множествам V^, V>_, V=, Vj|, V) достаточно два раза выполнить алгоритм проверки достижимости в критериальной системе. Таким образом, если имеются алгоритмы проверки частичного тождества и достижимости в критериальной системе, то проблема совместного останова решается описанным алгоритмом, и если указанные алгоритмы для критериальной системы полиномиальны по времени, то и алгоритм решения проблемы совместного останова полиномиален. Теорема доказана.

7. Проблема эквивалентности программ с процедурами. В [4] предложен полиномиальный алгоритм проверки эквивалентности программ с процедурами, использующий два оракула, за единицу времени отвечающих на вопросы, эквивалентны ли заданные программы без процедур (первый оракул) и возможен ли совместный останов заданных программ без процедур (второй оракул). Наличием этого алгоритма обосновывается следующее утверждение.

Утверждение 4 [4, теорема 2]. Если проблемы эквивалентности и совместного останова программ без процедур в B(M) (полиномиально) разрешимы, то и проблема, эквивалентности программ с процедурам,и в B(M) (полиномиально) разрешим,а,.

Решение проблемы эквивалентности программ без процедур в B(M) для произвольных кри-теризуемых моноидов M и полиномиальное решение для эффективно критеризуемых моноидов M было предложено в [5]. Наличием этого решения обосновывается следующее утверждение.

Утверждение 5 [5, теоремы 1, 2]. Проблема эквивалентности программ, без процедур в B(M) (полиномиально) разрешима для любого прогрессивного (эффект,ивно) критеризуемого D -моноида M.

Из теоремы 1 и утверждений 4, 5 следует теорема 2, которая подводит итог исследованию, выполненному в рамках данной работы: обобщение утверждения 5 с программ без процедур на программы с процедурами в соответствующей перегородчатой модели.

Теорема 2. Проблема эквивалентности программ, с процедурам,и, в полугрупповой перегородчатой модели B(M) разрешима для, любого прогрессивного критеризуемого D-моноида M и разрешима за, время, полиномиальное относительно размеров программ,, для любого прогрессивного эффективно критеризуемого D-моноида M.

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

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

1. Rice H.G. Classes of recursively enumerable sets and their decision problems // Trans. Amer. Math. Soc. 1953. 74. P. 358-366.

2. Подловченко P. И., Долгих Б. А. Двухступенчатое моделирование программ с процедурами // Математические вопросы кибернетики. 2003. 12. С. 283-300.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

3. Подловченко Р. И., Молчанов А. Э. Разрешимость эквивалентности в перегородчатых моделях программ // Моделирование и анализ информационных систем. 2014. 21. № 2. С. 56-70.

4. Молчанов А. Э. Разрешимость эквивалентности в двухпараметрических перегородчатых моделях программ // Моделирование и анализ информационных систем. 2014. 21. № 4. С. 104-115.

5. Захаров В.А. Быстрые алгоритмы разрешения эквивалентности пропозициональных операторных программ на упорядоченных полугрупповых шкалах // Вестн. Моск. ун-та. Сер. 15. Вычисл. матем. и киберн. 1999. № 3. С. 29-35.

6. Захаров В. А. Быстрые алгоритмы разрешения эквивалентности операторных программ на уравновешенных шкалах // Математические вопросы кибернетики. 1998. 7. С. 303-324.

Поступила в редакцию 10.04.19 После доработки 11.06.19 Принята к публикации 11.06.19

i Надоели баннеры? Вы всегда можете отключить рекламу.