Научная статья на тему 'Метод решения задачи о минимальном покрытии как средство планирования в grid'

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

CC BY
2701
119
i Надоели баннеры? Вы всегда можете отключить рекламу.
Журнал
Проблемы управления
ВАК
Область наук

Аннотация научной статьи по математике, автор научной работы — Пономаренко B. C., Листровой С. В.

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

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

A METHOD FOR SOLVING LEAST COVERAGE PROBLEMS AS A GRID PLANNING TOOL

A method for solving least cover and least vertex cover problems in arbitrary graphs enabling the construction of effective algorithms for calculating minimum cluster numbers is proposed. This enables the solution of a given subset of tasks in GRID with desirable efficiency.

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

и

нформационные технологии в управлении

УДК 621.396

МЕТОД РЕШЕНИЯ ЗАДАЧИ О МИНИМАЛЬНОМ ПОКРЫТИИ КАК СРЕДСТВО ПЛАНИРОВАНИЯ В GRID

B.C. Пономаренко(1), С.В. Листровой(2)

(1) Харьковский национальный экономический университет;

(2) Украинская академия железнодорожного транспорта, г. Харьков

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

ВВЕДЕНИЕ

Глобальные вычислительные сети GRID [1] были предложены в качестве новой парадигмы для решения крупномасштабных вычислительных задач в науке, технике и бизнесе [2]. Они дают возможность одновременного использования многочисленных вычислительных ресурсов [3], принадлежащих различным организациям и расположенных в различных административных регионах. Системы GRID объединяют разнородные вычислительные ресурсы (персональные компьютеры, рабочие станции, кластеры, суперкомпьютеры), используя разные стратегии доступа, выполняя различные приложения (научные, инженерные и коммерческие), предъявляющие к системе различные требования. Ресурсы принадлежат различным организациям, имеющим свои правила управления, использования и определения их стоимости для различных пользователей в различное время. Доступность и загруженность ресурсов также может динамически изменяться во времени. Последние работы в области GRID позволяют приложениям использовать вычислительные ресурсы, принадлежащие различным организациям, распределенным по различным странам и континентам. Один из видов ресурсов GRID — однородные многопроцессорные системы (кластеры), которые могут состоять из сотен или даже тысяч процессоров. В процессе распределения ресурсов в GRID возникает необходимость в определении

минимального числа кластеров, на которых можно выполнить заданное подмножество задач.

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

Кластеры 1 2 3 4

1 2 3 4 5 6

Задачи

Рис. 1. Граф, отображающий возможности решения задач

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

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

B =

1 2 3 4

1 І І О І

2 І І І О

3 І О І І

4 О І О О

5 О О І І

6 О О І І

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

L = V c.x. ^ min J J

j = і

(І)

при ограничениях

n

V в, xj 1 І, i = І, m, xj є {О, І}; c. 1 О, (2) j = і

где

ву =

1, если i-я переменная может быть покрыта переменной х^,

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

(З)

Задачи о наименьшем покрытии (ЗНП) и о наименьшем вершинном покрытии (ЗНВП) имеют широкое прикладное значение в теории построения сложных систем, в системах диагностики вычислительных систем и сетей [4], при разработке их программного и математического обеспечения, а также для планирования распределения ресурсов в GRID. Основное требование к алгоритмам решения данных задач состоит в высокой оперативности решения и обеспечении минимально возможной погрешности этих решений.

Частным случаем ЗНП является задача о наименьшем разбиении (ЗНР), которая получается из задачи (1)—(3) путем замены неравенства (2) на

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

Ряд методов сначала разрабатывался для решения ЗНР, а потом адаптировался к решению в работах [6, 7]. В работе [1] предложены методы решения ЗНП, в которых используется дерево поиска и линейное программирование. Подходы, базирующиеся на рассмотрении отсекающих плоскостей и подобные в принципе тем, которые применяются в общем 0-1-программировании [8], представлены в работах [4, 9]. Сравнение этих методов и исследование их вычислительных характеристик приведено в работе [4]. Наиболее полный обзор методов решения ЗНП как задачи линейного булевого программирования, дан в статье [10], где показано, что алгоритмы на основе идей рангового подхода [15, 16] отличаются от методов, основанных на идеях метода ветвей и границ, меньшими временной сложностью и погрешностью.

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

