Эффективные алгоритмы проверки эквивалентности программ в моделях, связанных с обработкой прерываний

7. Киселев Ю.Н. Достаточные условия оптимальности в терминах конструкций принципа максимума Пон-трягина // Материалы научного семинара "Математические модели в экономике и биологии". М.: МАКС Пресс, 2003. С. 57-67.

8. Никольский М. С. О достаточности принципа максимума Понтрягина в некоторых оптимизационных задачах // Вестн. Моск. ун-та. Сер. 15. Вычисл. матем. и киберн. 2005. № 1. С. 35-43.

9. Seierstad A., Sydsaeter К. Optimal control theory with economic applications. Amsterdam; London; N.Y.; Tokyo: North-Holland, 1993.

10. Благодатских В.И. Введение в оптимальное управление. М.: Высшая школа, 2001.

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

УДК 519.95

В.Л. Щербина, В.А. Захаров

ЭФФЕКТИВНЫЕ АЛГОРИТМЫ ПРОВЕРКИ ЭКВИВАЛЕНТНОСТИ ПРОГРАММ В МОДЕЛЯХ, СВЯЗАННЫХ С ОБРАБОТКОЙ ПРЕРЫВАНИЙ

Изучается проблема эквивалентности в двух алгебраических моделях программ, связанных с обработкой прерываний. Операторы программы разбиты на два класса — основные операторы и операторы обработки прерываний. В первой из этих моделей действует закон поглощения: каждый основной оператор подавляет результат выполнения любого оператора обработки прерываний. Это означает, что в том случае, если обработка прерывания завершается успешно и управление передается основным операторам, результат обработки прерывания не влияет на окончательный результат выполнения программы. Предложен алгоритм сложности 0(п2 logn) решения проблемы эквивалентности в указанной модели. Во второй модели наряду с законом поглощения действует закон коммутативности основных операторов. Для второй модели также предложен алгоритм, проверяющий эквивалентность программ за время 0(n4 logn).

1. Введение. Проблема эквивалентности программ состоит в том, чтобы для пары программ

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

торое вычисляется программой; в этом случае говорят о проблеме функциональной эквивалентности программ. Для разработки эффективно проверяемых достаточных условий функциональной эквивалентности применяется следующий подход, предложенный в работах [1-5]. Для заданной семантики программ о выбирается подходящая модель вычислений S, сохраняющая синтаксис программ и удовлетворяющая условию 7Г1 7Г2 => И2 ДЛЯ Любой Пары программ 7Г1, 7Г2. В этом случае говорят, что модель S аппроксимирует семантику а. Таким образом, эквивалентность программ в модели S является достаточным условием их функциональной эквивалентности относительно операционной семантики а. В серии работ [4, 6] были выделены классы алгебраических моделей программ, пригодные для аппроксимации последовательных императивных алголоподобных программ. Также в работах [1, 7-9] были описаны условия, гарантирующие разрешимость проблемы эквивалентности в некоторых классах алгебраических моделей программ. В частности, в работе [8] был предложен один общий подход к построению полиномиальных алгоритмов проверки эквивалентности в алгебраических моделях программ, семантика которых описывается при помощи полугрупп специального вида.

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

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

2. Основные определения. Постановка задачи. Рассмотрим конечное множество А, которое назовем алфавитом операторов. Всякое слово в алфавите А называется операторной цепочкой. Для пустой операторной цепочки будет использоваться обозначение А. Конкатенация операторных цепочек ¡1\ и /г2 обозначается /11/12-

Рассмотрим также непустое конечное множество С, элементы которого соответствуют всевозможным наборам значений логических условий, которые фигурируют в рассматриваемых программах.

Пропозициональная операторная программа сигнатуры (А, С) задается помеченной системой переходов (V. вход, выход, тупик. И.'/"). где:

у — конечное множество точек программы, которое включает точку входа вход, точку выхода выход и особо выделенную точку пустого цикла тупик;

В: V ^ А — функция привязки, сопоставляющая каждой точке программы некоторый оператор из множества А;

Т: (У\ {выход, тупик}) хС ^ V — функция переходов, определяющая очередность прохождения точек программы в зависимости от значений логических условий.

Программу можно представить в виде ориентированного графа с множеством вершин V, помеченных операторами, и множеством дуг {(у,Т(у,6)) : V € V, 8 € С}, помеченных наборами значений логических условий 8. Без ограничения общности будем рассматривать только такие программы, в которых каждая вершина-точка, за исключением, может быть, точки тупик, достижима из входа и имеет ориентированный путь, соединяющий ее с выходом программы. Размером |-7г| программы ж назовем количество точек в множестве V.

Шкалой сигнатуры А назовем тройку Т = {Б, во, Л), состоящую из непустого множества состояний данных Б, начального состояния «о, «о € Б, и функции преобразования данных Л: Б х А ^ Б. Элементы множества Б можно воспринимать как возможные состояния памяти устройства, на котором выполняется программа, а функция преобразования данных — это интерпретация операторов программы. Функцию Я можно распространить на множество операторных цепочек А*, полагая А) = я и Д*(в, 1га) = Д(Д*(5, /1), а) для всякой операторной цепочки /1, оператора а и состояния я.

