Научная статья на тему 'Оптимизирующие преобразования алгоритмов, использующие свойства множеств, предикатов и операций над ними'

Оптимизирующие преобразования алгоритмов, использующие свойства множеств, предикатов и операций над ними Текст научной статьи по специальности «Математика»

CC BY
196
37
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
АЛГОРИТМ / ВЫЧИСЛИТЕЛЬНАЯ СЛОЖНОСТЬ / ОПТИМИЗИРУЮЩИЕ ПРЕОБРАЗОВАНИЯ / ЭФФЕКТИВНОСТЬ / МНОЖЕСТВА / ПРЕДИКАТЫ / ОПЕРАЦИИ / ALGORITHM / COMPUTATIONAL COMPLEXITY / OPTIMIZING TRANSFORMATIONS / EFFICIENCY / SETS / PREDICATES / OPERATIONS

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

Многие комбинаторно-оптимизационные задачи структурного синтеза относятся к классу NP-полных, время решения которых экспоненциально зависит от размера входа задачи. Большинство задач проектирования структур сложных систем имеют большую размерность входа — миллионы и более компонентов. В связи с этим даже для полиномиальных алгоритмов актуальной является проблема сокращения времени работы за счет снижения их вычислительной сложности. Цель работы — исследование предлагаемых способов снижения вычислительной сложности алгоритмов на графах и множествах, в том числе оценка эффективности этих преобразований. В статье определено понятие “оптимизирующие преобразования алгоритмов”. Обоснована актуальность их применения. Выполнена классификация способов снижения вычислительной сложности алгоритмов, использующих свойства множеств, предикатов и операций над ними. Рассмотрено подробно каждое из восьми преобразований и приведена оценка их эффективности

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

OPTIMIZING TRANSFORMATIONS OF ALGORITHMS USING PROPERTIES OF SETS, PREDICATES, AND OPERATIONS OVER THEM

Many combinatorial optimization problems of structural synthesis relate to the class of NP-complete problems, the time required to solve them depends exponentially on the problem input size. A majority of problems to design structures of complex systems have a large dimensionality of input: millions and more components. In connection with this, even for polynomial algorithms, the problem to save their computation time for expense of reducing their computational complexity is urgent. This work is aimed at the investigation of the proposed methods for reducing the computational complexity of algorithms for graphs and sets including the estimation of efficiency of these transformations. The notion of optimizing transformations of algorithms is defined. The urgency of their application is substantiated. The methods for reducing the computational complexity of algorithms using the properties of sets, predicates, and operations over them are classified. Each of eight transformations is considered in detail and its efficiency is estimated

Текст научной работы на тему «Оптимизирующие преобразования алгоритмов, использующие свойства множеств, предикатов и операций над ними»

ИНФОРМАТИКА И ВЫЧИСЛИТЕЛЬНАЯ

ТЕХНИКА

УДК 004.421+ 519.6

ОПТИМИЗИРУЮЩИЕ ПРЕОБРАЗОВАНИЯ АЛГОРИТМОВ, ИСПОЛЬЗУЮЩИЕ СВОЙСТВА МНОЖЕСТВ, ПРЕДИКАТОВ И ОПЕРАЦИЙ НАД НИМИ

В.А. Овчинников, Г.С. Иванова

МГТУ им. Н.Э. Баумана, Москва, Российская Федерация e-mail: [email protected]; [email protected]

Многие комбинаторно-оптимизационные задачи структурного синтеза относятся к классу NP-полных, время решения которых экспоненциально зависит от размера входа задачи. Большинство задач проектирования структур сложных систем имеют большую размерность входа — миллионы и более компонентов. В связи с этим даже для полиномиальных алгоритмов актуальной является проблема сокращения времени работы за счет снижения их вычислительной сложности. Цель работы — исследование предлагаемых способов снижения вычислительной сложности алгоритмов на графах и множествах, в том числе оценка эффективности этих преобразований. В статье определено понятие "оптимизирующие преобразования алгоритмов". Обоснована актуальность их применения. Выполнена классификация способов снижения вычислительной сложности алгоритмов, использующих свойства множеств, предикатов и операций над ними. Рассмотрено подробно каждое из восьми преобразований и приведена оценка их эффективности.

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

