Научная статья на тему 'Правильная нумерация двухполюсного ориентированного графа'

Правильная нумерация двухполюсного ориентированного графа Текст научной статьи по специальности «Математика»

CC BY
698
98
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ПАРАЛЛЕЛЬНАЯ ПРОГРАММА / ОРИЕНТИРОВАННЫЙ ГРАФ / ПРАВИЛЬНАЯ НУМЕРАЦИЯ / ВЕРШИНА ВЕТВЛЕНИЯ / ВЕРШИНА ПОГЛОЩЕНИЯ / РАНГ ВЕРШИНЫ / PARALLEL PROGRAM / DIRECTED GRAPH / CORRECT NUMERING / TOP OF BRANCHING / TOP OF ABSORPTION / RANK OF TOP

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

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

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

CORRECT NUMERING OF TWO-POLE DIRECTED GRAPHS

In many problems of the system analysis a graph theory is widely used, which allows using the mathematical apparatus of analysis of binary matrices to obtain important information about the internal structure and properties of the simulated objects. In particular, algorithms for proper numbering directed graphs are used in problems of topological sorting acyclic graphs. The article deals with the universal topological sorting algorithm that allows for the correct numbering, including contour digraphs.

Текст научной работы на тему «Правильная нумерация двухполюсного ориентированного графа»

УДК 519.172+004

ПРАВИЛЬНАЯ НУМЕРАЦИЯ ДВУХПОЛЮСНОГО ОРИЕНТИРОВАННОГО ГРАФА

© 2012 Д. А. Попова-Коварцева

Самарский государственный аэрокосмический университет имени академика С. П. Королёва (национальный исследовательский университет)

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

Параллельная программа, ориентированный граф, правильная нумерация, вершина ветвления, вершина поглощения, ранг вершины.

Введение

Разработка параллельных программ является более сложным процессом по сравнению с созданием аналогичных последовательных кодов. Отчасти это связано с архитектурными особенностями современных многопроцессорных вычислительных систем параллельной обработки. Учитывая широкую распространенность вычислительных систем с распределенной памятью, для организации информационного взаимодействия между процессорами часто используется интерфейс передачи данных MPI. Несмотря на широкие возможности, которые предоставляет для разработчиков параллельных программ библиотека MPI, её применение сопровождается рядом трудностей связанных с необходимостью рациональной организации управления потоками данных между процессорами и синхронизацией вычислительных процессов. Неслучайно, что в последнее время разрабатываются высокоуровневые средства параллельного программирования, базирующиеся на MPI и облегчающие создание параллельных программ. К таким средствам относится и система PGRAPH [1, 2].

В системе PGRAPH модель параллельного алгоритма представляется в графическом виде, близком к формализму представ-

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

Основные положения

Система РОЯАРН предоставляет пользователю визуальные средства формирования графических образов разрабатываемых алгоритмов, представляемых в виде графа управления, в котором в вершинах граф-модели реализуются функциональные преобразования данных, а на дугах проверяются условия возможности перехода к следующей вершине графа. Различаются три типа дуг графа: последовательные, управляемые логическими условиями (предикатами); параллельные (безусловные) дуги, «открывающие» параллельную ветку программы и терминирующие дуги, завершающие выполнение параллельной ветки программы. Несколько упрощая ситуацию, условимся обозначать последовательные вершины графа квадратами, начало параллельной ветви программы - пустым кружочком, терминирующие вершины - «залитым» кружочком. Примеры граф-моделей программ приведены на рис. 1.

Рис. 1. Примеры граф-программ

По аналогии с последовательно-параллельными схемами соединения ненадежных элементов, используемыми в теории надежности, можно ввести в рассмотрение «классические» последовательно-параллельные модели вычислительных алгоритмов (см. рис. 1, а).

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

Из определения следует, что по построению классический Р-граф является двухполюсным направленным бесконтурным графом. Далее будем использовать алгебраическое определение ориентированного графа, заимствованное из работы [3], где под орграфом понимается пара О = (V, а) . Здесь V -множество вершин орграфа, а с V х V -отношение на множестве V (пара (и, V) е а называется дугой графа).

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