Будем говорить, что состояние я" достижимо на шкале Т из состояния в' (обозначая этот факт в' С «"), если в" = К*(в', к) для некоторой операторной цепочки к. В том случае, когда С является отношением частичного порядка на множестве Б, шкалу назовем упорядоченной. В дальнейшем условимся обозначать символом С отношение строгого частичного порядка, соответствующее С.

Для каждой операторной цепочки обозначим записью [к] состояние я = К*(яо,/г), достижимое из начального состояния посредством операторной цепочки к. Мы ограничимся рассмотрением только таких шкал, в которых каждое состояние достижимо из начального. Если для любой четверки операторных цепочек Уц, /12, кз, /14 равенства [кг] = [кз], [/12] = [к4] влекут [/11/12] = [кзк^], то шкала называется полугрупповой. Можно рассматривать ее как полугруппу (5,*), в которой операция * определяется соотношением [к\\ * [/12] = [/11/12]- Полугрупповая шкала является упорядоченной тогда и только тогда, когда нейтральный элемент [А] неразложим на множители.

Детерминированной динамической моделью (или просто моделью) М сигнатуры (А, С) назовем пару £), в которой Т = (5, «о, Д) — шкала сигнатуры А, а всюду определенная функция : Б ^ С — оценка логических условий. Оценка £ задает интерпретацию логических условий программы.

Пусть 7г =

называется вычислением программы ж в модели Л/. если она удовлетворяет следующим требованиям:

1) компонентами каждой пары (vi,Si) служат точка программы у^ и состояние данных

2) г>о = вход, «о — начальное состояние шкалы Т\

3) для каждого 1, выполняются равенства у^ = T(vi-l,ít(si-l)), Si = R(si-l, B(vi-l));

4) последовательность (1) оканчивается парой (г>то,5то) тогда и только тогда, когда имеет место включение г,„ € {выход, тупик}.

Для обозначения вычисления (1) будем использовать запись сотр(ж, М). Если последовательность (1) оканчивается парой (выход. *,„). то будем называть это вычисление терминальным, а состояние «то — его результатом. Для обозначения результата вычисления будем использовать запись [сотр(ж, М)}. В остальных случаях вычисление считается безрезультатным и значение [сотр(ж, М)} полагается неопределенным.

Программы 7г' и 7г" назовем эквивалентными на шкале Т (для обозначения этого отношения будем использовать запись ж" 7г"), если для любой модели М = {Т, £), базирующейся на шкале Т, выполняется равенство [г{ж\М)] = [г{ж",М)].

Далее мы будем полагать, что алфавит операторов Д разбит на два непересекающихся конечных множества До и Л\. Элементы первого множества назовем основными операторами, второго — операторами обработки прерываний. Чтобы отразить некоторые эффекты, связанные с обработкой прерываний, будем рассматривать полугрупповые шкалы, удовлетворяющие следующему закону поглощения: для любых операторных цепочек Л.0 € До\{А}, к\ € Л\ выполняется равенство [/11/10] = [/го]-Это означает, что всякий раз, когда блок обработки прерываний успешно завершает работу и после этого основные операторы продолжают регулярное вычисление, действия операторов обработки прерываний не оказывают никакого видимого влияния на промежуточное состояние данных. Однако в том случае, если выполнение очередного блока обработки прерывания приводит к завершению вычисления программы, то результат вычисления зависит как от основных операторов, так и от тех операторов обработки прерывания, которые привели к завершению вычисления. Мы обозначим символом Та шкалу, множеством состояний которой является полугруппа, порожденная операторами из Д; определяющими соотношениями этой полугруппы являются тождества вида у * х = х для всех пар операторов х € До и у € Л\. Начальным состоянием шкалы является нейтральный элемент полугруппы [А]. Как и во всякой шкале, построенной на основе полугруппы, функция преобразования Д определяется равенством Д([/г], г) = [кх] для любого элемента к и всякого оператора г € Д. Указанная алгебраическая модель была впервые представлена в работе [10].

