Научная статья на тему 'Алгоритм a1 получения оптимального изображения объектно-ориентированной модели программного комплекса по критерию совпадающего направления ребер'

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

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

Аннотация научной статьи по математике, автор научной работы — Белаш Александр Николаевич

В настоящее время графовое представление информации все больше и больше используется в различных областях точных и естественных наук. В программировании графовые модели применяются при создании программного обеспечения (управляющие графы, иерархии классов, диаграммы потоков данных), дизайне баз данных (диаграммы сущностей-связей), разработке информационных систем и систем реального времени (модели компьютерных сетей, графы состояний, сети Петри), а также в системном программировании при создании теории компиляции и преобразования программ. Пусть объектно-ориентированная модель некоторого программного комплекса P представлена в виде ациклического графа G = (V, E). Качество размещения x на графе G задается векторно-целевой функцией (ВЦФ): F(X) = {(F1(x), F2(x), F3(x), F4(x), F5(x), F6(x))|x X}. Библиогр. 1. Ил. 1.

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

ALGORITHM OF THE OPTIMUM IMAGE RECEIVING OF AN OBJECT-ORIENTED MODEL OF A PROGRAM COMPLEX DUE TO THE CRITERION OF COINCIDENT DIRECTION OF EDGES

Nowadays a graph image of information is getting more and more popular in various fields of exact and natural sciences. In programming graph models are used for software creation (managing graphs, hierarchy of classes, diagrams of data flows), design of data bases (diagrams of essential models-communications), development of information systems and systems of real time (model of computer webs, graphs of conditions, Petri nets), and also in system programming for the creation of the compilation theory and transformation of programs. Let object-oriented model of a program complex P be represented as an acyclic graph G = (V, E). The quality of placing x on the graph G is set by the vector criterion function: F(X) = {(F1(x), F2(x), F3(x), F4(x), F5(x), F6(x))|x X}.

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

ИССЛЕДОВАНИЕ ОПЕРАЦИЙ

УДК 519.16

А. Н. Белаш

Северо-Кавказский государственный технический университет

Ставрополь

АЛГОРИТМ а! ПОЛУЧЕНИЯ ОПТИМАЛЬНОГО ИЗОБРАЖЕНИЯ ОБЪЕКТНО-ОРИЕНТИРОВАННОЙ МОДЕЛИ ПРОГРАММНОГО КОМПЛЕКСА ПО КРИТЕРИЮ СОВПАДАЮЩЕГО НАПРАВЛЕНИЯ РЕБЕР

Введение

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

Постановка задачи

Пусть объектно-ориентированная модель некоторого программного комплекса Р представлена в виде ациклического графа О = (V, Е). В общем виде \У\ - множество вершин графа

О = (V, Е), \Е\ - множество ребер графа О = (V, Е). Но в применении к практической задаче построения объектно-ориентированной модели программного комплекса Р, V - число классов Vі є V программного комплекса Р, а \Е\ - число линий связей єі є Е, которые характеризуют отношения простого наследования и множественного наследования в комплексе Р. Если класс А наследует свои свойства от класса В, то ориентированное ребро єі є Е проводится от класса В по направлению к классу А. В данной задаче необходимо расположить ациклический граф программного комплекса Р на плоскости. Такое размещение обозначим х.

Пусть дан ациклический граф О = (V, Е). Разделим множество Vна элементы Ь1, Ь2, ..., Ьк. Пусть и, V є V, (и, V) є Е, а также и є Ьі и Vе Д, и верно, что і > у. Тогда элементы {Ьх} = (Ь1, Ь2, ., Ьк) будем называть уровнями разбиения множества V. Само такое разбиение {Ьх} будем называть поуровневым разбиением множества V, относящимся к некоторому размещению х. Множество таких размещений х назовем множеством допустимых решений X=Х(О) = {х} (МДР).

Применительно к задаче об объектно-ориентированном программировании Д (і = 1, к, Ьі є Ьх) есть подмножество множества V и представляет собой множество классов, находящихся в подмножестве Д.

Допустим, что при построении размещения х на графе О = (V, Е) выделена некоторая вершина Vі є V, относительно которой производится размещение графа О на плоскости. Вершина Vі є V- это один из классов, относящихся к проекту Р. Проведем на плоскости через вершину Vі вертикальную линию о, которую назовем линией симметрии. Размещение х графа О = (V, Е)