OPTIMIZING TRANSFORMATIONS OF ALGORITHMS USING PROPERTIES OF SETS, PREDICATES, AND OPERATIONS OVER THEM

V.A. Ovchinnikov, G.S. Ivanova

Bauman Moscow State Technical University, Moscow, Russian Federation e-mail: [email protected]; [email protected]

Many combinatorial optimization problems of structural synthesis relate to the class of NP-complete problems, the time required to solve them depends exponentially on the problem input size. A majority ofproblems to design structures of complex systems have a large dimensionality of input: millions and more components. In connection with this, even for polynomial algorithms, the problem to save their computation time for expense of reducing their computational complexity is urgent. This work is aimed at the investigation of the proposed methods for reducing the computational complexity of algorithms for graphs and sets including the estimation of efficiency of these transformations. The notion of optimizing transformations of algorithms is defined. The urgency of their application is substantiated. The methods for reducing the computational complexity of algorithms using the properties of sets, predicates, and operations over them are classified. Each of eight transformations is considered in detail and its efficiency is estimated.

Keywords: algorithm, computational complexity, optimizing transformations, efficiency, sets, predicates. operations.

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

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

Исходный и преобразованный алгоритмы эквивалентны, если на всех допустимых наборах входных данных задачи дают одинаковые результаты. Корректность изменений подразумевает эквивалентность заменяемого и заменяющего фрагментов и удовлетворение контекстных условий на требуемые свойства объектов алгоритма и/или связи заменяемого фрагмента с остальной частью алгоритма. Такими условиями являются, например, проверки наличия в алгоритме операторов и/или объектов, позволяющих использовать заменяющий фрагмент.

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

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

Оценим эффективность применения способа. Пусть из множества A необходимо выбирать и удалять некоторый элемент. Оценка "в худшем" числа операций для удаления сдвигом равна п — 1. Удаление замещением будет выполнено за одну операцию.

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

Рис. 1. Классификация способов снижения вычислительной сложности алгоритмов

для их реализации. В этом способе целесообразно выделить две группы:

— заменяемые и заменяющие выражения состоят из одних и тех же подмножеств;

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

К первой группе относятся, например:

— замена выражения вида X С У • Z или X с У • Z, где ^ С С Xс X), на конструкцию вида {X^} С У или {X^} с У;

— использование для определения состава некоторого подмножества вместо выражения X\{У и Z} выражения X\Угде X, У, Z с и (в частном случае У, Z с X).

Эффективность преобразования первой группы рассмотрим на примере операции строгого включения. В эквивалентности выра-

жения X С У = 2 выражению XС У нетрудно убедиться. Действительно:

X С У = 2 ^ (Уж е X)(х е У V ж е 2)

и

XС У ^ (Ух е X&х е 2)(ж е У).

Число сравнений элементов множеств X, У и 2 при реализации выражения X С У = 2 равно кор1 = IX| х (|У | + 1). Для выражения XС У при IX П 21 = 0 число операций сравнения кор2 = IX| х х 1 + (IX| - IX П 21) х |Уоткуда кор1 - кор2 = IX П 21 х |У|.

Докажем эквивалентность выражений X\{У и 2} выражению X\У. Известно, что X\{У и 2} = XП]{У и 2}. По закону де Моргана ]{У и 2} =]УП]2. Тогда X\{У и 2} = XП]УП]2, но XП]У = X\У. Отсюда X\{У и 2} = X\УП]2. С учетом {X\У}П]2 = {X\У}\2 окончательно получим X\{Уи 2} = X\У.