Операторы программы могут обладать другими алгебраическими свойствами, например свойством коммутативности. Мы рассмотрим еще одну шкалу Т\, базирующуюся на полугруппе, определяющими соотношениями которой являются все тождества вида у * х = х для всех пар операторов х € До и у € Д1. а также тождества вида х' * х" = х" * х' для некоторых пар операторов ж', ж" € До-Тождества последнего вида означают, что основные операторы перестановочны, т. е. результат выполнения некоторых последовательностей основных операторов не зависит от того порядка, в котором срабатывают операторы.

3. Методы решения и результаты. Для разработки быстрых алгоритмов проверки эквивалентности программ на шкалах Та и Т\ используется метод критериальных систем, описанный в работах [7, 8]. Его суть состоит в том, что для проверки эквивалентности программ 7п и 7Г2 на заданной шкале Т нужно рассмотреть специальный граф, пути в котором соответствуют всевозможным парам совместных вычислений программ на шкале Т. Каждая вершина графа представляет собой тройку вида («',«", ад), в которой у', у" — это точки в программах и тгг, а ад — это элемент специальной полугруппы (так называемой критериальной системы), при помощи которого алгебраическими средствами оценивается степень различия промежуточных состояний данных я1 и я" вычислений программ 7Г1 и 7Г2 в тот момент, когда эти вычисления достигают точек у' и у" соответственно. Наиболее важное требование, предъявляемое к критериальной системе, состоит в том, чтобы элемент ад позволял определить, достижимо ли одно из состояний в" из другого на шкале Т. Более строгое определение критериальной системы таково.

Пусть задана упорядоченная полугрупповая шкала Т = (Б, яд, Е) и некоторое отношение -< строгого частичного порядка на Б, которое является расширением отношения строгой достижимости С на шкале Т. Тогда критериальной системой для шкалы Т называется пятерка К = (\¥, и, и)+, и)*, ср), где Ш — полугруппа с бинарной операцией о и единицей е, в которой выделена подполугруппа II и пара элементов ад+, ад*, а ср — гомоморфизм полугруппы Б х Б в полугруппу II, удовлетворяющий следующим требованиям:

1) для всякой пары состояний я', я" из Б выполняется соотношение

я' = я" ад+ о ср({я', я")) о и)* = е;

2) каковы бы ни были состояния 51,52,53,54 € Б, если выполняется равенство ад+ о ¡^({51,52)) = = ад+ о ср({яз, 54)), то выполняются соотношения

51 ^ 52 53 ^ 54, 52 ^ 51 54 ^ 53.

Заметим, что в том случае, если отношение -< совпадает с С, второе требование к критериальной системе выполняется всякий раз, когда выполняется первое.

Отношение -< разбивает множество из правого класса смежности ад+ о II на четыре непересекающихся подмножества

и< = {и)+ о ср({я 1, 52)) : 51 52}, иу = {и)+ о 9?({5Ь 52)) : 51 ^ 52}, и= = {ад+ о ср((я 1,52)) : 51 = 52}, и± — прочие элементы из класса ад+ о II.

Для заданной пары программ 7Гг = (V,. вход, выход, тупик. И,.'/",). г = 1,2, определим критериальный граф Гк-(-7Г1,7Г2). Вершинами этого графа являются тройки (г>1, г>2, ад), где ^ € V*, а ад € ад+ о и. Вершина (вход. вход, и- ) является корнем графа Гд-(7Г1,112)- Множество всех вершин графа разбито на пять попарно непересекающихся подмножеств в соответствии с указанным выше разбиением класса смежности ад+ о II:

Х< = {(г>1, г>2,«;) : го € или ^ {выход, тупик} и «2 € {выход, тупик}};

Ху = {(г>1, г>2, го) : ад € 11у или € {выход, тупик} и ^ {выход, тупик}};

Х= = {(г»1, г?2, ад) : ад € 11=, ^ € V* \ {выход, тупик}, г = 1,2};

= {(«1, «2, ад) : ад € г>г € V* \ {выход, тупик}, г = 1, 2};

= {(«ъ«2,ад) : «г е {выход, тупик}, % = 1,2}.

В графе Гк-(-7Г1,7Г2) из вершины ж = (г>1,г>2, ад) исходит дуга в вершину ж' = (г4,г>2, ад') в том и только в том случае, когда выполнено одно из следующих четырех условий:

1) ж € Х<, ад' = ад о (р(([В 1(^1)], [А])), у2 = «2, и существует такое условие 6 из множества С, что =Т1(у1,6);