теорему 3.33 работы [3]. Теорема утверждает, что в орграфе О существует правильная ну-моерация вершин тогда и только тогда, когда О - бесконтурный граф.

В данном случае под правильной нумерацией будем понимать такую нумерацию вершин графа VI, V2,...,Vn, когда из (V, V j ) е а следует неравенство г £ ] .

Таким образом, проверка свойств орграфа на принадлежность классу классических Р-графов сводится к построению алгоритма правильной нумерации графа.

Однако в практических приложениях при построении моделей параллельных алгоритмов в системе РОЯАРИ используются не только классические схемы Р-графа. В принципе орграф может содержать циклы (см. рис. 1, случаи б и в). В этом случае необходимо произвести предварительное расконту-ривание графа, когда из всех контуров графа удаляют по одной дуге. Теорема 3.36 [3] позволяет производить подобные операции без нарушения связности графа. Теорема утверждает, что минимальное расконтуривание связного графа не нарушает его связности. Фактически расконтуривание превращает двухполюсный орграф в классический Р-граф.

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

б

а

нающихся из корневой вершины и заканчивающихся в вершине V.

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

Алгоритм правильной нумерации

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

Введем четыре списка: S0Uf - вершин ветвления, Sjn - вершин поглощения, Sr -список вершин, которым присвоен ранг, Sl - список неиспользуемых (свободных) вершин SL = V/(Sm • Sout • SJ . Введем операции добавления и удаления из списков его элементов: add(•, •) и del(•, •).

Алгоритм P-нумерации.

Шаг 0. Фиктивной дуге (¥, Vq), входящей в корневую вершину, присваивается ранг равный r(Vq) = — 1. Если корневая

вершина имеет статус «поглощающей», то все входящие в корневую вершину дуги удаляются, а в качестве текущей вершины рассматривается корневая вершина Vq . Переходим к шагу 1.

Шаг 1. Текущей вершине Vj^, рассматриваемой на k-й итерации алгоритма, присваивается ранг:

r V ) =■

г((у, , у,. )) +1, если у,. - вершинаветвления,