Покажем целесообразность замены выражения X\{У и 2} на X\У. Число сравнений элементов множеств X, У и 2 при У П2 = 0 оценивается по формуле кор1 = !УI х ^I + IXI х (¡УI + ^I). Число операций сравнения для выражения X\Убудет максимальным в предположении, что XПУ = 0, XП2 = 0 и У П 2 = 0 - кор2 = IXI х х !УI + IXI х ^I. Следовательно, кор1 — кор2 = !УI х ^I.

Рассмотрим случай У, 2 С X. При У П 2 = 0 число операций для выражения X\{У и 2} равно к'ор1 = кор1 и для выражения X\У\2к0р2 = IXI х IУI + (IXI - IУ) х откуда к0р1 - к0р2 = (IXI +

+ !УI) х^I.

Является ли выполненный нами анализ возможных преобразований в данном случае достаточно полным и обеспечивающим тем самым достижение поставленной цели — максимальное снижение вычислительной сложности за счет преобразования данного вида? Вернемся к замене X С У = 2 на {X} С У. Ответ будет положительным, если не существует других эквивалентных условий. Однако из теории множеств [2] известно, что следующие условия эквивалентны:

А С В ~ А П В = А ~ А и В = В ~ А\В = 0 А и В = и,

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

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

1) X С У = 2, 2) {X} С У, 3) {X} П У = {X}, 4) {X} и У = У, 5) {X}\У = 0, 6) } и У = и.

Оценка числа операций сравнения, необходимых для проверки условия по фрагментам 3-6, показывает, что k^3, k^4, kop6 > k^2 и kop5 = kop2, где kopi — число сравнений элементов множеств X, Y, Z, необходимых для проверки условия по i-й формуле. Таким образом, фрагменты 1, 3, 4 и 6 являются заменяемыми, а фрагмент 2 или 5 — заменяющим.

Продолжим анализ. Операция X\Z эквивалентна XП] Z, отсюда получаем следующий набор логически эквивалентных фрагментов:

7) Xn]Z С Y, 8) {Xn]Z}П Y = Xn]Z, 9) {Xn]Z}U Y = Y, 10) {Xn]Z}\Y = 0, 11) {Xn]Z}П] Y = 0, 12) ]{Xn]Z}U Y = U.

Все эти фрагменты также являются заменяемыми. Покажем это. Для определения X\Z и Xn]Z требуется выполнить |X| х |Z| и |X| х х |Z| + (|X| — |Z|) х |X| = |X|2 операций сравнения соответственно. С учетом того, что Z С X, справедливость утверждения очевидна.

В качестве примера преобразований второй группы можно привести замену выражения xi £ X1 на xi £ X2 и выражения Xi С X1 на Xi П X2 = 0, Xi П Xi = 0 на Xi С X2, если X2 = X\Xi, |Xi| > |XI2, Xi £ X или Xi С X. Очевидно, что при использовании этого преобразования число операций сравнения сокращается в k = |X1|/|X2| раз. Способ легко формализовать.

Два следующих способа снижения вычислительной сложности основаны на использовании свойств операций над множествами, заданными перечислением.

Третий способ — выбор порядка выполнения операции пересечения более чем двух множеств. Заданы множества X, Y, Z С U. Обозначим |X| = n, |Y| = m, |Z| = k. Преобразование основано на использовании свойств коммутативности и ассоциативности операции пересечения и предположении, что число сравнений при пересечении более чем двух множеств можно сократить за счет выбора порядка выполнения операции над парой множеств. Напомним, что упомянутые законы для трех множеств имеют соответственно вид

X П Y П Z = Y ПX П Z = ... и (X П Y) П Z = X П (Y П Z) = (X П Z) П Y.

В табл. 1 приведены результаты анализа трех возможных вариантов порядка определения пересечения множеств X, Y, Z.

Положим для определенности, что n > m > k. В общем случае второй вариант порядка выполнения операции предпочтительнее первого, если nm + |X П Y|k > mk + |Y П Z|n; третий вариант порядка выполнения операции предпочтительнее первого, если nm + + |X П Y|k > nk + |X П Z|m.

Рассмотрим некоторые частные случаи. Минимальное число операций сравнения для первого порядка определения пересечения трех