Однако с увеличением числа вершин этот способ становится весьма громоздким. На основе усовершенствования этой процедуры построены алгоритмы Брона и Кэрбоша [4]. Как показано в работах [13, 14], задача вершинного покрытия является ЛР-полной, и эффективные алгоритмы ее решения для произвольных графов неизвестны. Для двудольных графов на основе алгоритмов Хоп-крофта и Карпа (с поиском в глубину) разработаны методы [11], позволяющие находить минимальное вершинное покрытие и максимальное независимое множество вершин в произвольном двудольном графе Н = (X, Y, Е) за время 0((т + п)4п), где п = IX и Y| и т = |Е|. Полиномиальные алгоритмы

n

вычисления числа устойчивости были получены для совершенных графов — графов, у которых для любого его порожденного подграфа хроматическое число равно кликовому числу. Алгоритм вычисления числа устойчивости графа [16] основан на методе эллипсоидов и использует процедуру отделения матриц графа. В вычислительном плане этот алгоритм обладает рядом существенных недостатков, не позволяющих использовать его на практике. Как показано в работе [16], получить правильное решение при числе вершин в графе более 10-ти практически невозможно. Применение т-алгоритмов позволило увеличить размерность решаемых задач до 50, а при использовании двойственных оценок в схеме ветвей и границ — до 100, с погрешностью, не превышающей 5 % [16].

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

1. ПОСТАНОВКА И МЕТОД РЕШЕНИЯ ЗАДАЧИ

Для решения с единых позиций ЗНВП и ЗНП будем представлять как граф Є (X, Е), так и произвольную матрицу В в виде булевой функции. Рассмотрим конъюнктивное представление булевой матрицы В. Пусть задана булева матрица В с п столбцами и т строками. Столбцы будем задавать вектором X = {х1, х2, ..., хп}, а строки — вектором М = {ц1, ц2,..., цт}. Покрытием 0 строк Мматрицы В назовем такое множество столбцов В, которое покрывает единицами все строки М. Для определения всех покрытий матрицы будем применять алгебраический метод получения по импликант-ной таблице приведенных систем простых импли-кант булевых функций. Если каждый столбец из совокупности X = {х1, х2, ..., хп} рассматривать как «простую импликанту», покрывающую совокупность строк М = {ц1, ц2,..., цт}, каждую строку ц, как набор переменных, покрываемых простыми импликантами, то матрицу В можно представить как импликантную таблицу булевой функции. При такой интерпретации матрицы В для каждой строки ц, можно записать дизъюнкцию столбцов Ьі, покрывающих рассматриваемую строку, в следующем виде:

= (X V хк V ...)

... (4)

^ = (X, V X V ...).

Конъюнкция дизъюнкций (4) по всем строкам ц1, ц2, ..., цт матрицы В образует конъюнктивное

О

5

Рис. 2. Граф Є

представление матрицы В, содержащее в себе все покрытия совокупности строк М:

к(М) = аЦ • ф2 •...• =

= (X V Хк V ...)-...-(Хр V X V ...). (5)

Раскрывая скобки в соответствии с законами дистрибутивности, получаем дизъюнктивное представление матрицы В, образующее перечень всех возможных покрытий совокупности строк М = {ц1, ц2, ..., цш}. Так, в соответствии с выражением (5) конъюнктивное представление матрицы

1 2 3 4 5 6 7

1- -2 1 1 0 0 0 0 0’

1- 3 1 0 1 0 0 0 0

1- 4 1 0 0 1 0 0 0

2- -7 0 1 0 0 0 0 1

3- -6 0 0 1 0 0 1 0

4- -5 0 0 0 1 1 0 0

задающей граф Є (рис. 2), имеет вид:

F = (X V Х)(Х V XXX V XXX V X) х

х (X V Х)(Х V X). (6)

Как показано в работе [17], если f — булева функция, построенная по графу Є = (V, Е) в виде произведения дизъюнктов (V, V V ), где {V,} Є {0, 1},

і = (1, п), j = (1, п), і ф у, и при этом каждый дизъюнкт (V, V V) соответствует ребру (V,, V), то все наборы переменных {V,, ^}, на которых она принимает значение «истинно», соответствуют вершинным покрытиям в графе Є = (V, Е). И для перечисления всех вершинных покрытий графа Є = (V, Е) необходимо определить те системы зна-