2) х € Ху, ад' = ад о <у?(([А], [В2(у2))}), = VI, и существует такое условие 6 из множества С, что у'2=Т2(У2,5);

3) х € Х=, ад' = ад о ^(([51(^1)], [В2(у2))}), и существует такое условие 6 из множества С, что =Т1(«1,5) и у'2 = Т2(у2,5);

4) х € Х±, ад' = ад о (^1)], [.62(^2)])), и существуют такие условия £1, 82 из множества С, что 'о,1=Т1{'о1,51)т'о,2=Т2{'о2,52).

Вершину х = («1,^2,ад) назовем опровергающей, если {у1,у2} = {тупик,выход} или = у2 = = выход и ад ^ и=. Основная теорема о критериальных системах такова.

Теорема 1 [8]. Пусть для программ и\, ж2, выполняющих вычисления на упорядоченной полугрупповой шкале Т, задана критериальная система К и критериальный граф тгг)- Тогда 7Г1 7Г2 в том и только в том случае, когда из корня графа Г к не достижима ни одна опровергающая вершина и не исходит ни одного бесконечного маршрута, проходящего почти всегда только через вершины одного из множеств Ху или Х<.

Эта теорема сама по себе не гарантирует возможности построения эффективной процедуры проверки эквивалентности программ, поскольку критериальный граф Г к (^1,^2) может оказаться бесконечным. Однако если критериальная система К удовлетворяет определенным дополнительным требованиям, поиск опровергающих вершин можно проводить только в ограниченной части графа, примыкающей к корню. Так, например, в [7] было показано, что если для каждого элемента ад полугруппы II,

входящей в состав критериальной системы К = {Ш, II, т+, т*, ср) для упорядоченной полугрупповой шкалы Т, существует не более одного элемента и полугруппы II, являющегося решением уравнения ад+ оХощощ* = е, то для любой пары программ т, 7Гг, эквивалентных на шкале Т, из корня критериального графа Гд-(7Г1,7Г2) достижимо не более п4 вершин, где п = тах(|7Г1|, |тгэ |) - В этом случае проверку эквивалентности программ можно провести за время, полиномиальное относительно размеров анализируемых программ. На самом деле точно такого же эффекта можно достичь и при существенном ослаблении указанного требования. Для заданной критериальной системы К = {Ш, II, т+, т*, ср) обозначим символом 11+ множество всех тех элементов ад из класса смежности ад+ о II, которые присутствуют в качестве третьей компоненты хотя бы в одной вершине ж = (г>1, «2, ад), достижимой из корня критериального графа VТогда справедлива следующая теорема.

Теорема 2. Если для любого элемента ад полугруппы II, входящей в состав критериальной системы К = {Ш, II, т+, ад*, (р) для упорядоченной полугрупповой шкалы Т, существует не более г различных элементов ш\,...,адг из множества 1/+, являющихся решением уравнения X от от* = е, то для любой пары программ и\, тгг, эквивалентных на шкале Т, из корня критериального графа Гд-(7Г1,7Гг) достижимо не более гп4 вершин, где п = тах(|7Г1| , 17Гг|)-

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

Вначале рассмотрим случай, когда операторы подчиняются только закону поглощения. В качестве критериальной системы для шкалы Та возьмем пятерку К а = (И7, II, т+, ад*, ср), в которой Ш — полугруппа, порожденная множеством элементов {т+ ,т*, а, Ь, (А, А)} и {{ж, А) : х € Л} и {{А, у) : у € Л} и приведенным ниже набором определяющих соотношений. В этих тождествах для удобства обозначений мы будем придерживаться соглашения о том, что выражение {х, у) — это сокращенная форма записи композиции {х, А) о (А, у), символ ад обозначает произвольный элемент полугруппы Ш, х, у € Д, х0,х'0,ха € До, Х\, х*1, ж" € Д1. причем ж[) ф Жд и х[ ф ж":

(ж, А) о (А, у) = (А, у) о (ж, А), (А, А) о ад = ад о (А, А) = ад,

ад+ о ад* = (А, А), ад+ о (ж, ж) = ад+,

{жь А) о (ж0, А) = (ж0, А), (А, XI) о (А, ж0) = (А, ж0),

ад+ о (хо,х\) = ад+ о (жо, А), ад+ о (х\, жо) = ад+ о (А, жо),

ад+ о (ж[), Жд) = ад+ о а, а о ад = а,

т+ о (х[, ж") = ад+ о Ь, Ъ о (х\, А) = Ь о (А, Ж1) = Ь,

Ъ о (ж0, А) = (ж0, А), Ъ о (А, ж0) = (А, ж0).

Из приведенных соотношений видно, что (А, А) является нейтральным элементом полугруппы. В качестве II возьмем подполугруппу, порожденную всеми элементами вида (ж, А) и (А, ж), где ж € Л. Отображение ср зададим так:

ср(( Ж1 .. .жп,у1 . ..ут)) = {хг, X) о ••• о (хп, X) о (Х,уг) о ••• о (Х,ут),

где Жг и у,] — это произвольные операторы из Л.

Непосредственной проверкой легко убедиться, что Ка является критериальной системой для упорядоченной полугрупповой шкалы Та, если в качестве -< взять отношение С. Можно продемонстрировать также, что критериальная система Ка удовлетворяет условию теоремы 2 и гарантирует полиномиальную разрешимость проблемы эквивалентности программ на шкале Та- Приведенная ниже лемма позволяет заключить, что для любой пары программ Ж2 из корня критериального графа Га"0 (-7Г1, тгг) достижимо не более (2 |Д| + 3) |-тг 11 \ж2\ вершин, и это обстоятельство позволяет построить существено более эффективную разрешающую процедуру.

Лемма 1. Если вершина (г>1,г>2,ад) достижима из корня графа (7Г1,ж2), то верно включение ад € {ад+, ад+ о а, ад+ о Ь} и {ад+ о (ж, А) : ж € Д} и {ад+ о (А, ж) : ж € Д}.

Доказательство леммы проводится индукцией по длине кратчайшего ориентированного пути, ведущего из корня графа в рассматриваемую вершину, с использованием указанных выше определяющих соотношений полугруппы Ш критериальной системы Ко.

Таким образом, количество вершин графа (hi, ж2), достижимых из корня, не превосходит (2 |Д| + 3) |TTi | 17Г21. На основе теоремы 1 и леммы 1 получаем эффективный алгоритм проверки эквивалентности заданных программ и 1Т2 на шкале J-q. Алгоритм строит все вершины, достижимые из корня графа (7Г1,1x2)- Программы объявляются эквивалентными тогда и только тогда, когда в построенном графе нет опровергающих вершин и циклов, проходящих только через вершины одного из множеств Ху или Х<.

Корректность алгоритма следует из теоремы 1, а завершаемость — из леммы 1. Время, необходимое для построения всех вершин (и соответствующих ребер), достижимых из корня, составляет величину 0(L log L), где L — размер графа. Проверить, является ли вершина опровергающей, можно за время 0(1). Выделить в графе подграфы, состоящие только из вершин типа U_< или только из вершин типа Uy, и проверить их ацикличность можно за время O(LlogL). Поэтому время работы алгоритма ограничено сверху величиной 0(|tti| \ii2\ log |7Ti| |тгэ|)-

Теорема 3. Проблема эквивалентности пропозициональных операторных программ на шкале То разрешима за время 0(п2 log п).

Далее обратимся к проблеме эквивалентности для программ с операторами, подчиняющимися законам поглощения и перестановочности. Пусть Т — симметричное рефлексивное отношение перестановочности на множестве операторов Д0. Рассмотрим шкалу Т\, соответствующую полугруппе (S, *) с множеством образующих {z: z G Л} и множеством определяющих соотношений {х\ * Х2 = х,2 * х\ \ (xi,x2) G Т} U {у * х = х: х G Aq, у G Ai}. Нейтральный элемент полугруппы условимся обозначать А.

Пару операторных цепочек g,k G назовем Т-ортогональной, если ни один оператор из До не входит одновременно в обе цепочки д и h и каждый оператор цепочки д перестановочен с каждым оператором цепочки к. Левым (правым) ортогональным разложением пары цепочек h',g', где h',g' G v4q, назовем такую тройку (Н, h,g), H,h,g G v4q, в которой операторные цепочки h,g образуют Т-ортогональую пару и при этом верны равенства [k') = [Hh], [д') = [Нд] (соответственно [k') = [kH],

Лемма 2. Если обе тройки (Н\, к\, д\) и {Н2,к2,д2) образуют левое (правое) ортогональное разложение пары цепочек д', к', [//1] = [Н2], [/11] = [/12], [51] = [92]-

Лемма 3. Пусть операторные цепочки Ь!,Ь!',д',д" принадлежат Тогда равенство [к'к"} = = [д'д"} имеет место в том и только в том случае, когда существуют такие четыре цепочки Н,к,д,С, что тройка (Н,к,д) образует левое ортогональное разложение пары Ь,',д', а тройка {0,д,Ь) — правое ортогональное разложение пары Ъ",д".

Эта лемма отличается от аналогичной леммы, доказанной в [7], только отсутствием требований \к'\ = \д'\, \1г"\ = \д"\ (равенства длин цепочек не требуются также в определениях Т-ортогональности и ортогональных разложений). Доказательство повторяется почти целиком с очевидными изменениями (например, индукция проводится не по \Ь,'\ = \д'\, а по тт(|/г'|, |д'|)).

Опишем теперь устройство критериальной системы для полугрупповой шкалы Т\. Определим отношение -< следующим образом:

И ^ У] имеет место тогда и только тогда, когда либо одновременно выполняются неравенства

[Щ Е [9] и [Щ ф [д], либо в цепочке к содержится меньше основных операторов из множества Ао,

чем их содержится в цепочке д.

В основу этой критериальной системы положим полугруппу Ш, порожденную множеством элементов {и)+,и)*,Ь} и {{«1,52) : , С 5}. Определяющие соотношения для полугруппы Ш таковы:

W) = т)-

1) ШШ) ° ШЫ) = ЦЬМЛдт})