Таблица 1

Зависимость суммарного числа операций сравнения от порядка нахождения пересечения множеств X, У, X

№ варианта Порядок Число Мощность Суммарное число

определения сравнении множества сравнений Г

1 В = X П У, nm т1 = IX П УI пт + Т\к

В П £ T\k

2 В = У П £, mk Г2 = |У П £I тк + т2п

X П В nr2

3 В = X П £, nk Г3 = IX п £I пк + т3т

В П У T3m

множеств равно пт при X П У = 0, максимальное для второго и третьего равно к(п + т) при 2 С У. Таким образом, в указанных предположениях преобразование эффективно, если пт > к(п + т).

В случае, если 2 С У С X, имеем: г1 = т, г2 = к и г3 = к. Тогда

= ^3, ^ > = (п/к + 1)/(п/т +1) > 1, так как т > к и

- ^2 = п(т - к).

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

Пример использования преобразования: для декомпозированной на Я подсистем структуры известны цепи, связывающие пары подсистем — ребра гиперграфа и^, г, у = 1,Я, г = у. Необходимо определить цепи, общие для всех подсистем.

Четвертый способ использует свойство дистрибутивности операций над множествами: (X и У) П (X и 2) = X и (У П 2). Для (X и У) П (X и 2) минимальное число операций сравнения будет, если У, 2 С X :

= пт + пк + п2.

Максимальное число операций сравнения при определении X и и (У П 2) будет, если У = 2: = т2 + п х т. Тогда = п2 +

+ пк - т2. Преобразование эффективно, если п2 + пк > т2.

Пример применения преобразования: в схеме заданы три части Сх1(Э1, С1), Сх2(Э2, С2), Сх3(Э3, С3) — три куска гиперграфа Я^^, и1), Н2к(У,и2), и3). Необходимо определить множество

элементов, общих для соединения Сх1 с Сх2 и Сх1 с Сх3.

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

может служить использование вектора специальных признаков для определения принадлежности элементов множества тому или иному подмножеству его разбиения, отношения О "координата элемента в записи множества В соответствует координате ассоциированного с ним элемента в записи множества С".

Выполним обоснование и оценку эффективности использования предиката на примере определения принадлежности элемента некоторому подмножеству разбиения множества. Имеется разбиение множества X = {хг/г = 1, та} на т непересекающихся подмножеств У = {У 1,У2,..., Ут}, У; С X. Напомним, что для всех г € 7 = 1, т

|У;|, |Уг| > 1, У;' П Уг = 0 и и У;' = X.

В том случае, когда множество У задано перечислением, определение подмножества, которому принадлежит некоторый элемент хг множества X, может потребовать в худшем случае п операций его сравнения с ж € У; для всех ; € 7. Таким образом, асимптотическая сложность выполнения этой операции в худшем равна О (п). Из свойств разбиения множества следует, что каждый элемент множества может принадлежать только одному подмножеству и подмножество может включать более одной вершины. Следовательно, разбиение У множества X — это сюръективное отношение из X в У. Отсюда принадлежность элементов хг подмножествам разбиения У может быть задана образом РX множества X относительно соответствующего этому отношению предиката Р (X, У):

РX = {Рхг/хг € X}, Рхг = {У; € У : Рхг(У;) = "и"}, где У; С X.

Для разбиения У = {У 1,У 2, У3}, где У1 = {х1,хэ,хб}, У2 = = {х4,х6}, У3 = {х2} множества X = {х1, х2, хэ, х4, х5, х6} образ этого множества будет

РX = {У 1, У3, У1, У2, У1, У2}.

Экономнее задать сюръективное отношение из множества X в множество индексов подмножеств разбиения У. Тогда получим множество признаков — номеров подмножеств разбиения

В = {Ь/г = 1,п}, где Ьг = если хг € У;.

Если множество РX или В представлено вектором, то вычислительная сложность операции определения подмножества, которому принадлежит элемент хг, равна О (1).