та* г((Ур > у к )) +1 иначе ((уЬ' ук ) е а).

Если вершина V является вершиной

ветвления, то выполняется операция пополнения списка 8ои1: add(, у,к).

Шаг 2. Для текущей вершины Vj^ выбирается непомеченная дуга перехода в следующую вершину. Выбранная дуга помечается рангом вершины Vj^ :

Г((\ ' Vk+1)) = Г(Ч ).

Если все дуги, исходящие из этой вершины помечены, то автоматически выполняется операция del (S0Ut, Vj ).

Шаг 3. Анализируется статус вершины Vjk+1, исходящей из Vj^ , в направлении

помеченной дуги: (v^ , Vj +1) е a .

Шаг 4. Если вершина Vjk+1 не является вершиной поглощения, то в качестве текущей вершины рассматривается вершина Vjk+1. Переходим к шагу 1.

Шаг 5. Иначе, при условии Vjk+1 ^ Sjn, выполняется операция пополнения списка Sjn: add (Sjn ,Vj +1). Если не все дуги, входящие в вершину Vj^+1 помечены, то из списка Sout выбирается последний элемент vj е Sout, который рассматривается как текущий. Переходим к шагу 2.

Шаг 6. Если все дуги, входящие в вершину Vjk+1 помечены, то выполняется операция del (Sjn • Vjk+1) ив качестве текущей вершины выбирается Vjk+1. Переходим

к шагу 1.;

Шаг 7. Если список Sout - пуст, а в

списке

S

jn

имеются элементы

= [У^vi2,■■■,у,кто это означает

что в графе G имеются контуры. Причем в циклических маршрутах участвует одна или несколько вершин списка Б ,п. Для идентификации вершин, принадлежащих контурам, для подграфа, составленного из вершин V / 8Г, строится двоичная булева матрица

смежности

Г 2 л г3

M

и

ее

степени

M , M ,...,M , k < n до тех пор, пока не возникнет ситуация 3 j (mj = 1). Последнее означает, что в вершину vj существует

циклический маршрут, состоящий из k шагов. Составляется список

~n = [j VAv",VJ ^ Sn, m£ = 1 i = 1,...,m .

Из списка S in выбирается вершина v^, имеющая наименьшее количество предшественников, не принадлежащих спискам Sin, Sr. В графе удаляются все непомеченные дуги, входящие в вершину V р и выполняется операция del(Sin, Vp ) , т.е. производится расконтуривание графа. В качестве текущей вершины выбирается вершина Vр . Переходим к шагу 1.

Шаг 8. Если списки S0Uf и Sin пусты и достигнута концевая вершина, то переходим к шагу 9.

Шаг 9. Вершины орграфа нумеруются послойно от корневой вершины до концевой. Под слоем графа будем понимать вершины равного ранга.

Утверждение

Для двухполюсного орграфа алгоритм Р-нумерации реализует правильную нумерацию его вершин.

Пример

Рассмотрим работу алгоритма на примере контурного графа, представленного на рисунке 3. Разметка, приведенная на рис. 3, соответствует случаю, когда алгоритм обнаружил первый контур графа. Дуги размечены рангом вершины, из которых они исходят. Из рисунка видно, что ранг равный нулю приобрела вершина 1, размечены все исходящие дуги 1-2, 1-3, 1-4.

Для определения контурных вершин на множестве V / построим матрицу смежности и матрицы её степеней.

Sln = [2,3, 4], Sout = 0, Sr = [1].

Рис. 3

4

2

5

6

Из матрицы М видно, что в циклических маршрутах участвуют вершины 2, 3, 4, 5, 6. Причем вершины 2, 3, 4 входят в список и каждая из них связана с циклами. Например, вершина 2 входит в цикл 2-5-6-2; вершина 3 - 3-4-6-3 и 3-2-5-6-3; вершина 4 -4-6-3-4. В качестве разрешающего элемента выбирается вершина 3, поскольку в неё входит только одна дуга, а в цикле участвуют две вершины (3 и 4). Из графа удалим дугу 6-3. В результате получим разметку, представленную на рис. 4, а).

Алгоритм вновь «наталкивается» на новый контур 2-5-6-2, который определяется из матрицы:

а)

4 +Г

s ?

б) Рис. 4

Удалив дугу 6-2, получим бесконтурный граф, представленный на рис. 4, б) с окончательной разметкой вершин графа. Правильная нумерация графа представлена

на рис. 5.

Рис. 5

Заключение

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

Библиографический список

1. Коварцев, А.Н. Автоматизация разработки и тестирования программных средств [Текст] / А.Н. Коварцев . - Самара: Самарский государственный аэрокосмический университет, 1999. - 150 с.

2. Жидченко, В. В. Моделирование синхронных параллельных вычислений при построении математических моделей сложных систем [Текст] / В. В. Жидченко, А. Н. Коварцев // Первая международная конференция «Системный анализ и информационные технологии» САИТ-2005: Труды конференции. В 2 т. - Т.2. - М.: КомКнига, 2005. - С. 154-160.

3. Богомолов А.М., Салий В.Н. Алгебраи- Наука, 1997. - 368 с. ческие основы теории дискретных систем. - М.:

CORRECT NUMERING OF TWO-POLE DIRECTED GRAPHS

© 2012 D. A. Popova-Kovartseva

Samara State Aerospace University named after academician S. P. Korolyov (National Research University)

In many problems of the system analysis a graph theory is widely used, which allows using the mathematical apparatus of analysis of binary matrices to obtain important information about the internal structure and properties of the simulated objects. In particular, algorithms for proper numbering directed graphs are used in problems of topological sorting acyclic graphs. The article deals with the universal topological sorting algorithm that allows for the correct numbering, including contour digraphs.

Parallel program, directed graph, correct numering, top of branching, top of absorption, rank of top.

Информация об авторе

Попова-Коварцева Дарья Александровна, аспирант кафедры программных систем, Самарский государственный аэрокосмический университет имени академика С.П. Королёва (национальный исследовательский университет). E-mail: DakKovr@mail.ru. Область научных интересов: автоматизации программирования, системный анализ.

Popova-Kovartseva Daria Alexandrovna, post-graduate student of the sub-department software systems, Samara State Aerospace University named after academician S. P. Korolyov (National Research University). E-mail: DakKovr@mail.ru. Area of scientific: automated programming, systems analysis.

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