чений переменных {у,, V.}, при которых высказывание

F(^1, ^, ..., Г„) = 1 (7)

«истинно». Чтобы найти эти системы значений переменных {у, у.}, необходимо привести левую часть выражения (7) к минимальной дизъюнктивной нормальной форме, раскрывая скобки и пользуясь законом поглощения. Такая форма единственная, ввиду отсутствия в выражении (7) логических отрицаний.

Введем следующие понятия и определения для элементов булевой матрицы В, задающей некоторый граф G (X, Е). Если в матрице В выделить произвольный столбец у, то с ним можно связать некоторое подмножество столбцов {#}, с которыми данный столбец пересекается, поскольку столбец у соответствует вершине графа, а число единиц в столбце определяется степенью вершины А., и подмножество {#} будет всегда содержать А. таких столбцов. Будем говорить, что подмножество столбцов {#}■ образует связку столбцов относительно столбца у. Число столбцов в матрице В равно числу вершин п в графе (/(X, Е), а число возможных связок столбцов для матрицы В равно п. Отметим, что все столбцы в матрице В пересекаются друг с другом только в одной строке, поскольку в каждой строке матрицы В находится по две единицы. Поэтому, с точки зрения их пересекаемости, возможность их принадлежности минимальному покрытию равновелика. Каждая связка столбцов {#}.. покрывает определенное число строк IСвязку {#}., покрывающую максимальное число строк в матрице В, назовем максимальной. Если в графе С (X, Е) есть висячие вершины, то это означает, что в матрице В есть столбцы Р, содержащие только одну единицу, и, следовательно, связки этих столбцов содержат только по одному столбцу в каждой. Эти столбцы обладают интересным свойством, которое для произвольных графов С (X, Е) определяет следующее

Утверждение. Если граф Е) содержит

некоторое подмножество висячих вершин О е X, то подмножество вершин Р е X смежных с О может быть дополнено до одного из минимальных вершинных покрытий графа С (X, Е)>

Доказательство. Пусть граф С(X, Е) содержит висячую вершину у, которая соединена с ним ребром (/, у). Тогда граф С (X, Е) можно представить в виде объединения подграфов С"' и С"", при этом вершина / является точкой сочленения, т. е. принадлежит подграфам С' и С". Пусть подграф С' содержит к вершин, тогда степени вершин в подграфе С" могут изменяться от 1 до к — 1. Предпо-

