Сер. 10. 2013. Вып. 1
ВЕСТНИК САНКТ-ПЕТЕРБУРГСКОГО УНИВЕРСИТЕТА
УДК 519.157+519.161+519.163 О. С. Фирюлина
НАХОЖДЕНИЕ ВСЕХ МАКСИМАЛЬНЫХ НЕЗАВИСИМЫХ МНОЖЕСТВ НЕОРИЕНТИРОВАННОГО ГРАФА
Введение. Определение максимальных независимых множеств (МНМ) графа полезно в кластерном анализе в таких областях как информационный поиск и социология. Известно, что эта задача принадлежит к числу так называемых NP-полных задач и количество МНМ в графе может расти экспоненциально [1]. Простая схема решения, основанная на методе поиска с возвращением, приводит к генерации p! всех возможных перестановок вершин для каждого МНМ размерности p. С учетом общего количества возможных МНМ в произвольном графе решение задачи методом полного перебора оказывается практически неосуществимым даже для графов сравнительно небольших размерностей. В данной статье представлен алгоритм AllIS для построения всех МНМ неориентированного графа, основанный на способе выделения структурных особенностей [2-5]. Каждому МНМ соответствует единственная ветвь дерева поиска, порожденного предложенным алгоритмом, поэтому повторного построения уже сформированных максимальных независимых множеств графа не происходит.
Основные определения. Здесь и далее множество неупорядоченных пар различных элементов некоторого множества B будем обозначать
B[2] = {(x,y)\x,y е B & x < y}.
Обыкновенным графом G = (V, E) называется упорядоченная пара множеств: конечного непустого V, элементы которого называются вершинами графа G, и подмножества E С V[2], представляющего собой множество неупорядоченных пар разных вершин, элементы которого называются ребрами этого графа.
Отметим два крайних случая обыкновенных n-вершинных графов: безреберный граф Hn = (U, 9), n = \U\, и полный граф Fn = (U, UИ), n = \U\.
Если в неориентированном графе между двумя вершинами x и y есть ребро, тогда эти вершины смежны, в противном случае - несмежны. Ребро, соединяющее вершины x и у, инцидентно каждой из них (и наоборот, они обе инцидентны данному ребру).
Граф G' = (V',E') называется подграфом графа G = (V,E), если V' С V и E' = {(x, у) е E \ x,y е V'}. Иными словами, при образовании подграфа G' из графа G удаляются все вершины множества Y = V \ V' и только те ребра, которые инцидентны хотя бы одной удаляемой вершине, поэтому для краткости будем записывать G' = G\Y.
Множество вершин графа G, индуцирующее его безреберный подграф, называется независимым. Будем называть такое множество максимальным независимым, если оно
Фирюлина Оксана Сергеевна — аспирантка кафедры информационных систем факультета прикладной математики—процессов управления Санкт-Петербургского государственного университета. Научный руководитель: проф. И. В. Олемской. Количество опубликованных работ: 6. Научное направление: экстремальная теория графов. E-mail: firyulina.oxana@mail.ru.
© О. С. Фирюлина, 2013
не содержится ни в каком другом независимом множестве. Максимальное независимое множество наибольшей мощности называется наибольшим независимым множеством (ННМ). Множество всех максимальных независимых множеств графа О будем обозначать М (О).
Пусть п-вершинный граф О = (V, Е) задан матрицей смежностей А = \\aij\\п п :
а = Г 1, (г,]) е Е, ^ \ 0, (г,]) е Е.
Граф О можно представить в виде О = (У,Бу,л), где V = {1,2,...,п}, Бу,л = {(р,ч) I (р,ч) е V[2] & арл = 0; р,д е V} - множество всех несмежных пар различных вершин графа О.
Любую пару несмежных вершин (в, 7) е Бу,л будем называть узлом и обозначать буквой а = (в, 7).
Базовым множеством для некоторого узла а = (в, 7) е Бу,л графа О назовем множество
Ва [а] = {3 | (3,, в) е Бу,л & (3, 7) е БуЛ, 3 е V}и {в, 7}.
Опорным множеством для некоторого узла а = (в, 7) е Бу,л графа О будем называть множество
ша[а] = Па[а]\{в,7}.
Обозначим QG[а] - максимальное независимое множество в графе О, в котором содержатся две вершины в и 7, Аа - множество всех вершин, имеющих ребро с каждой вершиной рассматриваемого графа.
Теорема 1. Любое максимальное независимое множество Qа[а] содержится в базовом множестве, соответствующем паре а = (в, 7):
Qа[а] С Па[а].
Доказательство. Пусть существует вершина V* е Еа[а] : М = {в, 7^*} -независимое множество вершин, индуцирующее некоторый безреберный подграф О' С О. По определению безреберного графа, его вершины в,1 и V* попарно несмежны, следовательно, вершина V* одновременно несмежна с в и 7 . Тогда по определению базового множества, должно выполняться условие V* е Ва[а]. Противоречие доказывает, что не существует безреберного подграфа, множество вершин которого содержит пару (в, 7) и какой-либо элемент, не принадлежащий базовому множеству, соответствующему указанной паре. Таким образом, множества вершин, индуцирующие безреберный подграф, а следовательно, и все максимальные независимые множества, имеющие в качестве двух своих вершины в и 7, целиком содержатся в базовом множестве Ва[а].
Следствие. Пусть Qа[а] - г-е МНМ множество графа О, содержащее вершины в и 7, т - количество всех таких МНМ. Тогда
Ба[а] \ и™!Qiа[а] =
Теорема 2. Пусть задан обыкновенный граф О = (V,,Бу,л). Если Ва[а] С Ба[а*], тогда для любого МНМ Qа[а] С Ва[а] найдется МНМ <^а[а*] С Ба[а*] такое, что <^а[а*] = Qа[а] (другими словами, любое МНМ, содержащее вершины в и 7, будет являться МНМ, содержащим вершины в* и 7*).
Доказательство. Положим а = (в, y), а* = (в*, !*)■ Если Dg[o] С Dg[o*\, значит, у всех вершин из множества Dg[o] нет ребер с вершинами в*,Y* € Dg[o*\, в частности, имеем следующие несмежные пары вершин:
(в, y), (в, в*), (в, y*), (y, в*), (y, y*), (в*гГ).
Так как в и y одновременно несмежны с вершинами в* и y*, по определению базового множества Do[a] следует, что в*,^Г € Do[a]. Кроме того, подграф G графа G, индуцированный множеством вершин Do[a], представляет собой несвязный граф с числом компонент k(G') ^ 5. Его можно представить в таком виде:
G = G' U G' U G'3 U G4 U G'5,
где G',G'2,G'3,G'4,G'b - компоненты связности графа G. Подграф G'5 характеризуется следующим свойством: любая его вершина не имеет ребер с вершинами fi,Y, в*,Y* в графе G'. Но так как без дополнительной информации о ребрах этого графа нельзя определить, является ли он связным или нет, то будем его обозначать волной сверху, чтобы отличить от связных подграфов G',G',G3 и G'A. Не умоляя общности, будем считать подграф G5 связным, так как на ход доказательства это никак не повлияет.
Любое МНМ множество Qg' в графе G' можно представить в виде объединения соответствующих МНМ Qg^ ,Qg'2 ,QG'3 ,Qg'4 ,Q& , в графах G'1,G'2 ,G'3, G'4,G'5:
Qg' = Qg[ U Qg'2 U Qg'3 U Qg'4 U Qg, ,
или, учитывая то, что графы i = 1,4, состоят из одной вершины:
Qg' = {в*} u {y*} u {в} U {y} U Qg,5.
Таким образом, любое МНМ QG', а значит, и любое QG' [а], будет являться МНМ, содержащим вершины fi*,Y*. Так как, согласно теореме 1, все МНМ, имеющие в качестве двух своих элементов в, Y, содержатся в базовом множестве DG[a], которое, напомним, индуцировало подграф G', то, очевидно, любое МНМ QG' [а] в подграфе G' -максимально независимое в исходном графе G, поэтому индекс G' можно изменить на G : Qg' [а] = QgM- Так как все МНМ, имеющие в качестве двух своих элементов в*,Y*, содержатся в базовом множестве DG[o*], а любое МНМ Qg^] есть МНМ, содержащее вершины в* ,Y*, следовательно,
vqgm С dgm 3 Qg^*] С Dg^*] | Qg^*] = Qg^].
Алгоритм AllIS для построения всех максимальных независимых множеств. Выбрав узел а0 = (в°^°) € Sv,a в графе G0 = G, строим для него опорное множество ^g0 [а0]. Задача нахождения МНМ, содержащего вершины в0,Y°, в графе G сводится к поиску МНМ в подграфе G' С G0, индуцированном множеством вершин &go [а0] С V, а затем объединению каждого найденного МНМ в G' с парой вершин (в0,Y0). Для нахождения МНМ в подграфе G' = (uGo [а0],swg0 «oja) используется та же схема. Выбираем узел а1 = (в1 ,Y') € S^g0 «oj ,a, строим для него опорное множество wGi [а1 ] и переходим к нахождению МНМ в подграфе G2 С G1 С G0. Таким образом, выбрав некоторую пару вершин в графе, переходим к соответствующему подграфу, тем самым сужая размерность задачи.
Решение задачи можно представить в виде дерева поиска, в котором каждый к-й уровень отвечает рассмотрению некоторого подграфа Ок С Ок-1 С ... С О0 = О. Здесь ак = (вк ) - некоторый узел в соответствующем графе Ок, индуцированном множеством иаь-1 [ак-1 ]. Узлы ак и ак-1 связаны следующим образом: ак € Ь1Шак_1 [ак-1]А. Для компактности записи можно опустить индекс Ок у множества иак [ак], так как по индексу узла ак однозначно можно определить, из вершин какого графа формируется опорное множество и[ак].
Учитывая тот факт, что любой подграф Ок, Ок-1,..., О0 является подграфом О, а множества несмежных пар в них определяются: БШ[ак-1],л, БШ[ак-2],л, со-
ответственно, то индекс А у множества Б также можно опустить, понимая, что все несмежные пары вершин в указанных подграфах несмежны и в исходном графе с матрицей смежностей А. Множество БШ[ак],л будем записывать в виде Б[ак].
Подграф Ок+1 С Ок будем задавать в следующем виде:
Ок+1 = (и[а%Б[акк ]), ак+1 € Б [а1;].
Для компактной формализации алгоритма введем узел отрицательного уровня с вершинами, не имеющими ребра ни с одной вершиной графа О, и обозначим его а-1 = (уЗ-1,^-1) = (0,0):
и[а-1] = V, Б[а-1] = Бу,л.
Базовое множество Б[ак+1] для узла ак+1 = (рк+1 ,^к+1) € Б[а'к] графа Ок+1 представим как
Б[ак+1 ] = {3 | (¿,/Зк+1) € Б [ак ]&(3,,1к+1) € Б^ ], 3 € и^]}.
Опорное множество ш[а'1+1 ] для узла ак+1 = (в^1 ,^!к+1) € Б[ак] графа Ок+1 определяем по правилу
] = В[ак+1 ] \{вкк+1,1!к+1}.
Множество Б[ак +1 ] несмежных пар в графе, индуцированном множеством вершин и^1 ] :
Б [а к+1] = {(р, д)1(р, д) € и [а к+1 ][2] & арл = 0,р,д € и [а к+1]}. Находим множество Д[а к +1 ] по правилу
Д[а к+1 ]= и [а к+1] ^^«^{рМ. Множество Р [ак+1], сформированное согласно правилу
Р[ак +1 ] = ^[ак] € Р[ак] | {/3>к+1,1к+1} С Q[ак]}, Р[а-1] = 9,
будем называть окрестностью узла а к +1.
Приведем реализацию алгоритма ЛШБ в псевдокодах:
procedure ALLIS ( G = (V, SVA)) begin
k := 0 //номер текущего уровня дерева перебора
J := 0//независимое множество Q := 0//максимальное независимое множество F := 0 //множество использованных пар
R := 0 //множество узлов, использование которых не позволит построить новое уникальное МНМ
M(G) := 0 //множество всех МНМ графа G а'1 := (0,0)
:= 0//множество вершин, которые будут удаляться из множества
P[ak-1 ] := 0 w[al-1] := V SKfc-1] := s^a
construct Д^-1]
ak := (pk,Yk) е s^a, вк,Yk е V
construct D[ak]
continue := true
while continue = true do
Д^-1 ] := Д^-1 ] \ ^д while Да-1 ] = 0 do
V6* е Да-1 ] do Q := J U {<„}, M(G) := M(G) и {Q} for £ := -1 to к - 1 do P[af] := P[af] U {Q} end do
Д^-1 ] := Д^-1 ] \{<f}
end do
if S[ak-1] = 0
then
if к = 0
then continue := false else J := J \{ek-1 ,Yk-1}, F := F \{ak-1} к := к - 1 end if else
choose ahk := Y) е S[ahk-1] : \D[ahk]\ = maxakeS[ok-i]\D[ak]\ R := {(/3k,Yk) \ D[ak] С D[ak], (¡3k,Yk) е S[a.k-1 ] \K}}*
^д := 0
construct P [ak ]
exist := 0
for all I е P [ak ] do
if \(i \ j ) \{ek,Yk}\ = 1
then ^д := ^д U (I \ J) \ {ek, Yk} if \D[ak]\ =3 or \D[ak]\ = \I \ J\ then exist := 1 end if end if end do if exist = 1
then S[ak-1] := S[ak-1 ] \ (R U {ak}) else
J := J U{ek,Yk}, F := F U{ak} construct u[ak]
if w [ak] = 0
then S[ak] := 0, A[ak] := 0, Q := J, M(G) := M(G) U {Q}
for £ := -1 to k - 1 do P[af] := P[af] U {Q} end do else
construct S[ak], A[ak] construct D[ak+1 ] for all ak+ e S[ak] end if
S[ak"1 ] := S[ak"1 ] \ (R U {ak}), k := k + 1
end if
end if
end do
return M(G)
end {of ALLIS}
Тестирование алгоритма. Предложенный в статье алгоритм сравнивался при тестировании с алгоритмом Брона-Кербоша [6]. Для тестирования генерировались графы с различными значениями плотности. В целях сохранения единообразия оба алгоритма были реализованы в пакете Maple 14. Тесты проводились на одинаковых матрицах и были запущены на процессоре Intel Core i5 2.6 GHz 4 GB RAM в системе Windows 7.
Время поиска, с
О 20 40 60 80 100 Плотность графа, %
Рис. 1. Зависимость времени поиска решения от плотности графа 1 - по алгоритму ЛШБ; 2 - по алгоритму Брона-Кербоша [6].
На рис. 1, 2 приведены результаты тестирования. Зависимость времени поиска решения от плотности графа размерности п = 20 отражает рис. 1. Из этого рисунка видно, что при увеличении плотности время поиска решения уменьшается для обоих алгоритмов. Следует отметить, что для сильно разреженных графов при плотности меньше 10% время работы алгоритма ЛШБ значительно меньше времени работы алгоритма Брона-Кербоша. Эспериментальные значения времени работы обоих алгоритмов для произвольных графов размерности п Е [10, 30] при фиксированной величине плотности р = 2% приведены на рис. 2, а. Результаты представлены в логарифмической шкале: по горизонтальной оси - ^ п, по вертикальной - = Ь + |£тт|,
где п - количество вершин в графе, Ь - экспериментальное время поиска всех
Рис. 2. Зависимость времени работы алгоритмов от размерности графа при плотности 2% (а) и 4% (б) 1 - по алгоритму ; 2 - по алгоритму Брона-Кербоша [6].
максимальных независимых множеств, tmin - минимальное экспериментальное время. На рис. 2, б даны результаты аналогичных экспериментов при плотности 4%.
Заключение. В статье описан алгоритм AllIS нахождения всех МНМ обыкновенного неориентированного графа. Приведены результаты экспериментального сравнения этого алгоритма с широко известным алгоритмом для поиска всех МНМ в графе -алгоритмом Брона-Кербоша. Установлено, что при небольшом значении плотности графа скорость алгоритма AllIS заметно выше.
Литература
1. Moon J. WMoser L. On cliques in graphs // Israel J. Math. 1965. Vol. 3. P. 23-28.
2. Олемской И. В. Алгоритм выделения структурных особенностей // Николай Ефимович Кирин: сб. ст.; под ред. В. В. Жука, В. Ф. Кузютина. СПб.: АССПИН, 2003. С. 224-251.
3. Олемской И. В. Методы интегрирования систем структурно разделенных дифференциальных уравнений. СПб.: Изд-во С.-Петерб. ун-та, 2009. 180 с.
4. Олемской И. В. Модификация алгоритма выделения структурных особенностей // Вестн. С.-Петерб. ун-та. Сер. 10: Прикладная математика, информатика, процессы управления. 2006. Вып. 2. С. 55-65.
5. Олемской И. В. Явный метод типа Рунге-Кутты пятого порядка // Вычислительные технологии. 2005. Т. 10, № 2. С. 87-105.
6. Bron C., Kerbosch J. Algorithm 457: Finding all cliques of an undirected graph // Comm. ACM. 1973. Vol. 16. P. 575-577.
Статья рекомендована к печати проф. Л. А. Петросяном. Статья принята к печати 25 октября 2012 г.