hi,k2,gi,g2 G А;

2) w+ о = (А, А);

3) о {х, х) =

где х G А;

где h,g€ \h\ < Ы , М Ф bl У е Л;

где h,g€ А^, \к\ ^ \д\, [к] ф [д], у G Л,:

где у\, У2 G yi ф у2; где х G До;

4) w+o{[k],[g})o{y,X) = w+o{[k],[g])

5) w+o{[k],[g})o{X,y) = w+o{[k],[g])

6) w+ о {уг,у2) =w+ о Ь,

7) bo {х, А) =

8) Ь о {у, А) = Ь, Ь о (А, у) = Ь, где у € Ль

Нейтральным элементом е полугруппы И7 служит пара (А, А). Положим ¿7 = {{[/11], [/12]) : /¿ъ € Л*}, а в качестве гомоморфизма ср возьмем отображение ¡^({«ь^г)) = (^ъ^г)- Простой проверкой можно убедиться в том, что К\ = (И7, II, ад+, ад*, 9?) является критериальной системой для шкалы

В отличие от предыдущего случая критериальный граф Г^ (7Г1,7Гг) может содержать бесконечно много вершин. Однако, воспользовавшись теоремой 2, мы покажем, что для эквивалентных программ 7Г1, ж2 из корня критериального графа достижимо лишь конечное число вершин. Для этого мы вначале выясним, как устроено множество 11+ тех элементов класса смежности ад+ о II, которые содержатся в вершинах, достижимых из корня критериального графа, а затем покажем, что для множества 11+ выполняются условия применения теоремы 2.