Данный способ был использован в алгоритме Краскала [3] и в дальнейшем для построения процедур абстрактного типа данных — "множество" [4]. Применение этого способа в алгоритмах, выполняющих

соединение компонент связности добавлением ребер, кроме проверки условия соединения разных компонент требует коррекции имен или номеров компонент в РX или B соответственно.

Вычислительная сложность операции коррекции равна O(n). Покажем это. Пусть рассматривается операция добавления в неориентированный граф, состоящий из нескольких компонент связности, ребра Uj, у которого Гuj = {хэ,х6}, Гuj € ГU. Определив, что Рхэ = Рх6, мы установили возможность соединения компонент связности, множества вершин которых У1 = {х1,хэ,х5} и У2 = {х4,х6} соответственно. Если подмножеству вершин новой компоненты связности мы хотим дать имя У1, то образы Рхг необходимо переопределить:

Рхг = У1 : Рхг = У2/хг € X.

Таким образом, вычислительная сложность слияния п компонент, каждая из которых содержала по одному элементу, будет равна 0(п2).

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

Обозначим эти предикаты Е(У, {У;\}) и N(X, X). Истинность Е(У;, ) означает, что первым элементом подмножества У; при задании его перечислением элементов является элемент х^. Значение N(хг, хг) будет истинным, если для элемента хг следующим при перечислении элементов подмножества будет элемент хг. Для нашего примера образом множества У относительно предиката Е(У, {У;\}) будет ЕУ = {х1, х4, х2}, а образом множества X относительно предиката N(X, X) будет NX = {хэ, 0, х5, ха, 0, 0}.

Число операций слияния подмножеств зависит от соотношения мощностей подмножеств и порядка их переименования. Если последовательно выполнять слияние двух подмножеств, первое из которых состоит из одного элемента, а второе из г элементов, где г = 1,п — 1, то число операций переименования будет равно п(п — 1)/2. Число этих операций можно существенно сократить, если при слиянии двух подмножеств переименовывать подмножество меньшей мощности. Тогда при соединении двух компонент связности ребром Uj, у которого Гuj = {хг,х^} и Рхг = Рх^, необходимо проверить |У£| > |Уг|, где У£ = Р хг и У г = Р хь и при удовлетворении этого условия выполнить процедуру

(Ухг € Уг)Рхг := Рхг,

а в противном случае — процедуру

(Ужг е У^Рж» := Рж^.

Как показано в [5], в этом случае любой элемент может перейти в любое подмножество не более чем за 1 + п шагов. Теперь вычислительная сложность всех слияний будет 0(п п) — сравните с полученной ранее оценкой, равной 0(п2). Формализация данного способа и автоматизация его применения представляются сложными, но разрешимыми задачами.

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

Пусть множества Р и Ц заданы предикатами Р(X) и ). Необходимо определить множество Я = Р и Ц. Проанализируем два варианта определения множества Я.

1. Находим множества Р и Ц как характеристические множества предикатов в соответствии с выражениями

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

Р = {жг : Р(жг) = "и"/жг е X} и Ц = {жг : Ц(хг) = "и"/жг е X}.

Затем выполняем операцию их объединения: Я = Р и Ц.

Число операций сравнения, необходимых для определения множества Я, равно

= (к1 + к2)^I + !РI х I^^I,

где к1 и к2 — число операций, необходимых для определения истинности Р(ж») и Ц(ж») соответственно.

2. Определяем характеристическое множество предиката Я(X) =

= Р(X) V ):

Я = {жг : Р(жг) = "и" V Ц(жг) = "и"/жг е X}.

В этом случае число операций сравнения, необходимых для определения множества Я, равно

= (к1 + к2 + 1)|X I.

Очевидно, что применение данного преобразования целесообразно при !РI х IЦI > IXI.

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

Таблица 2

Соответствие операций над множествами операциям над предикатами

Операции над множествами Логические операции над предикатами

P U Q P(X) V Q(X)

P П Q P (X )&Q(X)

