Научная статья на тему 'Параллельный алгоритм решения задачи о паросочетании'

Параллельный алгоритм решения задачи о паросочетании Текст научной статьи по специальности «Математика»

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

Аннотация научной статьи по математике, автор научной работы — Шунгаров Х. Д.

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

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

Parallel Algorithm of Finding Maximum Matching of Graph

In research given below for the problem of finding maximum matching of connected divisible graph offered are parallel algorithm of polynomial complicity. It is proved that the application of such an algorithm for a class of graph effective is.

Текст научной работы на тему «Параллельный алгоритм решения задачи о паросочетании»

Параллельный алгоритм нахождения максимального

паросочетания в графе

Шунгаров Х. Д. (hamidsh@rambler.ru ) Карачаево-Черкесский государственный университет.

1. Введение

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

Все недостающие определения понятий, относящихся к теории параллельных алгоритмов можно найти в [4]; в [5, 6] представлены определения понятий, относящихся к теории графов.

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

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

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

Для сравнения параллельных алгоритмов между собой, а также для сравнения параллельных и последовательных алгоритмов, т.е. алгоритмов решения задач для однопроцессорных ЭВМ, используются различные характеристики. Ускорением А(а) называется величина, показывающая, во сколько раз быстрее конкретная задача может быть решена при помощи параллельного алгоритма по сравнению с последовательной реализацией такого алгоритма[4].

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

Концепция математических исследований, связанная с изучением и построением параллельных алгоритмов, называется концепцией неограниченного параллелизма, основными методами которой являются:

- расщепление задачи на независимые подзадачи;

- выделение в задаче потока независимых однотипных задач;

- применение принципа «разделяй и властвуй» с рекурсивным расщеплением задачи на две или несколько задач[4].

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

Пусть задан связный неориентированный граф О=(У, Е), с п=|У| вершинами и |Е|=т ребрами, состоящий из 0 компонент связности Е^, t=1, 2, ..., 0 и 0-1 точек

0 0