будем строить относительно линии симметрии о. Вершины vi єV, і = 1, IV , будем располагать по обе стороны от линии о согласно уровням Д1, Д2, ., Дк. При этом будем полагать, что размещение х будет симметричным, если число классов проекта Р будет равным на уровнях Д є Дх, і = 1, к слева и справа от линии о. Обозначим ЫХф -МХп- - число вершин слева и справа от линии симметрии о на уровне Ьу.

При размещении вершин графа О = (V, Е) необходимо оптимизировать критерий совпадающего направления ребер, отражающих отношения наследования между классами (вершинами

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

У к-

I1, Ькі Ьк- < 0, Ькі, Ьк- є Ьх

І0, в противном случае.

к = 1, т,

где т - число ребер графа О, формально выражает число и направление связей, отражающих отношение наследования в проекте Р; Ькі - номер уровня начала ребра єк, єк є Е, Ькі є Ьх; Ьк- -номер уровня конца ребра єк, єк є Е, Ьк- є Ьх.

При представлении объектно-ориентированной модели проекта Р в виде ациклического графа необходимо минимизировать площадь получаемого изображения 5х. Для этого необходимо минимизировать произведение Жх х Нх, где Жх - ширина получаемого размещения х. Жх определяется как максимальная величина из мощностей множеств Ь1, Ь2, ., Ьк:

Жх = тах{\Ь1\, \Ь2\, •••, \Ьк\},

где Нх - высота получаемого размещения х. Нх определяется по числу уровней в размещении х, Нх = \Ьх\.

Для повышения наглядности и простоты просмотра размещения х необходимо, чтобы оно размещалось равномерно по площади изображения. Очевидно, что для этого ширина получаемого размещения Жх должна быть равна его высоте Нх.

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

При представлении модели проекта Р в виде ациклического графа необходимо учитывать необходимость прямолинейности ребер. Если представить каждое ребро єі є Е графа О = (V, Е) в виде уравнения прямой, то очевидно, что все звенья этой прямой должны иметь один угловой коэффициент, или, иначе говоря, число сгибов прямой должно быть минимальным. Рассмотрим ребро єі є Е. Пусть это ребро состоит из ґ звеньев. Обозначим: к^ - угловой коэффициент звена 5 ребра єі є Е; Ьіт, ЬІ!ІГ - номера конечного и начального уровней звена 5 ребра є Е; аІАФ аІ5Г - номера конечной и начальной горизонтальной позиции звена 5. Пусть ребро є^ є Е состоит из к звеньев. Если ребра прямолинейны, то угловые коэффициенты всех звеньев будут равны между собой.

Введем вектор Z переменных, компоненты Ziss+1 (і = 1, т, 5 = 1, к, т = \Е \) которого определяют результат ^6(х).

= IX \ кІ,5+1 - кі,5 \> 0

^¿,5,5+1 | п

І0, в противном случае.

Иначе можно сказать, что коэффициент ziгSS+1 определяет число сгибов ребра єі є Е.

Пусть дан ациклический граф О = (V, Е). Разделим множество V на элементы Ь1, Ь2, ., Ьк. Пусть и, V є V, (и, V) є Е, а также и є Ьі и V є Ь- и верно, что і > у. Тогда элементы {Ьх} = = (Ь1, Ь2, ., Ьк) будем называть уровнями разбиения множества V. Само такое разбиение {Ьх} будем называть поуровневым разбиением множества V, относящимся к некоторому размещению х. Множество таких размещений х назовем множеством допустимых решений X=Х(О) = {х} (МДР).

Множество всех размещений х назовем множеством допустимых решений X=Х(О) = {х} (МДР).

Качество размещения х на графе О задается векторно-целевой функцией (ВЦФ):

ад = {(ВД, ВД, ^э(х), ВД, ВД, ВД)\х є X}, (1)

\Ьх\

*1( х) = ^\Ш л- - ш п;\® тій,

-=1

где Е1 (х) - симметричное размещение графа О; NXJ-■, NX ■ - число вершин слева и справа от линии симметрии о на уровне Ь-, Ь- є Ьх .

т

^2( х) = " Е Ук-- ® т1П ,

1 > к=1

где ^2( х) - совпадающее направление ребер.

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

переменных, компоненты ук- (к = 1, ІЕІ, і, - = 1,Ьх ) которого определяют результат Е2(х).

ykij

f1, Lki Lkj < 0 Lki, Lkj Є Lx;

0, в противном случае.

k = 1, m,

где m - число ребер графа G; Lki - номер уровня начала ребра ek, ek є E, Lki є Lx; Lkj - номер

уровня конца ребра ek, ek є E, Lkj є Lx.

F3 (x) = Sx ® min, где F3( x) - минимизация площади изображения.

Sx = WxHx,

где Wx - ширина размещения x; Hx - высота размещения x.

Wx определяется как максимальная величина из мощностей множеств L1, L2, ..., Lk, Wx = max{|L1|, |L2|, ..., |Lk|}. Hx - высота получаемого размещения x. Hx определяется по числу уровней в размещении x, Hx = |Lx|.

Площадь изображения представим себе в виде прямоугольника, площадь которого определяется произведением ширины Wx размещения x и его высоты Hx.

F4(x) = (Wx -Hx) ® min,

где F4( x) - равномерность распределения вершин по площади всего изображения.

Равномерность распределения вершин по площади всего изображения получается только в случае равенства ширины Wx и высоты Hx размещения x.

F5 (x) = Пx ® min,

где F5( x) - минимизация количества пересечений ребер.

Под пересечением ребер графа будем понимать случай, когда ребра имеют общую точку не в вершине графа.

П x - число пересечений на размещении x.

F6( x)=ЕЕ ziss+1 ® min^

i=1 s=1

где F6( x) - прямолинейность ребер.

k, = ■

| Li,s,q Li,

i,s,q

| ai,s,q - ai,s,r |

где т - число ребер графа О; ґ - число звеньев в ребре єі є Е ; кі5 - угловой коэффициент звена 5 ребра єі є Е .

Ьі 6- д, ЬІ8Г - номера конечного и начального уровней звена 5 ребра єі є Е .

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

Введем вектор Z переменных, компоненты zi+1 (і = 1, т, 5 = 1, к, т =\Е \) которого определяют результат Е6 (х).

Иначе можно сказать, что коэффициент zi+1 определяет число сгибов ребра е Е . Решением задачи (1) является ~ , где ~ - есть множество Парето X по векторному кри-

Будем предполагать, что исходный граф О = (V, Е) является так называемым іґ-графом, т. е. в нем имеется только одна начальная вершина, обозначаемая 5, и только одна конечная вершина, обозначаемая ґ Ясно, что любой дэг О = (V, Е) может быть преобразован в ¿ґ-граф добавлением фиктивных вершин 5 и ґ, а также дуг (5, р) и (д, ґ) для всех начальных вершин р и конечных вершин д графа О. Изображение графа легко конструируется на основе его обзорного представления.

Обзорным представлением Г заданного 5ґ-графа О называется такое его изображение, в котором каждая вершина р представлена горизонтальным отрезком Г(р), называемым вершинным отрезком, а каждая дуга (р, д) - вертикальным отрезком Г(р, д), называемым реберным отрезком, таким образом, что справедливы следующие три свойства:

- вершинные отрезки не накладываются друг на друга;

- реберные отрезки не накладываются друг на друга;

- реберный отрезок Г(р, д) имеет нижнюю границу, лежащую на Г(р), и верхнюю границу, лежащую на Г(д), и не пересекает ни один другой вершинный отрезок [1].

Анализ существующих методов решения

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

Часто для решения задачи исследования планарности пользуются методом Бадера. При этом предполагается, что в связном графе известен гамильтонов цикл. Задача определения гамильтонова цикла является -трудной.

Другой подход к исследованию планарности графов основан на теореме Понтрягина -Куратовского, которая формулируется так: граф является планарным тогда и только тогда, когда он не содержит подграфа, изоморфного с точностью до вершины степени 2 одному из графов Понтрягина - Куратовского. Эти графы, обозначаемые соответственно К5 (полный пятивершинный) и Кээ, заведомо непланарны.

Из теоремы Понтрягина - Куратовского следует, что для определения планарности графа из него нужно последовательно выбрать всевозможные сочетания 5- и 6-вершинных подграфов и сравнивать их на изоморфизм с графами К5 и Кээ соответственно.

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

0, в противном случае.

терию Е(X) = {(^(х),^2(х),^э(х),^(х),^(х),^6(х)) \ хє X}.

Аппаратная модель для определения планарности графа:

БНПВ - блок накопления планарных вершин;

БСЗТГ - блок селекции и задания топологии графа;

БРИГ - блок распознавания изоморфизма графа;

БФС - блок формирования сочетаний;

БФП - блок формирования перестановок;

БУ - блок управления

В общем случае задача определения изоморфизма ЫР--трудная, но в данном случае исследованию на изоморфизм подвергаются только 5- и 6-вершинные графы, т. е. графы малой размерности. В этом подходе используется простейший алгоритм распознавания изоморфизма - на основе полного перебора, который требует 5! = 120 тактов или 6! = 720 тактов при исследовании на изоморфизм 5- и 6-вершинных графов.

Очевидно, что для построения изображения графа с максимальной выделенной планарной частью необходимо использовать приближенный полиномиальный алгоритм. Этот алгоритм отражен в процедуре МАХ8иОЯАРН алгоритма а1.

АЛГОРИТМ а1

ВХОД: ациклический граф О = (V, Е).

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

ВЫХОД: оптимальное восходящее изображение О = (V, Е).

1. Процедура МАХ8ШИРАН.

Выделить максимальный планарный подграф О' = (V', Е1) графа О, V' с V, Е' с Е.