р\Q P (X )&]Q(X)

P AQ P(X)AQ(X) = (P(X) V Q(X))&] (P(X)&Q(X))

Пример использования такого преобразования в алгоритме структурного синтеза. Решается задача декомпозиции структуры системы на две подсистемы с равным числом компонентов. Моделью структуры системы является гиперграф, представленный в форме Н(X, и, ГX, Ги), IX| = п, |и| = т. В результате работы алгоритма разрезания гиперграфа на два куска Н^^^^) и Нк^^и^ получены множества X1 и X2 1 = ^2| = п/2). Рассмотрим только определение множества связей между подсистемами. Напомним, что по определению куска графа

и = {и1,1,и1,2}, и2 = {и2,2,и2,1},

и1,1 П и1,2 = 0, и2,2 П и2,1 = 0, и1,2 = и2,1 = и1 П и2,

где и1,1 и и2,2 — внутренние ребра кусков Н1к и Н2к; и1,2 и и2,1 — внешние ребра этих кусков.

Свойство, определяющее принадлежность ребра и множеству и1 (и2), можно сформулировать, например, так: "хотя бы одна вершина множества X1(X2) и ребро Uj инцидентны". При представлении множеств X, и, ГX, Ги перечислением предикаты Р1(и) и Р2(и), характеристическими множествами которых являются и1 и и2 соответственно, запишем как

Р1(и) = "Ги П Xl = 0" и Р2 (и) = "Ги П X2 = 0".

Рассмотрим 1-й и 2-й варианты определения множеств и1, и2 и

и1,2:

и1 = {uj : Гuj П X1 = 0/uj € и, Г и € Ги}; и2 = {и : Г и П X2 = 0/и j € и, Гuj € Ги}, и1,2 = и1 П и2.

Число операций сравнения, необходимых для определения множества и1,2, равно

Е1 = (к1+к2)|и| + |и1| х |и2|, где ^ = |Ги,- 1x1X11 и ^2 = |Ги,- 1x1X21.

Для разрезания на куски справедливо: |и11| + |и22| + |и12| = |и|, |и1| = |и1,1| + |и1,2| и |и2| = |и2,2| + |и2,1|. На основании закона Рента имеем |и1,2| = |Гx|x|Xl|0,5. Принимая |Ги| = А, |Гх| = р и |и11 = |и21,

получаем ^ = к2 = А(п/2), |^,21 = р(п/2)0,5 и |и| = |и21 = (т + + р(п/2)0,5)/2. Окончательно имеем

= Апт + (т + р(п/2)0,5 )2/4.

Предикат, задающий принадлежность ребра и как множеству и1, так и и2, будет иметь вид

Р1,2 (и) = "Ги П Х1 = 0"&"Ги П Х2 = 0".

Его характеристическое множество определяется по формуле

и1,2 = [щ : Г и П Х1 = 0&Гщ П Х2 = 0/щ Е и, Гщ Е Г и}.

Число операций сравнения, необходимых для определения множества и1,2, равно = Апт.

Нетрудно видеть, что число операций сравнения в этом случае меньше на Д^ = (т + р(п/2)0,5)2/4.

Седьмой способ основан на использовании операции композиции над двуместными предикатами. Заданы двуместные предикаты Г1 (X, и) и Г2 (и, Я). Необходимо определить образы элементов х относительно предиката (X, Я) = Г1 (X, и) • Г2(и, Я); здесь • — символ операции композиции, где (х,г) = "и" : Зи(Г1 (х,и) = "и" &Г2 (щ,г) = "и").

Пусть X = [х1 ,х2,х3}, и = [щ ,и2,и3,и4}, Я = [г1, ¿2, ¿3} и предикаты принимают значение "истина" на парах

Г1 (X, и) : (х1 ,Щ), (х1 ,Щ), (х2,из), (хз,^4);

Г2(и, ^): (щ,¿2), (щ,¿2), (щ,¿3), (Щ3, ¿3), (^4, ¿1), (^4,¿2).