Л е м м а 4. Пусть х = «2, ад) — произвольная вершина, достижимая из корня критериального графа Гк± к2) для некоторой пары программ и\, ж2. Тогда либо ад = ад+, либо ад = ад+ о Ь, либо ад = ад+ о {[51], [д2]), где дид2 € Л^, Ы Ф Ш-

Доказательство. Воспользуемся индукцией по длине кратчайшего пути, ведущего из корня графа Г^ (7Г1,7Г2) в вершину х. Рассмотрим вершину х' = (у[,у'2,у}'), непосредственно предшествующую вершине х в этом пути, и операторы = В 1(у[), г2 = В2(у2), приписанные точкам у[, у'2. Если х' € Х=, то, согласно соотношениям 1 и 3, имеют место равенства ад' = ад+ и ад = ад+ о {^1, х2). Поэтому в зависимости от операторов , г2 получаем: ад = ад+, если = х2 (согласно соотношению 3); ад = ад+ о если г2 € Ао, гг ф г2;

ад = ад+ о Ь, если х2 € А\, ф х2 (согласно соотношению 6); ад = ад+ о {^1, А), если € Ао, %2 € А\ (согласно соотношению 5); ад = ад+ о (А, х2,), если € А\, г2 € Ло (согласно соотношению 4). Если х' € Х<, то, согласно индуктивному предположению и соотношениям 1 и 3, имеют место равенства ад' = ад+ о (А, [д'2]) и ад = ад+ о [д'2]), где д2 € Ло- Поэтому в зависимости от оператора получаем:

ад = ад+, если € Ао, [21] = [д'2] (согласно соотношению 3);

= ад+^ь [д'2]), если ^ € Л0 и [г1] ф [д'2]; ад' = ад+ о (А, [д2)}, если € А\ (согласно соотношению 4). Аналогичным образом справедливость утверждения леммы обосновывается и в тех случаях, когда вершина х' принадлежит классам Ху, Х±.

Лемма 5. Для каждого элемента ад из множества II о ад* существует не более двух различных элементов ад' из множества 11+, для которых выполняется равенство ад' о ад = е.

Доказательство. Согласно закону поглощения для полугруппы операторов Л, каждый элемент ад, принадлежащий классу II о ад*, можно представить в виде ад = {[51], [<72]) ° {^1}, [^2]) ° где 91,92 € Ао, /ц,/12 ^ А\. Согласно лемме 4, каждый элемент ад', принадлежащий классу 11+, можно представить либо в виде ад': = ад+, либо в виде и;'2 = ад+ о Ь, либо в виде адз = ад+ о {[д[], [д2]), где 9'ъ92^Л*о, причем [д[] ф [д'2].

1. Если выполняется равенство ад': о ад = е, то, согласно свойству критериальных систем, будут верны также равенства [д 1] = [д2] и [/11] = [Ь,2]. Тогда равенство и;'2 о ад = е будет выполняться только в том случае, если [д 1] = [д2] ф А, а равенство Ц о щ = е не будет выполняться ни для одного элемента ад^.

2. Если выполняется равенство и;'2 о ад = е, то, учитывая определяющее соотношение ад+ о Ь = = ад+ о {у\,у2) и свойство критериальных систем, можно заключить, что будут верны равенства [д 1] = [д2] и [/11] = [/г2]• Тогда будет выполняться также равенство ад': о ад = е, но равенство ад^ о ад = е не будет выполняться ни для одного элемента ад^.

3. Если выполняется равенство ад^ о ад = е, то, согласно свойству критериальных систем, будут верны также равенства [д^дх] = [д'2д2] и [/11] = [/12]. Тогда по лемме 3 существуют четыре такие цепочки С, д', д, О, что тройка {С, д', д) образует левое ортогональное разложение пары д'1,д2, а тройка {С,д,д') — правое ортогональное разложение пары д\,д2- Тогда из леммы 2 следует, что ни один другой элемент вида ад+ о {[<71], [§2}), отличный от ад^, не является решением уравнения X о ад = е. Лемма доказана.

Таким образом, как следует из леммы 5 и теоремы 2, для проверки эквивалентности программ 7Ti и 7Г2 достаточно проверить не более 2п4 вершин, достижимых из корня критериального графа Ki(ki,7t2), где п = max(|7Ti|, |тг2|).

Теорема 4. Задача проверки эквивалентности операторных программ и\ и ж2 на шкале Т\ разрешима за время 0(n4logn), где п = max(|7Ti| , 17Гг|)-

Алгоритм проверки эквивалентности состоит в последовательном построении критериального графа Г, начиная из его корня. Этот процесс продолжается до тех пор, пока не будет выполнено одно из следующих условий:

1) к построенному фрагменту нельзя добавить ни одной новой вершины;

2) к построенному фрагменту была добавлена опровергающая вершина;

3) для некоторой пары точек v\,v2 программ 111,112 в построенном фрагменте Г найдется не менее 2п2 вершин вида (v\,v2,w), где п = max(|7Ti|, |тг21)-

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

Оценим сложность алгоритма. Максимальное количество вершин в построенном фрагменте составляет величину L = 0(п4). Заметим, что для каждой вершины с пометкой (v\,v2,w+ о ([/г], [5])) необязательно хранить целиком цепочки h и g — достаточно указать ту вершину, из которой данная вершина непосредственно достижима, и различия в операторных цепочках, отвечающих этим вершинам (они имеют локальный характер). Поэтому и тип вершины (Х^, Х=, Ху, Х± или Х$) можно определить исходя из типа ее предшественника за время 0(1). Для того чтобы выяснить, имеется ли некоторая вершина в уже построенном фрагменте графа, необязательно производить сравнение длинных операторных цепочек. Можно хранить в памяти такое дерево, ребрам которого приписаны операторы, что выходящие из одной вершины ребра помечены различными операторами, а простым путям из корня до листьев соответствуют операторные цепочки, встретившиеся в элементах ш+ о ([h], [g]} пометок уже построенных вершин графа. Добавление в дерево новой операторной цепочки h', отличающейся от уже присутствующей в нем h только в ограниченном количестве символов в конце, можно провести за время 0( 1), если в явном виде задан путь, отвечающий h. Также за время 0( 1) осуществляется проверка наличия цепочки Ы в дереве. Кроме того, потребуется проверять, встречается ли в построенном фрагменте критериального графа пара (v\,v2); для этого потребуется O(logL) операций. Проверка наличия циклов осуществима за время 0(L log L). Таким образом, сложность описанного алгоритма оценивается величиной 0(п4 logn).

4. Заключение. Задачи, которые были рассмотрены в настоящей статье, можно исследовать и в более общей постановке. Например, перестановочными могут быть не только основные операторы из множества Aq, но также и операторы обработки прерывания из множества Ai- В этом случае также можно построить критериальную систему К2, которая будет устроена аналогично рассмотренным здесь системам KQ и К\. Однако, в отличие от систем KQ, для критериальной системы К2 уже не будут выполняться условия теоремы 2 об ограниченном числе решений уравнения iouo' = е в множестве U+ элементов класса смежности w+ о U, достижимых из корня критериального графа. Это означает, что даже у эквивалентных программ 7Ti и и2 из корня критериального графа T2(ni,n2) может быть достижимо бесконечно много вершин. Тем не менее всякий критериальный граф Y2{iii,ix2) устроен так, что для обнаружения опровергающей вершины в том случае, если она достижима из корня, достаточно обойти не более 0(п4) вершин, примыкающих к корню. Таким образом, проблема эквивалентности программ, в которых перестановочными являются как основные, так и вспомогательные операторы, также оказывается разрешимой за время 0(n4logn).

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

1. Глушков В.М., Летичевекий A.A. Теория дискретных преобразователей // Избранные вопросы

алгебры и логики. М.: Наука, 1973. С. 5-39.

2. Ершов А.П. Об операторных схемах Янова // Проблемы кибернетики. Вып. 20. М.: Наука, 1967. С. 181200.

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

4. Подловченко Р. И. Иерархия моделей программ // Программирование. 1981. № 2. С. 3-14.

5. Янов Ю.И. О логических схемах алгоритмов // Проблемы кибернетики. Вып. 1. М.: Физматлит, 1958. С. 75-121.

6. Подловченко Р. И. Полугрупповые модели программ // Программирование. 1981. № 4. С. 3-13.

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

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

9. Летичевский A.A. Эквивалентность автоматов относительно полугрупп с сокращением // Проблемы кибернетики. Вып. 27. М.: Наука, 1973. С. 195-212.

10. Захаров В. А. Об одной алгебраической модели программ, связанной с обработкой прерываний //Мат-лы VIII Междунар. семинара "Дискретная математика и ее приложения". М.: МАКС Пресс, 2004. С. 129-131.

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

УДК 519.6

Х. Рамиль Альварес

АЛГОРИТМЫ ДЕЛЕНИЯ И ИЗВЛЕЧЕНИЯ КВАДРАТНОГО КОРНЯ В ТРОИЧНОЙ СИММЕТРИЧНОЙ СИСТЕМЕ

Предложена модификация алгоритма деления Брусенцова для троичной симметричной системы, основанного на использовании половины модуля делителя. Рассмотрен алгоритм извлечения квадратного корня в этой системе на базе известного метода в "столбик" и применения алгоритма деления.

В работах [1, 2], в которых описана созданная в 1840 г. английским изобретателем Томасом Фау-лером троичная механическая вычислительная машина, приведены примеры деления в троичной симметричной системе. Однако в них не рассмотрены самые тонкие моменты процесса, вследствие чего их нельзя считать описанием алгоритма. Поэтому следует признать, что первые алгоритмы точного вычисления частного в троичной симметричной системе предложены Н.П. Брусенцовым в [3]. Алгоритмы деления предполагают, что значения делимого и делителя — нормализованные троичные числа, определенные в [4], т. е. они равны нулю или их абсолютные величины принадлежат интервалу (0,5; 1,5).

1. Модификация алгоритма деления Брусенцова. Рассмотрим первый из предложенных алгоритмов [3] divisionl, результат которого выдается в виде пары чисел — нормализованной мантиссы е и порядка q, соответствующих представлению частного в виде е • З9. Точность, с которой вычисляется мантисса е, задается целочисленным параметром к, указывающим количество троичных разрядов в представлении е.

procedure divisionl (с, d, е, g, к);

value к; integer к, q; real с, d; integer array e;

comment с — делимое и d — делитель равны нулю или их абсолютные величины принадлежат интервалу (0,5; 1,5). Частное представляется посредством мантиссы е[1 : к] и порядка q в виде

begin integer р; se, sd; real g;

prepare(c, d, e, q, k, sd);

comment Обнуление массива е. Удвоение делимого (с) и вычисление модуля (d) и знака (sd) делителя d;

for р := 1 step 1 until k