УДК 519.157+519.161+519.163
Вестник СПбГУ. Сер. 10. 2014. Вып. 1
И. В. Олемской, О. С. Фирюлина
АЛГОРИТМ ПОИСКА НАИБОЛЬШЕГО НЕЗАВИСИМОГО МНОЖЕСТВА
Санкт-Петербургский государственный университет, 199034, Санкт-Петербург, Российская Федерация
В статье представлен алгоритм MaxIS для поиска наибольшего независимого множества в неориентированном графе. Эта задача принадлежит к числу так называемых NP-полных задач, что означает отсутствие в настоящее время алгоритмов, решающих ее за полиномиальное время. Несмотря на то что рассматриваемый алгоритм также не является полиномиальным, он находит решение быстрее, чем тривиальный алгоритм полного перебора. Каждая ветвь дерева поиска, построенного по алгоритму MaxIS, соответствует уникальному максимальному независимому множеству. Приведены результаты сравнения работы предложенного алгоритма с алгоритмом Робсона, считающимся в настоящее время одним из лучших алгоритмов для решения вышеуказанной задачи. Тестирование алгоритмов было проведено на некотором наборе произвольных графов с различными значениями плотности. Библиогр. 6 назв. Ил. 4.
Ключевые слова: экстремальная теория графов, наибольшее независимое множество, метод ветвей и границ.
Olemskoy I. V., Firyulina O. S. Algorithm for finding maximum independent set //
Vestnik of St. Petersburg University. Ser. 10. Applied mathematics, computer science, control processes. 2014. Issue 1. P. 79-89.
The article presents an algorithm MaxIS for finding maximum independent set in an undirected graph. This problem is a so-called NP-complete problem, which means the current lack of algorithms for solving it in polynomial time. The proposed algorithm, though also not being a polynomial one, finds a solution faster than the trivial exhaustive algorithm. Each branch of the search tree built by the algorithm MaxIS corresponds to the unique maximal independent set. Results of a comparison of the proposed algorithm with an Robson algorithm, which is now considered one of the best algorithms for the solution of the above problem, are presented. Testing of algorithms have been conducted on some set of arbitrary graphs with different densities. Bibliogr. 6. Il. 4.
Keywords: extremal graph theory, maximum independent set, branch and bound method.
Введение. Рассматривается решение одной из важнейших задач экстремальной теории графов - нахождение наибольшего независимого множества в произвольном неориентированном графе, принадлежащей к числу так называемых NP-полных задач. В настоящее время одним из лучших алгоритмов для ее решения считается алгоритм Робсона [1], теоретическая оценка сложности которого O(2 °-276n), где n - число вершин в графе. В работе представлен новый метод MaxIS для поиска наибольшего независимого множества. Несмотря на отсутствие теоретической оценки временной сложности этого алгоритма, для графов с высоким значением плотности ребер MaxIS показывает лучшие экспериментальные временные результаты, чем алгоритм Робсона. Под плотностью ребер будем понимать величину отношения реального количества ребер графа к максимально возможному при данном количестве вершин [2]. Один из стандартных подходов для нахождения наибольшего независимого множества основывается на методе ветвей и границ. Предложенный в статье алгоритм также реализует данный подход. Каждая ветвь дерева поиска, порожденная алгоритмом MaxIS, соответствует
© И. В. Олемской, О. С. Фирюлина, 2014
уникальному независимому множеству. Каждое построенное такое множество является максимальным независимым. Определенные механизмы отсечения ветвей дерева поиска позволяют не допустить повторного построения уже сформированных множеств, что существенно сокращает процесс решения задачи. Учитывая то, что общее число максимальных независимых множеств при увеличении размерности графа растет экспоненциально [3], построение всех таких множеств с последующим выбором наибольшего из них по мощности затруднительно. С целью сокращения количества формируемых максимальных независимых множеств в алгоритме Мах1Б предусмотрена процедура анализа перспективности продвижения по выбранной ветви дерева поиска.
Основные определения. Здесь и далее множество неупорядоченных пар различных элементов некоторого множества Б будем обозначать
Б[2 = {(х,у)\х, у е Б & X = у}.
Неориентированным графом (или просто графом) О = (V, Е) называется упорядоченная пара множеств: конечного непустого V, элементы которого называются вершинами графа О, и подмножества Е С V[2], представляющего собой множество неупорядоченных пар различных вершин, элементы которого называются ребрами этого графа.
Отметим два крайних случая обыкновенных п-вершинных графов: безреберный граф Нп = (и, Ф) и полный граф Рп = (и, и[2), п = \и\.
Если в неориентированном графе между двумя вершинами х и у есть ребро, тогда эти вершины смежны, в противном случае - несмежны. Ребро, соединяющее вершины х и у, инцидентно каждой из них (и наоборот, они обе инцидентны данному ребру).
Граф О' = (V',Е') называется подграфом графа О = (У,Е), если V' С V и Е' = {(х,у) е Е \ х,у е V'}. Множество вершин V' С V таких, что О' = (V',Е') является подграфом графа О = (V, Е), будем называть индуцирующим множеством.
Множество вершин графа О, индуцирующее его безреберный подграф, называется независимым. Будем называть такое множество максимальным независимым, если оно не содержится ни в каком другом независимом множестве. Максимальное независимое множество (МНМ) наибольшей мощности называется наибольшим независимым множеством (ННМ).
Пусть п-вершинный неориентированный граф без петель О = (V, Е) задан матрицей смежности А = \\aij ||п п :
а = Г 1, (г,]) е Е, а^ I 0, (г,3) е Е.
Очевидно, что матрица А является симметричной с нулевыми диагональными элементами (в силу неориентированности графа О и отсутствия у него петель). Граф О можно представить в виде О = \У,Бу}а\, где V = {1, 2,...,п} - множество вершин графа; Бу, а = {(р,ч) \ (р,ч) е V[2] & арл = 0; р,д е V} - множество всех несмежных пар различных вершин графа О.
Любую пару несмежных вершин (в, 7) е Бу,А графа О будем называть узлом и обозначать а = (в, 7).
Базовым множеством для некоторого узла а = (в, 7) е Бу,А графа О назовем множество
Ва [а] = {3 е V \ (3,, в) е БуаА & (3,7) е БуЛ} и {в, 7},
опорным множеством для некоторого узла а = (в, 7) £ БУ}л графа О - множество
«о[а] = Ва[а]\{в,7}-
Обозначим QG - МНМ в графе О, QG[а] - МНМ в графе О, в котором содержатся вершины в и 7.
Теорема 1. Любое МНМ QG[а] содержится в базовом множестве, соответствующем паре а = (в, 7)■
QG[а] С Ба[а].
Доказательство. Пусть существует вершина V* £ В^а] ■ М = {в, 7^*} -независимое множество вершин, индуцирующее безреберный подграф О' С О. По определению безреберного графа, его вершины в, 7 и V* попарно несмежны, следовательно, вершина V* одновременно несмежна с в и 7 . Тогда, по определению базового множества, должно выполняться условие V* £ DG[а]. Противоречие доказывает, что не существует безреберного подграфа, множество вершин которого содержит пару (в, 7) и какой-либо элемент, не принадлежащий базовому множеству, соответствующему указанной паре. Таким образом, множества вершин, индуцирующие безреберный подграф, а следовательно, и все МНМ, имеющие в качестве двух своих вершины в и 7, целиком входят в базовое множество DG[а].
Теорема 2. Если В^а] С В^а*], тогда для любого МНМ QG[а] С В^а] найдется МНМ QG[а*] С ВG[а*] такое, что QG[а*] = QG[а] (другими словами, в любом МНМ, содержащем вершины в и 7, будут также находиться вершины в* и 7*).
Доказательство. Рассмотрим произвольное МНМ QG[(в,7)] С В^(в,7)]. Поскольку по условию теоремы В^(в,7)] С ВG[(в*,7*)], то множество QG[(в,7)] также является подмножеством В^(в*,7*)]. Остается показать, что множество QG[(в,7)] содержит элементы в* и 7*. Предположим, что это не так. С учетом того, что QG[(в,Y)] С В^(в*,7*)], вершины в* и 7* в графе О не смежны ни с одной вершиной из множества QG[(в,7)]. Но тогда можно дополнить множество QG[(в,7)] элементами в* и 7* и получить независимое множество большего размера, включающее данное, что противоречит максимальности независимого множества QG[(в,l)]. Полученное противоречие доказывает, что любое МНМ, содержащее вершины в и 7, будет являться множеством, в которое входят вершины в* и 7*.
Алгоритм MaxIS для построения ННМ. Этот алгоритм базируется на способе выделения структурных особенностей (0,1)-матриц [4, 5] и по сути является модификацией алгоритма ЛШБ [6].
Рассмотрим основные моменты работы алгоритма. Среди элементов множества
графа О0 = О выбирается ведущий элемент нулевого уровня а° = (в°,7*) £ ву^л - узел, базовое множество которого имеет наибольшую мощность. После этого формируется множество элементов, удовлетворяющих условию теоремы 2, т. е. такие а0 £ Яу,л, для которых ВG [а0] С ВG [а0]. Данные узлы впоследствии удаляются из множества Бу,л, так как их рассмотрение привело бы к построению МНМ, среди элементов которых также имеются выбранные вершины в° и 7°.
Согласно теореме 1, все независимые множества, в которые входит пара вершин а0 = (в*!,7*), можно построить из элементов базового множества В^[а*]. Для формирования таких множеств строим опорное множество ШG0 [а0] для узла а0. Задача нахождения МНМ, содержащего вершины в0,7*, в графе О сводится к поиску МНМ в подграфе О1 С О0, индуцированном множеством вершин ^G0 [а0] С V, а затем объединению каждого найденного МНМ в О1 с парой вершин (в0, 70). Для нахождения МНМ
в подграфе О = [шао а^^^ [ао], а] используется та же схема. Выбираем ведущий элемент первого уровня а^ = (в1,71*) е БШа0 [ао ], а, строим для него опорное множество ша1 [а*] и переходим к нахождению МНМ в подграфе О2 С О1 С О0. Таким образом, выбрав некоторую пару вершин в графе, переходим к соответствующему подграфу, тем самым сужая размерность задачи.
Решение задачи можно представить в виде дерева поиска, в котором каждый к-й уровень отвечает рассмотрению некоторого подграфа Ок С Ок-1 С ... С О0 = О. Здесь ак = (вк,7к) - некоторый узел в соответствующем графе Ок, индуцированном множеством [ак-1]. Узлы ак и ак-1 связаны следующим образом: ак е БШак-1 [ак-1],А. Для компактности записи можно опустить индекс Ок у множества [ак ], так как по индексу узла ак однозначно можно определить, из вершин какого графа формируется опорное множество ш[ак].
Учитывая тот факт, что любой подграф Ок, Ок-1,...,О0 является подграфом О, а множества несмежных пар в них определяются: БШ[ак-1],А, БШ[ак-2],А, ^[«о^а соответственно, то индекс А у множества Б также можно опустить, понимая, что все несмежные пары вершин в указанных подграфах несмежны и в исходном графе с матрицей смежностей А. Множество Бш^ак],А будем записывать в виде Б[ак]. Зададим подграф Ок+1 С Ок:
Ок+1 = [ш[ак],Б[ак;]], е Б[ак].
Для компактной формализации алгоритма введем узел а-1 = (в-1,7-1) отрицательного уровня с вершинами, не имеющими ребра ни с одной вершиной графа О:
^[а-1] = V, Б[а-1] = Бу,а.
Базовое множество В[ак+1] для узла ак+1 = (вк+1,7к+1) е Б[ак] графа Ок+1 представим как
В[ак+1 ] = {3 е ш[акк ] \ (3, вк+1) е Б [ак]&(3,1 к+1) е Б [ак ]}и{[Зк+1,1к+1}.
Опорное множество ш[ак+1] для узла а'к+1 = (в!к+1,7к+1) е Б[ак] графа Ок+1 определяем по правилу
и[ак+1] = В[ак+1] \{вк+1,1к+1}. Множество Б [а^+1] несмежных пар в графе, индуцированном множеством вершин и[ак+1] :
Б[ак+1 ] = {(р, ч)\(р, Ч) е ш[ак+1 ][2] & арл = 0,р,д е и[а>к+1 ]}. Множество Р [а^1], сформированное согласно правилу
Р[а,к+1] = {Я[а>к] е Р[ак] \ {вк+1 ,7*к+1} С Q[а>k]}, Р[а-1] = Ф,
будем называть окрестностью узла ак+1.
Основное отличие алгоритма Мах1Б от алгоритма ЛШБ - это введение отсечения ветвей дерева поиска, исходя из мощности базового множества выбранного узла. Докажем следующую теорему.
Теорема 3. Если в некотором подграфе Ок С Ок-1 С ... С О0 для базового множества выбранного узла ак = (вк,7к) выполнено условие
\В[ак]\ +2к < \Qmax!,
тогда мощность любого МНМ, содержащего вершины в*,7**, не превзойдет мощности текущего ННМ:
та.*]| < №тах|.
Доказательство. МНМ Q[а* ] можно представить в следующем виде: Q[аk* ] = {в0,10, в1Л*1, ..., в*-1,7*-1} и {в*, 7* } и QGk+l, где О*+1 = [ш[а*],£[а*]]. Очевидно, что 11 < ^[а*]|. Следовательно,
Ыа*]| < 1{в170,в171---,вк*-1,7к*-1}1 + 1{в*,7*}| + Па*]|. По определению опорного множества, п[а'*] = В[а*] \ {в*,7* }, а значит,
Па* ]| + {в* ,7*} = В[а* ]|.
На каждом к-м уровне дерева поиска независимое множество расширяется двумя вершинами в* и 7*, поэтому
в00^00^11^11,...^*-1,7*-^ = 2к. Таким образом, получаем, что
ЮМ < 2к + В[а*]|.
А значит, если В[а*]| + 2к < |Qmax|, то и ^[а*]| < |Qmax|, что и требовалось доказать.
Итак, если для некоторого узла а* = (в* ,7*), для которого базовое множество имеет наибольшую мощность:
В[а* ]| = тах Ва* ]|,
ак Е3[а>;-1]
выполняется условие теоремы 3, то этот узел исключается из множества в [а*-1 ], так как в данном случае не удастся построить МНМ большей мощности, чем то, что уже имеется. Если же среди элементов в [а*-1] найдется узел а* ■
Ва*]| +2к > ^т«!
тогда переходим к построению ветви дерева поиска, идущей из него. В противном случае возвращаемся на предыдущий уровень.
Второе изменение в алгоритме МахК связано с отказом от применения окрестностей. Покажем, что, в отличие от алгоритма ЛШБ, для нахождения ННМ использовать окрестность нецелесообразно.
По алгоритму ЛШБ поиска всех МНМ для того, чтобы исключить из рассмотрения на к-м уровне дерева поиска узел а*, необходимо существование в окрестности этого узла МНМ Q[аk] £ Р[а*]:
Q[а*] = В[а*] и ЛвМ}).
Следовательно, ^[а*]| = В[а*]| +2к. Пусть мощность текущего ННМ = т,
|^[а*]| = ¡. Очевидно, л ^ т. Получаем, что
Ща*]| + 2к = л < т = ^та^.
Таким образом, узел а% удовлетворяет условию теоремы 3, а потому мощность МНМ Q[a%], которое можно построить, рассмотрев этот узел, не превысит мощность текущего ННМ Qmax. По алгоритму MaxIS рассматриваются только те ведущие элементы а%, для которых выполняется условие |D[a%]| + 2k > |Qmax|, но для таких узлов не имеет смысл строить окрестности, так как в них невозможно существование МНМ Q[a%]:
Q[ak ] = D[ak ] U })•
И наконец, третья модификация. Каждый раз после принятия решения о построении ветви дерева поиска, идущей из текущего выбранного узла , необходимо подсчитать IS [а% ]|.
Пусть |w[a%]| = m. Рассмотрим процесс построения МНМ в зависимости от мощности множества S [а%].
1. Если l^fak]! = —значит, текущее опорное множество целиком представляет собой независимое множество. В этом случае текущим ННМ будет множество
Qmax = {ß0, Y0, ßlll ß— ,1^} U u[a<k ].
2. Условие IS^o^]! = —— — 1 говорит о том, что среди элементов опорного множества и[а%] только две вершины соединены ребром. В случае выполнения условия |D[a%]| + 2k — 1 > |Qmax| в качестве нового ННМ будет выступать множество
QmaX = {ßl 7*°, ßlll ßt\ it'} U И«*] \ W),
где вершина S - одна из пары вершин опорного множества которые соединены
между собой ребром. В противном случае отказываемся от текущего узла и переходим к выбору нового ведущего элемента на k-м уровне.
3. В случае, когда ^[о^]! = —— — 2, некоторые вершины опорного множества и[а%] соединены ребрами, причем количество ребер однозначно равно двум, а количество вершин, инцидентных этим ребрам, может быть равно либо трем, либо четырем. В такой ситуации нужно определить, сколько вершин участвует в образовании ребер.
Если количество различных вершин равно трем, значит, необходимо проверить условие D[ak ]| + 2k — 1 > |Qmax|. В случае его выполнения
QmaX = {ßl 7*°, ßlll ßtl it'} U И«*] \ W),
где вершина S инцидентна обоим ребрам. В противном случае отказываемся от текущего узла и переходим к выбору нового ведущего элемента на k-м уровне.
Если же количество вершин равно четырем, то при выполнении условия Dak^ + 2k — 2 > |Qmax| ННМ будет
QmaX = {ßl 7* ; ßl ll ßtll*^} U И«*"] \ Ш
где вершины ¿i и 62 инцидентны разным ребрам. Иначе вновь переходим к выбору ведущего элемента k-го уровня.
Приведем псевдокод алгоритма MaxIS: procedure MaxIS (G = [У, S^a]) begin
k := 0 //номер уровня дерева поиска Q := 0 //текущее независимое множество
Qmax := 0 //текущее ННМ akt-1^=(0k-1
1] := V//опорное множество S[ak-1 ] := Sv,a // множество несмежных пар в графе G construct D[ak], ak = (0k,Yk), {0k,Yk} eV, ak e SV,A continue := true while continue=true do if S[a*-1] = 0 then if Hak-1] = 0 and 2k + 1> |Qmax|) then Qmax := Q U {<5}, S e u[ak-1], u[ak-1] := 0 end if
if k = 0 then continue:=false
else Q := Q \ ({0k;-1 ,y*-1} U r[ak;-1 ]), k := k - 1
end if
else choose ak = 0,Y) e S[a^-1 ] : ID[ak]l = max^^-ij D[ak]| r[ak] := 0
if ID[ak]| + 2k> |Qmax| then R[ak] := {(0k,Yk) | D[ak] С D[ak], (0k,Yk) e S[ak-1] \{akJ} Q := Q U {0k, Y}, u[a.k] := D[ak] \ {0k, Y} if Hak^ = 0 then S[ak] := 0, Qmax := Q elif Hak]| = 1 then S[ak] := 0, Qmax := Q U u[ak] elif Hak^ > 1 then S[ak] := S[ak-1] П (w[ak] x w[ak])
if №k]| Ф 0 and |SKfc]| = then
r[ak] := w[ak], Q := Q U r[ak], Qmax := Q S[ak] := 0, u[ak] := 0 k k
elif \S[a*]\ ± 0 and \S[a*]\ = |lj|a'll(l^|a'lhl) - 1 then if Dak]| +2k - 1 > |Qmax | then choose v e u[ak] : 3p e u[ak] : avp = 1 r[ak] := u[ak] \ {v}, Q := Q U r[ak], Qmax := Q end if
S[ak] := 0,u[akk] := 0
elif \S[a*]\ ± 0 and \S[a*]\ = _ 2 then
if \D[ak]| + 2k - 1 > |Qmax| then if 3v € u[ak ] : 3 p, q € u[ak] : avp = 1& avq = 1 then
r[ak] := w[ak] \ {v}, Q := Q U r[ak], Qmax := Q else
if \D[ak]\ + 2k - 2 > \Qmax\ then choose v,t G u[ak] : 3p, q € u[ak] : avp = 1 & atq = 1 r[ak] := u[ak] \{v,t}, Q := Q U r[ak], Qmax := Q end if end if
S[ak] := 9,^[ak] := 0 end if end if
for all ak+1 G S[ak] construct D[ak+1] end do S[ak-1] := S[ak-1] \ (R[a<k] U {ak}), k := k + 1 else S[ak] := 0
end if end if end do return Q max
end {of MaxIS}
Тестирование программной реализации алгоритма. Алгоритм MaxIS сравнивался при тестировании с методом Робсона. Согласно теоретической оценке сложности, алгоритм Робсона является наиболее эффективным для решения задачи о ННМ, именно этот факт объясняет выбор его в качестве оппонента для алгоритма MaxIS.
Для тестирования генерировались графы с различными значениями плотности (здесь и далее под плотностью будем понимать плотность ребер графа). С этой целью в программе по заданной плотности p определялось количество ребер r n-вершинного графа G = (V, E): т — iooy0; ГД® m — —2—' Полученное значение г округлялось до целого числа. Далее, используя функцию генерации случайных чисел, формировались пары вершин (i,j): i - случайное число из промежутка [1,n — 1], j - из промежутка [i + 1, n]. Каждая такая пара записывалась во множество ребер E в том случае, если она не была добавлена ранее. Множество E продолжало расширяться, пока его мощность не достигала значения r.
В результате тестирования были получены зависимости времени (t) поиска решения от размерности (n) графа при фиксированной плотности (p) и от плотности графа в рамках фиксированной размерности. В процессе тестирования графов одной и той же плотности были рассмотрены графы размерности n e [10,100] c шагом, равным единице. Количество графов для каждого значения размерности равнялось 10. Таким образом, каждый график, приведенный в статье, отражает результат обработки 910 графов. Исключение составляют только графики, показывающие зависимость времени работы алгоритмов от плотности графов в рамках фиксированной размерности. В данном случае было обработано 1010 графов, так как рассматривались графы со значением плотности p e [0%, 100%] с шагом, равным 1%. Количество графов для каждого значения плотности также равно 10. В качестве результирующего времени работы выбиралось среднее арифметическое значение времени для графов с одинаковыми характеристиками [n,p]. Ниже приведены результаты тестирования.
На рис. 1 представлены графики для алгоритма Робсона, MaxIS и полного перебора (TotalMax), несколько модифицированного для поиска ННМ. В данном варианте алгоритма полного перебора отсутствует проверка на максимальную независимость полученного независимого множества. Каждый раз он в качестве ННМ сохраняет текущее независимое множество, имеющее боольшую мощность среди всех найденных к этому моменту. Независимое множество наибольшей мощности, очевидно, будет и наибольшим максимальным независимым множеством. Это небольшое изменение в алгоритме немного улучшило время его работы. В дальнейшем сравнение с алгоритмом полного перебора проводиться не будет.
Конечно, на фоне полного перебора разница в скорости работы алгоритмов Робсона и MaxIS едва заметна. Рассмотрим результаты их тестирования на отдельном графике (рис. 2). На нем видно, что при плотности p < 60%о время работы алгоритма MaxIS превосходит время работы алгоритма Робсона, но при увеличении плотности p > 60%о оно уменьшается и практически становится равным времени работы алгоритма Робсона.
Для того чтобы определить порядок временного роста алгоритмов MaxIS и Робсона при различных значениях плотности, представим результаты их тестирования
Рис. 1. Зависимость времени работы алгоритмов Робеона, MaxIS и TotalMax от плотности графов при фиксированной размерности n = 12
U с
0.025
Р,%
Рис. 2. Зависимость времени работы алгоритмов Робсона и Мах1Б от плотности графов при фиксированной размерности п = 12
в логарифмической шкале. Для этого переведем значения времени £ в секундах в миллисекунды, а затем по оси ОУ отметим значения (£), а по оси ОХ - размерности п. Выбор логарифмической шкалы относительно степеней 2 объясняется тем фактом, что точного алгоритма, решающего задачу о построении ННМ и имеющего полиномиальную оценку сложности, не существует, а определение теоретической сложности алгоритмов сводится к вычислению показателя а степенной функции /(п) = 2ап.
Теоретической оценке сложности полного перебора соответствует кривая f (п) = 2п, а алгоритму Робсона - / (п) = 20 276п.
Как видно из рис. 3, а, угол наклона кривой, построенной для алгоритма МахК, при р = 50% больше, чем у алгоритма Робсона, но при этом очень близок к углу наклона функции /(п) = 20 276п . Но уже при р = 70% угол наклона кривой для алгоритма Мах1Я уменьшается и становится меньше, чем для кривой 20 276п (рис. 3, б). Уверенно снижая порядок временного роста при увеличении плотности графа, алгоритм Мах1Я практически «сливается» с алгоритмом Робсона при р = 85% (рис. 4, а). А при р = 95% кривая, отвечающая алгоритму Мах1Я, проходит ниже кривой для алгоритма Робсона, при этом порядок временного роста этих двух алгоритмов совпадает, так как кривые идут параллельно друг другу (рис. 4, б).
Рис. 3. Зависимость времени работы алгоритмов Робеона и MaxIS от размерности графов при фиксированной плотности р = 50% (а) и р = 70% (б) 1-4 - кривые: 1 - алгоритма Робсона, 2 - алгоритма МахТЯ, 3 - 2 п, 4 - 2 0 276п.
1о&(0 100
Рис. 4- Зависимость времени работы алгоритмов Робеона и Мах^ от размерности графов при фиксированной плотности р = 85% (а) и р = 95% (б) 1-4 - кривые: 1 - алгоритма Робсона, 2 - алгоритма МахТБ, 3 - 2 п, 4 - 2 0 276п.
Заключение. В статье представлен алгоритм Мах1Я для поиска ННМ в неориентированном графе. Приведены результаты экспериментального сравнения этого
алгоритма с известным алгоритмом для поиска ННМ в графе - алгоритмом Робсона. Установлено, что при высокой плотности графов алгоритмы Робсона и MaxIS имеют одинаковый порядок роста скорости работы.
Литература
1. Robson J. M. Algorithms for maximum independent set // Journal of Algorithms. 1986. Vol. 7. P. 425-440.
2. Diestel R. Graph Theory. Heidelberg: Springer-Verlag, 2005. 312 p.
3. Moon J. W., Moser L. On cliques in graphs // Israel J. Math. 1965. Vol. 3. P. 23-28.
4. Олемской И. В. Алгоритм выделения структурных особенностей // Николай Ефимович Кирин: сб. ст. / под ред. В. В. Жука, В. Ф. Кузютина. СПб.: АССПИН, 2003. С. 224-251.
5. Олемской И. В. Модификация алгоритма выделения структурных особенностей // Вестн. С.-Петерб. ун-та. Сер. 10: Прикладная математика, информатика, процессы управления. 2006. Вып. 2. С. 55-65.
6. Фирюлина О. С. Нахождение всех максимальных независимых множеств неориентированного графа // Вестн. С.-Петерб. ун-та. Сер. 10: Прикладная математика, информатика, процессы управления. 2013. Вып. 1. С. 63-69.
Статья рекомендована к печати проф. Л. А. Петросяном. Статья поступила в редакцию 31 октября 2013 г.
Контактная информация
Олемской Игорь Владимирович - доктор физико-математических наук, профессор; e-mail: olemskoy_iv@mail.ru
Фирюлина Оксана Сергеевна - аспирант; e-mail: firyulina.oxana@mail.ru
Olemskoy Igor Vladimirovich - doctor of physical and mathematical sciences, professor, St. Petersburg State University, 199034, St. Petersburg, Russia Federation; e-mail: olemskoy_iv@mail.ru
Firyulina Oksana Sergeevna - post-graduent student, St. Petersburg State University, 199034, St. Petersburg, Russia Federation; e-mail: firyulina.oxana@mail.ru