ложим, что в графе С^, Е) покрытие {^^ не включает в себя вершину /, но тогда оно должно включать в себя вершину у (т. е. у е {^^ш) ддя того, чтобы ребро (/, у) оказалось покрытым. Пусть степень вершины / в подграфе С" равна 1 и вершина / в подграфе С" соединена с вершиной XI. Поскольку ребро (/, XI) должно быть покрыто, а вершина / в покрытие не входит, то XI е {^^щ. Следовательно, обе вершины (/, XI) е {^^щ. Если вместо вершин (/, XI) в покрытие ввести вершину /, то мы получаем новое покрытие {X,}, которое содержит на одну вершину меньше, чем покрытие {^^т. Это противоречит первоначальному предположению о том, что покрытие {^^т, содержащее вершину у, является минимальным вершинным покрытием в графе С (X, Е). Аналогичное рассуждение можно провести, полагая степени вершины / в подграфе С" равными 2, 3, ..., к — 1; следовательно, по индукции следует, что во всех возможных случаях возникает противоречие с первоначальным предположением, и вершина / принадлежит минимальному вершинному покрытию. Поскольку аналогичное рассуждение можно провести для любой висячей вершины графа С (X, Е), то по индукции утверждение можно считать доказанным. ♦

В общем случае, если в графе существует несколько минимальных вершинных покрытий, то могут существовать и минимальные вершинные покрытия без вершины, смежной с висячей вершиной графа С (X, Е), но если оно одно, то эта вершина обязательно в нем присутствует. Таким образом, если в матрице В есть столбец у, содержащий одну единицу, то связка столбцов относительно столбца у (в данном случае она состоит из одного столбца) принадлежит минимальному покрытию Xmin. В случае представления графа в виде булевой функции F(X1, 22, ..., 2^) данное утверждение эквивалентно тому, что если в дизъюнктах есть переменная Хр, которая в них встречается один раз, то переменная Xи, составляющая ей пару, в дизъюнкции входит в покрытие. И, следовательно, данную дизъюнкцию можно заменить переменной 2^, при этом исключить из анализа все дизъюнкции, содержащие переменную Xи. В работе [8] при анализе графов С(X, Е), не имеющих висячих вершин, представленных в конъюнктивной нормальной форме в виде некоторой булевой функции Е, для определения наименьшего множества переменных {X,.}, которые покрывают все дизъюнкты в конъюнктивном представлении графа С (X, Е), предложено применять принцип су-

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

ЛХ, А2,..., X,,) = f(Xl = 0, X, ..., X,,) V

V Д^, ^2 = 0, ..., X,) V ... V f(Xl, 2^, ..., X, = 0). (8)

Не нарушая принципа суперпозиции, соотношение (8) можно представить в виде

ЛХ, X, ..., X,) = ХЛ(Х, х, ..., X,) V

V ^2 Д^, ^2, ..., X,) V ... V X, Д^, ^2, ..., X,). (9)

Особенность конъюнктивного представления графа Є (X, Е) в виде булевой функции состоит в том, что она содержит число дизъюнктов, равное числу ребер в графе, а число переменных в каждом дизъюнкте равно 2, и каждая переменная соответствует некоторой вершине графа Є (X, Е). Введем

понятие характеристического вектора hq = (й,-^ 1, ^2= 2, ..., М”= п)Ч некоторой булевой функции

Л = ^•...Ч Л^р ^ ..., ^ (10)

в которой переменные X,, X., ..., X, не встречаются

у п 4

в функции Д(Х, X2, ..., X,).

Вес у, в векторе h указывает, как часто переменная X встречается в дизъюнктах функции Д^, X2, ..., X,), а сам вектор будем описывать суммарной весовой характеристикой

V, = I у,.

(11)

, = 1

Рассмотрим алгоритм решения данной задачи в виде следующей процедуры А преобразования булевой функции XXI, X2, ..., X,), задающей некоторый граф С (X, Е).

Шаг 1. Проверяем, есть ли в дизъюнктах /(XI, X2, ..., X,) переменные {X} встречающиеся по одному разу. Если да, то умножаем/(XI, X2, ..., X,) на переменные {X}, стоящие совместно в дизъюнктах с переменными и образующие сомножитель X -Х, •... -X,, состоящий из г переменных, нахо-

р п Я.

дившихся в дизъюнктах совместно с Хк, при этом все дизъюнкты в/(XI, X2, ..., X,), содержащие переменные X, X,,

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

Р,

X,, исключаем из дальнейшего

анализа.

Шаг 2. Проверяем, встречаются ли в полученной функции / = X,•X/^•...•X^•/(X1, X2, ..., X,) оставшиеся переменные по одному разу или нет; если да, то мы получили минимальное вершинное покрытие, в которое входят вершины, соответствующие переменным X • X. •... • X, и переменным,

у п Я

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

Шаг 3. Полученные функции / = Xр•Xn•... ... • X, X2, ..., X,) умножаем поочередно на пе-

ременные X,, оставшиеся в/^^ Х,..., X,), и исключаем при этом дизъюнкты, содержащие X., если их #, то мы получим q таких функций /2, ..., У',},

и для каждой функции вычисляем характеристи-