На рис. 2 показана геометрическая интерпретация предикатов Г1 (X, и), Г2(и, Я) и Я(X, я).

Образ элемента х; Е X относительно предиката (X, Я) будет определяться по правилу

х; = [¿к : Зщ(Г1 (х;,щ) = "и"& Г2(щ) = "и")/щ Е и, ¿к Е Я}.

Рис. 2. Геометрическая интерпретация предикатов (X, и), Г2(и, 2) и их композиции (X, 2)

Для перехода к моделям задач структурного синтеза приравняем множество Z к множеству X. Множества X и и определим как вершины и ребра графа соответственно. Тогда композиция предикатов и) и Г2(и, X) — это предикат смежности графа

Е1 (X, X) = Г1^,и) • Г2(U,X).

Переходя к образам элементов множества X и и относительно предикатов и) и Г2(и, X) соответственно, получаем, что смежность вершины хг определяется как

Е1хг = {х^ : Зи(uj € Г1 хг&х^ € Г2Uj)/и € и, х^ € X}.

Логически эквивалентным выражению Зи (и € Г1хг€ Г2и) будет

Г^г П Г-1х^ = 0.

Теперь Е^^) = {х^ : Г1хг П Г-1х^ = 0/х^ € X}.

Оценим число операций сравнения, необходимых для определения образа вершины хг относительно предиката смежности двумя способами — как объединение подмножеств вершин, инцидентных ребрам и € Г1хг, и как характеристическое множество предиката Е^^).

В первом случае образ определяется по формуле

Е1хг = и Г2и,,

и

Число операций сравнения элементов множеств Г2и будет равно

|Г№|

К = |Г2и, |2 £ [1 + с(г — 2)],

г=2

где 0 < с < 1 — коэффициент, учитывающий возможность того, что у подмножеств Г2и и Г2иг, принадлежащих Г1хг, могут быть общие вершины. При |Г1хг| = р и |Г2Uj| = А число операций сравнения К1 = f (А2р2). Для определения Г2и и Г1хг потребуется менее, чем (п + т) операций проверки Г2и(хг) = "и" и Г^Ди) = "и". Тогда К1Е < (п + т + f (А2р2)).

Если |Г1хг| и |Г2Uj| ограничены т и п соответственно, то асимптотическая оценка будет 01(т2п2).

Определение Е1хг, как характеристического множества предиката Е^^), потребует К2 = |Г1хг| х |Г-1х^| п операций сравнения. При |Г1хг| = |Г-1х^| = р число операций сравнения К2 = р2п. Если |Г1хг| ограничена т, то асимптотическая оценка будет 02(т2п).

Восьмой способ — использование свойств логических операций над предикатами. Рассмотрим использование свойства коммутативности при определении характеристических множеств. Пусть необходимо определить характеристические множества предикатов

Т^) = Р(X^^), Т2^) = Р(XДф^) = Р(X^^)

и

Тэ^ ) = Р (X) V ). Их характеристические множества имеют вид

Т1 = {хг : Р(х) = "и"&д(хг) = "и"/хг € X},

Т2 = {хг : Р(хг) = "и"&]д(хг) = "и"/хг € X}

и

Тэ = {хг : Р(хг) = "и" V ф(хг) = "и"/хг € X}. Операции & и V обладают свойством коммутативности: Р(X) = )&Р(X), Р(X) )&Р(X)

и

Р(X) V ) = ) V Р(X).

Очевидно, что при определении Т1 или Т2, если Р(хг) = "л", то значение ф(хг) или ]ф(хг) нет необходимости проверять, а при определении Тэ нет необходимости проверять значение ф(хг), если Р(хг) = "и". Отсюда следует, что использование свойства коммутативности приведет к сокращению числа операций сравнения, если при определении Т1 или Т2 предикаты Р(хг) и ф(хг) или Р(хг) и ]ф(хг) соответственно располагать по возрастанию вероятности исхода "истина", а при определении Тэ предикаты Р(хг) и ф(хг) располагать по убыванию того же параметра.

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

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