2. Для каждой вершины V, V є V цикл с1.

Процедура ПОЛИЛИНЕЙНОЕ ИЗОБРАЖЕНИЕ

Получение изображения рь і = 1, |V] .

3. Анализ на оптимальность изображения рі, і = 1, |V] .

4. Окончание цикла с1.

5. Окончание алгоритма а1.

Процедура ПОЛИЛИНЕЙНОЕ ИЗОБРАЖЕНИЕ ВХОД: ациклический граф О = (V, Е).

ВЫ1ХОД: изображение рі, і = 1, |V] .

1. Конструируется обзорное представление Г графа О с целочисленными координатами вершин.

2. Для каждой вершины V, V є V цикл с2.

3. Заменить вершинный отрезок Г^) на произвольную точку Р^) = (х^), у(у)) отрезка Г^).

4. Окончание цикла с2.

5. Для каждого ребра (n, v) є E цикл c3.

6. Еслиy(v) -y(n) = 1, то.

7. % Короткое ребро %. Заменить реберный отрезок Г(u, v) на отрезок с конечными вершинами P(u) и P(v).

8. Иначе % Длинное ребро %. Заменить реберный отрезок Г(и, v) на ломаную линию, соединяющую точку P(n) с точкой P(v) через точки (х(Г(и, v)), y(u) + 1) и (х(Г(и, v)), y(v) - 1).