ческий вектор hq = (h^1= 1, ^2= 2,

весовую характеристику V, = I /. Среди них вы, = 1

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

Данная процедура представляет собой «жадный» алгоритм, который строит минимальное вершинное покрытие в графе Є (X, Е) заданным в виде конъюнктивного представления матрицы В, в которой столбцам і соответствуют вершины графа {X}, а строкам 5 — ребра (X,, X) є Е графа.

, 0.3

В процессе выполнения алгоритма, когда мы полагаем X = 1, появляется произведение XуX:, ..., X,, которое поглощает все дизъюнкты, содержащие эти переменные, последнее эквивалентно удалению из графа вершин (і, р, к, ..., с) и ребер, им инцидентных. В результате такого преобразования исходного графа возможны два варианта: вновь полученный подграф может содержать или не содержать висячие вершины.

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

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

,

,

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

Теорема. Если при Xj = 1 получается связка

столбцов {q}*, покрывающая максимальное число

строк в матрице B, то применение к ней процедуры A приводит к построению минимального покрытия матрицы B. ♦

Доказательство. Предположим, что множество столбцов, принадлежащее связке {q}* покрывает максимально возможное из всех связок столбцов число строк l, а оставшиеся (m — l) строк непокрытые. Процедура A, добавляющая число столбцов до полного покрытия строк матрицы B, на каждом шаге добавляет в покрытие каждый раз столбец, покрывающий максимальное число строк из непокрытых. Следовательно, к столбцам {q }*

добавится минимальное число столбцов {р}. Итак, мы получили покрытие, состоящее из множества

столбцов {q }* u {p}. Предположим, что оно не

минимально, но поскольку число добавленных до покрытия столбцов {р} процедурой A минимально, последнее возможно, если существует связка столбцов, а связку столбцов {q}. покрывает число строк k > l. Это противоречит первоначальному предположению о том, что {q }* является максимальной

связкой столбцов, следовательно наше предположение неверно и множество столбцов образует минимальное покрытие матрицы B графа G (X, Е)> Потеря оптимального решения при работе процедуры A происходит тогда, когда возникает ситуация, при которой весовые характеристики всех булевых функций f в процедуре A оказываются одинаковыми, и тогда мы выбираем любую из них. Однако возникновение такой ситуации возможно в основном на однородных графах, что в задачах планирования ресурсов в GRID встречается довольно редко. Ясно, что процедура A может быть применена не только для булевых матриц, которые задают некоторый граф G (X, Е), но и для произвольных булевых матриц.

Пример. Определим минимальное вершинное покрытие в графе, приведенном на рис. 3.

Строим булеву функцию графа:

f = (Xj V x2)(xt V *3)^ V x5)(x2 V x3) S s (x2 V x6)(x3 V x4)(x4 V x5)(x5 V x6).

Определяем, есть ли переменные, которые встречаются один раз. Если да, то умножаем функцию на переменную, соседнюю с ней, иначе вы-

Рис. 3. Граф G

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

Д = х1(х2 V х3)(х2 V х6)(х3 V х4)(х4 V х5)(х5 V Х6);

*1 = (22, 13, 24, 25, 2б); ^ = 9;

Д Х2(х1 V х3)(х1 V х5)(хз V х4)(х4 V х5)(х5 V х6);

*2 = (21, 23, 24, З5, 1б); V, = 10;

Д3 Х3(Х1 V х5)(х2 V х6)(х4 V х5)(х5 V Х6);

*3 = (21, 22, 14, 25, 26); ^3 = 9;

Д = Х4(х1 V х2)(х1 V х3)(х1 V х5)(х2 V х3)(х2 V Х3) X

X (х5 V х6); *4 = (31, 32, 23, 25, 26); V2 = 12;

Д = х5(х1 V х2)(х1 V х3)(х2 V х3)(х2 V х6)(х3 V х4);

*5 = (31, 22, 23, 14, 16); V, = 9*;

Д = Х6(х1 V х2)(х1 V х3)(х1 V х5)(х2 V х3)(х3 V Х4) X

X (х4 V х5); *6 = (31, 22, 33, 24, 25); V5 = 12.

Из полученных таким образом функций выбираем ту, в которой суммарная весовая характеристика вектора минимальна: функция /5. Поскольку в выражении для Д переменная х4 встречается только один раз, умножаем Д на переменную соседнюю с ней — это х3 — и получаем:

Д53 = х5х3(х1 V х2)(х2 V х6).

Поскольку в выражении для Д53 переменные х6 и х 1 встречается только один раз, то умножаем Д на переменную соседнюю с ней — это х2 — и получаем:

*^532 = х5х3х2.

Таким образом, минимальное вершинное покрытие образуют вершины {2, 3, 5}.

2. ЭКСПЕРИМЕНТАЛЬНОЕ ИССЛЕДОВАНИЕ