ЛИТЕРАТУРА

1. Овчинников В.А. Алгоритмизация комбинаторно-оптимизационных задач при проектировании ЭВМ и систем: М.: Изд-во МГТУ им. Н.Э. Баумана, 2001. 288 с.

2. Судоплатов С.В., Овчинникова Е.В. Элементы дискретной математики: учебник. М.: ИНФРА-М, Новосибирск: Изд-во НГТУ, 2002. 280 с.

3. Ахо А.В., Хопкрофт Д.Э., Ульман Д.Д. Построение и анализ вычислительных алгоритмов: пер. с англ. М.: Мир, 1979. 535 с.

4. Ахо А.В., Хопкрофт Д.Э., Ульман Д.Д.Структуры данных и алгоритмы: пер. с англ. М.: Вильямс, 2001. 384 с.

5. Кормен Т, Лейзерсон Ч., Риверст Р. Алгоритмы: построение и анализ. М.: МЦНМО, 2000. 960 с.

REFERENCES

[1] Ovchinnikov V.A. Algoritmizatsiya kombinatorno-optimizatsionnykh zadach pri proektirovanii EVM i system [Construction of algorithms for combinatorial optimization problems in computer and system design]. Moscow, MGTU im. N.E. Baumana Publ., 2001. 288 p.

[2] Sudoplatov S.V., Ovchinnikova E.V. Elementy diskretnoy matematiki [Elements of discrete mathematics]. Moscow, INFRA-M Publ., 2002. 280 p.

[3] Aho A.V., Hopcroft J.E., Ullman J.D. The design and analysis of computer algorithms. Addison-Wesley, 1974. (Russ. ed.: Akho A.V., Khopkroft D.E., Ul'man D.D. Postroenie i analiz vychislitel'nykh algoritmov. Moscow, Mir Publ., 1979. 535 p.).

[4] Aho A.V., Hopcroft J.E., Ullman J.D. Data structures and algorithms. Addison-Wesley, 1983. (Russ. ed.: Akho A.V., Khopkroft D.E., Ul'man D.D. Struktury dannykh i algoritmy. Moscow, Vil'yams Publ., 2001. 384 p.).

[5] Cormen T.H., Leiserson C.E., Rivest R.L. Introduction to algorithms. MIT Press, 1990,1296 p. (Russ. ed.: Kormen T., Leyzerson Ch., Riverst R. Algoritmy: postroenie i analiz. Moscow. MTsNMO Publ., 2000. 960 p.).

Статья поступила в редакцию 25.02.2012

Владимир Анатольевич Овчинников — д-р техн. наук, профессор кафедры "Компьютерные системы и сети" МГТУ им. Н.Э. Баумана. Автор свыше 120 научных работ в области вычислительной техники и проектирования компьютерных систем. МГТУ им. Н.Э. Баумана, Российская Федерация, 105005, Москва, 2-я Бауманская ул., д. 5.

V.A. Ovchinnikov — Dr. Sci. (Eng.), professor of "Computer Systems and Networks" department of the Bauman Moscow State Technical University. Author of more than 120 publications in the field of computational technology and computer system design. Bauman Moscow State Technical University, Vtoraya Baumanskaya ul., 5, Moscow, 105005 Russian Federation.

Галина Сергеевна Иванова — д-р техн. наук, профессор кафедры "Компьютерные системы и сети" МГТУ им. Н.Э. Баумана. Автор свыше 50 научных работ в области вычислительной техники и проектирования программных систем. МГТУ им. Н.Э. Баумана, Российская Федерация, 105005, Москва, 2-я Бауманская ул., д. 5.

G.S. Ivanova — Dr. Sci. (Eng.), professor of "Computer Systems and Networks" department of the Bauman Moscow State Technical University. Author of more than 50 publications in the field of computational technology and software system design. Bauman Moscow State Technical University, Vtoraya Baumanskaya ul., 5, Moscow, 105005 Russian Federation.

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