9. Окончание цикла c3.

Процедура MAXSUGRAPH

ВХОД: ациклический граф G = (V, E).

ВЫХОД: максимальный планарный подграф G' = (V', E1) графа G, V' с V, E' с E.

Создается начальный граф G' = (V, 0). Этот граф образуется из графа G = (V, E) путем представления всех смежных вершин в виде несмежных вершин.

1. Для каждого ребра G цикл c4.

2. Добавляется на каждом шаге по одному ребру из G/G' без нарушения планарности до тех пор, пока не возникнет ситуация, когда нет ребра в G/G', добавление которого к G' не нарушает свойство планарности G'.

3. Окончание цикла c4.

Заключение

Таким образом, в работе предложен алгоритм, который решает проблему построения оптимального разбиения ациклического графа по критерию совпадающего направления ребер и получения оптимального изображения объектно-ориентированной модели программного комплекса. Но проблема построения оптимального изображения графа по критерию совпадающего направления ребер в значительной степени сопряжена с проблемой укладки графа на плоскости, которая, в свою очередь, связана с получением минимума пересечений его ребер. Задача выделения максимальной планарной части графа является NP--трудной, поэтому был проведен анализ некоторых существующих методов, решающих эту проблему, и в алгоритме а1 была предложена процедура MAXSUGRAPH, которая решает проблему получения оптимального изображения графа за полиномиальное время O(n).

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

1. Касьянов В. Н., Евстигнеев В. А. Графы в программировании: обработка, визуализация и применение. -СПб.: БХВ - Петербург, 2003. - 1104 с.

Получено 16.10.2006

ALGORITHM OF THE OPTIMUM IMAGE RECEIVING OF AN OBJECT-ORIENTED MODEL OF A PROGRAM COMPLEX DUE TO THE CRITERION OF COINCIDENT DIRECTION OF EDGES

A. N. Belash

Nowadays a graph image of information is getting more and more popular in various fields of exact and natural sciences. In programming graph models are used for software creation (managing graphs, hierarchy of classes, diagrams of data flows), design of data bases (diagrams of essential models-communications), development of information systems and systems of real time (model of computer webs, graphs of conditions, Petri nets), and also in system programming - for the creation of the compilation theory and transformation of programs. Let object-oriented model of a program complex P be represented as an acyclic graph G = (V, E). The quality of placing x on the graph G is set by the vector - criterion function: F(X) = {(Fj(x), F2(x), Fs(x), F4(x), F5(x), F6(x))\x X}.

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