Исследование временной сложности разработанного алгоритма проводилось для произвольных графов с различными плотностями ребер в графе. Плотность А изменялась от 0,1 до 0,5, а число N вершин — от 4 до 100. Графики зависимости числа Q элементарных операций от числа вершин в графе приведены на рис. 4. Как видно, временная сложность алгоритма определения минимальных вершинных покрытий в графе в среднем не

превышает величины 0(0,9п ).

Все результаты получены с доверительной вероятностью 0,95, погрешность решений не превышала 2—6 %, а процент неточных решений не превышал 20 %.

ЗАКЛЮЧЕНИЕ

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

легко понизить до O(n ), если его реализовывать на n-процессорной вычислительной системе, поскольку функции f при реализации процедуры А можно вычислять одновременно независимо друг от друга, что очень важно для планирования распределением ресурсов в системах, работающих в реальном времени, к которым и относятся системы распределения ресурсов в GRID. Данный ме-

Qx ю5

10i------

9--------

8--------

7--------

6--------

5--------

4--------

3--------

2--------

1--------

0 ЬЮЮЮ«В

4 12 20 28 36 44 52 60 68 76 84 92 п

Рис. 4. Зависимость числа элементарных операций от размерности графа при различных значениях плотностей ребер

в графе:---------— Л = 0,1; —х— — Л = 0,3;

-а- — Л = 0,5;--------------Л = 0,9и3

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

ЛИТЕРАТУРА

1. Brucker P. Scheduling Algorithms. — Springer Ferlag, 1998. — P. 217—218.

2. Methods and Experiences of Parallelizing Flood Models / L. Hluchy, et al. // The 10th EuroPVM/MPI Conference. LNCS 2840. Sept. 2003, Venice. — P. 677—681.

3. Baker B.S., Brown D.J. and Katseff H.P. A 5/4 algorithm for two-dimensional packing // Jornal of Algorithms. — 1981. — Vol. 2, — P. 348—368.

4. Кристофидес Н. Теория графов. Алгоритмический подход. — М.: Мир, 1978. — 309 с.

5. Balinski M. Integer programming: methods, uses, computation // Man. Sci. — 1965. — N 12. — P. 253.

6. Garfmkel R.S., Nemhauser G.L. The set partitioning problem: set covering with equality constraints // Ops. Res. — 1969. — N 17. — P. 848.

7. Pierce J.F. Application of combinatorial programming to a class of all-zero-one integer programming problems // Man. Sci. — 1968. — N 15. — P. 191.

8. Gomory R. An algorithm for integer solutions to linear programs, Recent Advances in mathematical Programming. — N-Y.: McGraw-Hill, 1963.

9. Bellmore M., Ratliff H.D. Set covering and involuntary bases // Man. Sci. — 1971. — N 18. — P. 427.

10. Листровой С.В., Симашкевич О.Н. Об использовании гарантированных прогнозов в методах решения задач буле-вого программирования на основе рангового подхода // Электронное моделирование. — 2003. — Т. 25. — № 4. — С. 89—103.

11. Липский В. Комбинаторика для программистов. — М.: Мир, 1988. — 203 с.

12. Шор Н.З., Стеценко С.И. Квадратичные экстремальные задачи и недифференцируемая оптимизация. — Киев: Наукова думка, 1989. — 196 с.

13. Пападимитриу К., Стайглиц М. Комбинаторная оптимизация. Алгоритмы и сложность. — М.: Мир, 1985. — 512 с.

14. Гэри М., Джонсон Д. Вычислительные машины и труднорешаемые задачи. — М.: Мир, 1982. — 416 с.

15. Листровой С.В., Гуль А.Ю. Метод решения задачи о минимальном покрытии на основе рангового подхода // Электронное моделирование. — 1999. — № 1. — С. 58—70.

16. Listrovoy S.V. and Gul A.Yu. Method of Minimum Covering Problem Solution on the Basis of Rank Approach // Engineering Simulation. — 1999. — Vol. 17. — P. 73—89.

17. Листровой С.В., Яблочков С.В. Метод решения задачи определения минимальных вершинных покрытий и независимых максимальных множеств // Электронное моделирование. — 2003. — Т. 25. — № 2. — С. 31—43.

@ +38057-730-10-62, e-mail: om1@yandex.ru

Статья представлена к публикации членом редколлегии В.Д. Малюгиным. □

84

CONTROL SCIENCES № З • 2008

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