Как упоминает Аарон МакДейд в своем теперь удаленном ответе, проблема поиска максимального независимого набора эквивалентна поиску максимальной клики. Эквивалентность заключается в том, что нахождение максимального независимого множества в графе G аналогично нахождению максимальной клики в дополнении G. Задача, как известно, является NP-полной.
Решение о грубой силе, о котором вы упоминаете, занимает O(n^2 2^n)
, но вы можете добиться большего, чем это. У Робсона есть статья под названием «Алгоритмы для максимально независимых наборов» 1986 года, в которой приводится алгоритм, который принимает O(2^{c*n})
для константы 0<c<1
(я считаю, c
составляет около 1/4
, но я могу ошибаться). это характерно для двудольного графа.
Стоит отметить, что если у вас двудольный граф, любая из сторон образует независимое множество. В полном двудольном графе K_{b,r}
, который разделен B x R
на |B|=b
и |R|=r
, где есть ребро от каждой вершины в B
до каждой вершины в R
и ни одного в B
, ни одного в пределах R
, максимальный независимый набор равен B
, если b>=r
, в противном случае это R
.
Взятие B
или R
вообще не сработает. sdcvvc отметил пример с вершинами {1,2,3,A,B,C}
и ребрами {A,1}, {A,2}, {A,3}, {B,3}, {C,3}
. В этом случае максимальный независимый набор равен {1,2,B,C}
, что больше, чем раздел {A,B,C}
или {1,2,3}
.
.
Может улучшиться алгоритм Робсона, чтобы он начинался с большего из B
или R
и продолжал оттуда, хотя я не уверен, насколько это изменится.
В качестве альтернативы вы можете использовать алгоритм Хопкрофта-Карпа на двудольном дополнении графа, чтобы найти максимальное совпадение, а затем взять вершины, используемые в сопоставлении, в качестве независимого набора. Это дает алгоритм полиномиального времени для решения проблемы.