сочленения, |У^=пь |Е^=ть ^ т1 = т, ^ п( = п -0 +1. Напомним, что паросочетанием графа

г=1 г=1

О=(У, Е) называется подграф х=(Ух, Ех), порожденный на множестве попарно-несмежных ребер Ех^Е, Ух^У. Паросочетание х0 называется максимальным, если число ребер в нем наибольшее среди всех паросочетаний графа О. Задача о паросочетании состоит в нахождении максимального паросочетания х0 графа О.

В настоящей работе для решения задачи о паросочетании предлагается

параллельный алгоритм а, трудоемкость которого составляет O

( з ^ n

V03,

V У

операций, где

параметр 0>2 удовлетворяет неравенству 2 <0 <

n

. Уменьшение времени работы

Inn

предлагаемого алгоритма получено за счет его представления в параллельной форме и при том условии, что задача о паросочетании будет решаться на параллельной

вычислительной системе, состоящей из 0 процессоров. Также исследованы основные характеристики параллельного алгоритма а, такие как высота, ширина, ускорение.

В дальнейшем нам понадобятся следующие определения [5]. Вершина уе V называется насыщенной паросочетанием М графа О, если она является концевой вершиной некоторого ребра eеM. Чередующейся цепью Р в графе О называется цепь, ребра которой поочередно входят в М или Е\М. Пусть Р - чередующаяся цепь между двумя ненасыщенными вершинами в паросочетании М. Тогда симметрическая разность двух множеств ребер МФР является паросочетанием с числом ребер на единицу больше, чем в паросочетании М. При этом цепь Р называется увеличивающейся цепью по отношению к М.

3. Описание параллельного алгоритма а

Пусть граф О=(У, Е), с |У|=п, |Б|=ш, состоящий из 0 компонент связности Ог=(У^

0 0

Е), t=1, 2, ..., 0 и 0-1 точек сочленения, ^1=^, |Е1|=ш1, ^т1 = т, ^п( = п-0 +1, задан

г=1 г=1

списками смежности Му, где N - список вершин, смежных вершине уеV.

Рис. 1. Граф О=(У, Е) и его компоненты связности О1, О2, ..., О0.

В дальнейшем нам понадобится следующее определение. Расщепление точки сочленения у графа О=(У, Е), на к вершин такое, что получаются к реберно-непересекающихся подграфов Ок=(Ук, Ек), к=1, 2, ..., 0, будем называть к-расщеплением точки сочленения.

12 3 1

Параллельный алгоритм а состоит из трех частей: а , а , а . Часть а состоит из а. шагов, перенумерованных индексом г=1, 2, ..., 0-1. На каждом шаге а. фиксируется

точка сочленения vr графа Gr и эта вершина vr 2-расщепляется, re {1, 2, ..., 0-1}. В результате работы части а1 исходный граф G=(V, E) разбивается на 0 подграфов Gt=(Vt,

Et), te {1, 2, ..., 0}.

22 Часть а алгоритма а состоит из этапов а 2, перенумерованных индексом t=1, 2

,..., 0. На вход каждого из этапов аj2, te {1, 2 ,..., 0} соответственно подается граф

G0 -t+1 ~V0-f+1' E0-t+1 j, где |V0-t+1 — n0-t+1, |E0-f+1 - m0-t+1 • Каждый этап а t, te {1, 2, ..., 0}

начинает свою работу с нумерации ребер графа G0-t+1 числами n0-t+1 + 2, n0-t+1 + 4, ..., n0-t+1 + 2m0-t+1. Номер ребра (u, v) будем обозначать через N(u, v). Множество E0-t+1 ребер графа G0-t+1 хранятся в массиве END, элементы которого пронумерованы числами n0-t+1 +1, n0-t+1 + 2, ..., n0-t+1 + 2m0-t+1. На каждом этапе а2, te {1, 2, ..., 0} работает алгоритм Габова [2], который находит максимальное паросочетание M0-t+1 графа G0-t+1 — (v0-t+1,E0-t+1 j. Каждое паросочетание Mr, r=1, 2, ..., 0, хранится в массиве МАТ,

который имеет по одному элементу для каждой вершины графа Gr. Ребро (v, w)eEr входит в паросочетание Mr, если MAT(v)=w и MAT(w)=v.

Вершина veVr графа Gr, re {1, 2, ..., 0} называется внешней по отношению к фиксированной ненасыщенной вершине w тогда и только тогда, когда в этом графе существует чередующаяся цепь четной длины от w к v. Эта цепь P(v)=(v, v1, v2, ..., w) начинается с ребра (v, v1), вошедшего в паросочетание Mr графа Gr, re {1, 2, ..., 0}. Если на каком-либо шаге этапа а2, te {1, 2, ..., 0} рассматривается ребро, соединяющее внешнюю вершину w с ненасыщенной вершиной w/^w, то при этом выделяется увеличивающаяся цепь вида w *P(vj — (w',v,v1v„,wj, где * - обозначение конкатенации. Если такое ребро в графе G0-t+1 на этапе аf2, te {1, 2, ..., 0} не обнаружено, то вершина w/ не войдет ни в одну увеличивающую цепь.

На каждом этапе а2, te {1, 2, ..., 0} используется массив LABEL, состоящий из n0-t+1 — |V0-t+1 элементов такой, что каждой вершине графа G0-t+1 соответствует один

элемент. При этом элемент массива, соответствующий внешней вершине v, используется для определения увеличивающей цепи P(v). Элемент массива LABEL интерпретируется как начальная метка, или как метка вершины, или как метка ребра. Начальная вершина v0 имеет начальную метку. Увеличивающая цепь при этом P(v0)=v0.

Каждый этап aj2, te {1, 2, ..., 0} начинается с того, в графе G0-t+1 в качестве

начальной вершины выбирается точка сочленения v0-teV0-t+b для которой LABEL(v@.t)=0.

Если LABEL(v)=i, где 1<i<nt, nt = Vt , t=1, 2, ..., 0, то говорят, что вершина v

имеет метку вершины. В этом случае v является внешней вершиной и элемент LABEL(v) равен номеру другой внешней вершины. Цепь P(v) = (v, MAT (V ))* p(LABEL(v)).

Если LABEL(v)= mt+2i, где 1< i <nt, mt = Et , te {1, 2, ..., 0}, то говорят, что

вершина v имеет метку ребра. Если v - внешняя вершина и LABEL(v) содержит номер ребра, соединяющего две внешние вершины, то LABEL(v)=N(x, y). Метка ребра N(x, y) вершины v указывает, что существует чередующаяся цепь четной длины из v в начальную вершину u, которая проходит через ребро (x, y). Пусть v принадлежит цепи Р(х), а P(x, v)-часть цепи Р(х) из x в v, тогда цепь P(v) = revP(x, v)* p(y), где revP(x, v)-обращение цепи из х в v.

Если LABEL(v)<0, то вершина v не является внешней. В начале каждого этапа a j2, te {1, 2, ..., 0} полагаем LABEL(v)= -1 для всех вершин v e V0-t+1 графа G0-t+1.

На каждом этапе aj2, te {1, 2, ..., 0} алгоритма a используются массивы FIRST и OUTER. Если v - внешняя вершина, то FIRST(v) - первая не внешняя вершина в цепи P(v); если v - не внешняя вершина, то FIRST(v)=0. Массив OUTER используется для хранения внешних вершин, встречающихся при поиске увеличивающей цепи. Граф поиска растет во внешних вершинах в порядке их появления. В этих внешних вершинах графа G0-t+1, te {1, 2, ..., 0} на этапе a2 производится поиск в ширину.

Каждый этап aj2, te {1, 2, ..., 0} части a2 алгоритма a представляет собой алгоритм Габова [2] и состоит из трех процедур: PROC-EDMONS, PROC-LABEL, PROC-REMATCH. Процедура PROC-EDMONS является главной. На каждом этапе aj2, te {1,2,.,0} эта процедура начинает поиск увеличивающей цепи из каждой ненасыщенной вершины графа G0-t+1 , просматривая его ребра с целью расширить паросочетание и приписать метки. При построении увеличивающей цепи на каждом этапе af2, te {1, 2, ..., 0} вызывается процедура PROC-REMATCH, которая в графе G0-t+1 находит новое паросочетание, на одно ребро большее текущего паросочетания.

Напомним [5, 6], что «цветком» называется замкнутая чередующаяся цепь нечетной длины.

Если на каком-либо этапе аf2, te {1, 2, ..., 0} при рассмотрении некоторого ребра (v,u)e E0-t+1 графа G0-t+1 образуется «цветок», то вызывается процедура PROC-LABEL. В

этом случае вершины v и u являются внешними. Процедура PROC-LABEL выполняет следующие операции:

1) вводится переменная JOIN, значением которой является первая не внешняя вершина, которая принадлежит как P(v) так и P(u);

2) все не внешние вершины, предшествующие JOIN в P(v) или P(u) становятся внешними и помечаются меткой ребра N(v, u); эта метка указывает, что к каждой из этих вершин существует чередующаяся цепь четной длины из начальной вершины, который проходит через ребро (v, u);

3) после этого JOIN - первая не внешняя вершина как в P(v) так и в P(u), поэтому элементы массива FIRST, которые соответствуют вершинам, предшествующим JOIN в P(v) или P(u), полагаются равными JOIN.

Этап аj2, te {1, 2, ..., 0} заканчивает свою работу, как только не окажется увеличивающей цепи по отношению к текущему паросочетанию графа G0-t+1 — (V0_ _t+1,E0-t+1 j. Каждый следующий этап а2+1, te {1, 2, ..., 0-1} начинает свою

работу с того, что фиксируется точка сочленения v0.teV0.t графа G0-t — (v0-t,E0-tj. Если

эта вершина v0-t оказалась насыщенной паросочетанием M 0-t+1 графа G0-t+1, полученным

на этапе а2, то v0-t считается насыщенной в графе G0-t, te {1, 2, ..., 0} на этапе аt2+1.

Часть а3 параллельного алгоритма а состоит в объединении паросочетаний М0, М0-1, ..., М1, графов G0, G0-1, ..., G1 соответственно полученных на этапах а]2, а 2, ..., а0 с помощью операции замыкания вершин vr, re {1, 2, ..., 0-1} и получении максимального паросочетания M исходного графа G.

Работу параллельного алгоритма а покажем на графе G, изображенном на рис. 2. Граф G состоит из 0=2 компонент связности G1 и G2; v=4 - точка сочленения. На вход части а1 подается граф G=(V, E) и точка сочленения v=4 2-расщепляется. На вход этапа а2 части а2 подается граф G2 (рис 3.).

Рис.2.Работа части a1 алгоритма a на графе G, состоящем из компонент связности G1 и G2.

Массив OUTER состоит сначала из вершин 4, 6, 8, 9, 11. Значения массивов LABEL и FIRST занесем в таблицу 1.

Рис. 3. Работа этапа а2 части а . Ребра паросочетания М2 графа О2 выделены жирными линиями.

Таблица 1.

N LABEL FIRST LABEL FIRST

4 0 0 0 0

5 -1 0 N(9, 8) 0

6 4 5 4 0

7 -1 0 N(9, 8) 0

8 6 7 6 0

9 11 10 11 0

10 -1 0 N(9, 8) 0

11 4 12 4 0

12 -1 0 N(9, 8) 0

Зафиксируем вершину v=5, которая имеет реберную метку N(9, 8). Поэтому для определения цепи Р(5) нам потребуются цепи Р(9) и Р(8). Поскольку v=9 - внешняя вершина, которая имеет метку вершины, то

P(9j— (9, MAT (9 jj * P(LABEL((j — (9,10)* P(iij — (9,10,11, MAT (11 jj* P(LABEL(11jj — (9,10,11,12 j * P(4j —

— (9,10,11,12,4 j .

Вершина v=8 также является внешней и имеет метку вершины, поэтому P(8j — (8, MAT (8jj * P(LABEL((j — (8,7 j * P(LABEL(8jj — (8,7 j * P(6j — (8,7,6, MAT (6jj * P(lABEL(e)j —

— (8,7,6,5 j * P(j — (8,7,6,5,4 j .

Определим теперь цепь Р(5): p(5) — revP(8,5j * p(9) — (5,6,7,8) * (9,10,11,12,4) —

— (5,6,7,8,9,10,11,12,4) — ((5,6), (7,8), (9,10), (11,12),4) . По отношению к выделенному паросочетанию нет увеличивающей цепи, поэтому оно является максимальным паросочетанием.

На вход этапа а2 подается граф G1 (рис. 4). Массив OUTER содержит сначала вершины 1, 3, 4. Значения массивов LABEL и FIRST занесем в таблицу 2:

Рис. 4. Работа этапа а 2.

Таблица 2.

N LABEL FIRST LABEL FIRST

1 0 0 0 0

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

2 -1 0 N(3, 4) 0

3 1 2 1 0

4 1 13 1 0

13 -1 0 N(3, 4) 0

Зафиксируем вершину v=2, которая имеет метку ребра N(3, 4). Определим цепь Р(2): p(2 j — revP(3,2j* p(4). Вершина v=4 имеет метку вершины, поэтому р(4) — (4, MAT (4))* p(LABEL(4jj — (4,13)* p(1) — (4,13,1). Следовательно, p(2) — rev(3,2j* P(4j — (2,3 j* * (4,13,1) —(2,3,4,13,1)—((2,3); (4Д3)Д). По отношению к выделенному паросочетанию нет увеличивающей цепи, поэтому полученное паросочетание является максимальным.

Часть а3 алгоритма а состоит в объединении максимальных паросочетаний, полученных на этапах а2 и а2 с помощью операции замыкания в вершине v=4. Это будет

паросочетание М = ((5,6); (7,8), (9,10), (11,12);4)* ((2,3), (4,13),1) = ((5,б), (7,8), (9,10); (11,12)4; (2,3), (4,13)1), которое является максимальным паросочетанием М исходного графа О. Убедимся в этом рассмотрев работу алгоритма Габова [2] на графе О (рис. 5).

11 "--..._____

Рис. 5. Работа алгоритма Габова нахождения максимального паросочетания в графе G.

Начальной вершиной является v=1. Массив OUTER содержит сначала вершины 1, 3, 4, 11, 6, 9, 8. Значения массивов LABEL и FIRST занесены в таблицу 3.

Таблица 3.

N LABEL FIRST LABEL FIRST

1 0 0 0 0

2 -1 0 N(3, 4) 0

3 1 2 1 0

4 1 13 1 0

5 -1 0 N(9, 8) 0

6 4 5 4 0

7 -1 0 N(9, 8) 0

8 6 7 6 0

9 11 10 11 0

10 -1 0 N(9, 8) 0

11 4 12 4 0

12 -1 0 N(9, 8) 0

13 -1 0 N(3, 4) 0

Зафиксируем вершину v=12, которая имеет метку ребра N(9, 8), тогда цепь p(12) = revP(9,12)*p(8). Вершина v=9 имеет метку вершины, поэтому p(9) = (9,MAT(9)* P(LABEL(9))= (9,10)* P(11)= (9,10,11, MAT (11))* P(LABEL(11)) = (9,10,11,12)* P(4)= (9,10,11,12,4, MAT (4))* p(label (4)) = (9,10,11,12,4,13,1) .

Вершина v=8 имеет метку вершины, поэтому p(8)=(8,MAT(s))* P(LABEL(8)) = (8,7)* * P(6)= (8,7,6, MAT (6))* P(label(Ó))= (8,7,6,5)* P(4) = (8,7,6,5,4, MAT (4))* P(LABEL(4))= (8,7,6,5,4,13)* *P(l) = (8,7,6,54,13,1). Следовательно, цепь p(12) = revP(9,12)* p(8) = ((12,11), (10,9), (8,7), (6,5), (4,13);1). После дополнения получим новое паросочетание, состоящее из ребер (12, 11); (10, 9); (8, 7); (6, 5); (4, 13); 1 и (3, 2). По отношению к полученному паросочетанию нет увеличивающей цепи, поэтому это паросочетание - максимальное (рис. 5).

4. Анализ и обоснование алгоритма а

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

Если всем исходным данным задачи присвоить конкретные значения и разместить их в памяти ЭВМ, то эти исходные данные называются входом задачи. Размером (длиной) входа называется число ячеек памяти ЭВМ, занятых входом[5].

Трудоемкостью (сложностью) алгоритма решения данной задачи называется функция f, ставящая в соответствие каждому натуральному числу n время работы f(n) алгоритма в худшем случае на входах длины n. Иначе, функция f(n) является максимальным временем работы алгоритма по всем входам задачи длины n[5].

При нахождении оценок сложности алгоритмов будем использовать О-символику. Будем говорить, что неотрицательная функция f(n) не превосходит по порядку функцию g(n), если существует такая константа с, что f(n)<cg(n) для всех n>0 и при этом будем писать f(n)=O(g(n)). Иногда вместо «трудоемкость алгоритма есть О^(п))» будем говорить «алгоритм решает задачу за время O(g(n))»[5].

Теорема 1. Пусть задан граф G=(V, E), |V|=n, |E|=m, состоящий из 0 компонент

0

связности Gr=(Vr, Er), r=1, 2, ..., 0 и 0-1 точек сочленения, |Vr|=nr, |Er|=mr, ^mr = m,

r=1

0

^пг = п-0+1. Тогда паросочетание М графа О=(У, Е), полученное параллельным

г=1

алгоритмом а является максимальным.

Доказательство. Согласно конструкции параллельного алгоритма а, в результате работы части а1 исходный граф О=(У, Е) разбивается на 0 связных подграфов Ог=(Уг, Е), г=1, 2, ..., 0. На вход каждого этапа а2 , te {1, 2, ..., 0} подается граф

+1, Е0_+1). На каждом этапе а2 , t—1, 2, ..., 0, части а работает алгоритм

Габова [2], который находит максимальное паросочетание М0_ш.

Паросочетание М графа О, полученное в части а3 алгоритма а равно объединению всех максимальных паросочетаний М0_ш, полученных на этапах а2 , t=1, 2, ..., 0.

Предположим, что М - не является максимальным паросочетанием графа О, т. е. в О существует другое паросочетание М с | М |>|М|. Рассмотрим ребра, входящие в МФ М , где Ф - знак симметрической разности. Эти ребра образуют подграф О с О' графа О. Поскольку никакие два ребра не могут быть инцидентны одной и той же вершине в паросочетании М, то подграф О=(У, МФМ) имеет специальную структуру - все его вершины имеют степень 2 и меньше. Если степень вершины в О равна 2, то одно из инцидентных ей ребер входит в М, а другое - в М . Поэтому компоненты в О должны быть либо цепями, либо циклами четной длины с чередованием ребер из Ми из М . Поскольку М >М, то среди этих компонентов необходимо есть цепь нечетной длины, начинающаяся и оканчивающаяся ребрами М , которая является увеличивающей цепью. Однако из конструкции алгоритма а следует, что среди компонентов графа О нет цепей нечетной длины, начинающихся и оканчивающихся ребрами М . Получили противоречие, следовательно, М - максимальное паросочетание графа О. Таким образом теорема 1 доказана. Докажем теперь, что справедлива

Теорема 2. Пусть задан граф О=(У, Е), |У|=п, |Е|=т, состоящий из 0 компонент

0

связности Ог=(Уг, Ег), г=1, 2, ..., 0 и 0-1 точек сочленения, |Уг|=пг, р^т^ ^тг = т,

г=1

0

^пг = п-0 +1, 0>2. Тогда высота Н(а) параллельного алгоритма а нахождения

г=1

максимального паросочетания в графе О равна 0+2, т. е. Н(а)=0+2.

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

условий алгоритма, либо от результатов выполнения операций, находящихся в предыдущих группах:

1) операции расщепления точек сочленения графа О=(У, Е);

2) операции алгоритма Габова [2] нахождения максимального паросочетания в каждом графе Ог=(Уг, Е), г ё {1, 2, ..., 0};

3) операции объединения паросочетаний М^ графов О^ te {1, 2, ..., 0} полученных соответственно на этапах а2 с помощью операции замыкания вершин уг,гё {1, 2, ..., 0-1}.

Поскольку, согласно конструкции параллельного алгоритма а, каждая из групп 1), 3) выполняется 1 раз, а группа операций 2) - 0-раз, то число ярусов параллельного алгоритма а равно 0+2. Отсюда и из определения высоты параллельного алгоритма а следует, что Н(а)=0+2, где 0>2. Таким образом, теорема 2 доказана.

Теорема 3. Пусть задан граф О=(У, Е), |У|=п, |Е|=т, состоящий из 0 компонент

0

связности Ог=(Уг, Ег), г=1, 2, ..., 0 и 0-1 точек сочленения, |Уг|=пг, |Ег|=т1-, ^mr = m,

г=1

пг = п-0 +1, я* = тт пг , п* = max пг , п* > |/пп|, п* <

1<г<0 1<г <0

п , 2 <0< п

_ 2 _ /пп

. Тогда ширина

^ пг = п-0 +1,

г=1

Б(а) параллельного алгоритма а нахождения максимального паросочетания графа О

(

удовлетворяет соотношению £ (а) = О

( 3 ^ п

V0 /

Доказательство. Согласно конструкции параллельного алгоритма а, ярус 1 представляет собой группу операций 2-расщепления точек сочленения графа О. Поэтому трудоемкость такого яруса составляет О(0) элементарных операций. Каждый из ярусов 2, 3, . , 0+1 представляет собой группу операций алгоритма Габова [2] выделения максимального паросочетания графа Ог=(Уг, Ег), гё {1, 2, ..., 0}, поэтому трудоемкость каждого такого яруса составляет о(пГ-) элементарных операций. Ярус 0+2 представляет собой группу операций объединения паросочетаний Мг, гё {1, 2, ..., 0} полученных в части а2. Поэтому трудоемкость такого яруса составляет О(0) элементарных операций. Для нумерации ребер графа Ог=(Уг, Ег) потребуется О(п4) элементарных операций[5]. Используя теперь определение ширины параллельного алгоритма а и условия теоремы 3, имеем

£ (а) = max О(0), О

( 3 ^ п

V0 /

0(0), о(п|^

^ („ 3 ^ = О

V0 /

Таким образом, теорема 3 доказана.

Из теорем 2, 3 вытекает

Следствие 1. Пусть выполняются условия теоремы 3. Тогда высота

Н(а)параллельного алгоритма а выделения максимального паросочетания графа О удовлетворяет неравенству п

4 < Н (а) <

1пп

+ 2.

Теорема 4. Пусть задан граф О=(У, Е), |У|=п, |Е|=т, состоящий из 0 компонент

0

связности Ог=(Уг, Ег), г=1, 2, ..., 0 и 0-1 точек сочленения, |Уг|=пг, |Er|=mr, v тг = т,

г=1

0 п

V пг = п - 0 +1, пг < —, п* = тт пг, п * = max пг, 2 <0<

, 0 1<г<0 1<г <0 г=1

п 1пп

, и* > |/йй], п* <п. Тогда

ускорение А(а) параллельного алгоритма а нахождения максимального паросочетания графа О удовлетворяет неравенству А(а)=О(0+2).

Доказательство. Обозначим через %(а) - число операций (трудоемкость) параллельного алгоритма а, а через Ца) - число операций последовательной реализации параллельного алгоритма а. Из определения ускорения параллельного алгоритма следует, что

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

п(а)

Л(а) = -

,(а)"

(2)

Принимая во внимание равенство ^(а^Б^) и соотношение (1), получим

пр (а) = 0

( 3 ^ п

. 03 У Ч^ У

(3)

где 2 < 0 <

п 1пп

. Величина Ца) согласно определению удовлетворяет равенству

( 3 ^ п(а)= О ^ -(0 + 2).

Ч0 3

(4)

Подставляя теперь (3), (4) в правую часть равенства (2), получим А(а)=О(0+2). Таким образом, теорема 4 доказана. Из теорем 3, 4 вытекает

Следствие 2. Пусть выполняются условия теоремы 3. Тогда параллельный

алгоритм а находит максимальное паросочетание графа О за время 0

( 3 ^ п

Ч0 У

элементарных

п

операций, используя параллельную вычислительную систему, состоящую из 0+2 процессоров.

Литература.

1. Ловас Л., Пламмер М. Прикладные задачи теории графов. Теория паросочетаний в математике, физике, химии.-М.:Мир, 1988.-653с.

2. H. N. Gabow. An Efficient Implementation of Edmons Algorithm for Maximum Matching of Graphs. J. ASM, vol. 23, 221-234 (1976).

3. M. I. Balinski. Labeling to Obtain a Maximum Matching in Combinatorial Mathematics and Ins Applications (R. C. Bose and T. A. Dowling, Eds), Univ., North Carolina Press Chappel Hill, N. C., 1967, p. p. 585-602.

4. Воеводин В. В. Математические модели и методы в параллельных вычислительных системах. М.: Наука, 1986. - 296 с.

5. Емеличев В. А. и др. Лекции по теории графов. М.: Наука, 1990. - 384 с.

6. Свами М., Тхуласираман К. Графы, сети и алгоритмы. М.: Мир, 1984. - 455 с.

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