- •Теория np-полноты Труднорешаемые задачи
- •Нерешенные проблемы теории np-полноты
- •Полиномиальная сводимость и np-полные задачи
- •Примеры np-полных задач
- •1. Задача выполнимость
- •2. Задача 3-выполнимость
- •3. Задача о клике
- •4. Задача о вершинном покрытии
- •Приближенные алгоритмы решения np-полных задач Оценка качества приближенных алгоритмов
- •Приближенный алгоритм решения задачи о вершинном покрытии
Приближенный алгоритм решения задачи о вершинном покрытии
Пусть E – множество ребер графа G, VP – искомое множество вершин вершинного покрытия графа G.
VP:=[]; {изначально множество VР пусто}
Е:=<множество всех ребер графа>;
While E<>[] Do Begin{пока множество ребер не пусто}
<выбрать ребро (u, v) из Е>;
VP:=VP+[u]+[v];
<удалить из E все ребра, инцидентные вершинам u и v>
End;
Выполним трассировку алгоритма на примерах, обозначив через А множество выбираемых ребер графа.
Пример 1
|
А |
VP |
Е |
|
[] |
[] |
[1..9] |
1 |
[1] |
[1,3] |
[6..9] |
2 |
[1,6] |
[1,2,3,5] |
[] |
Найденное решение VP=[1,2,3,5] оптимально.
Пример 2
|
А |
VP |
Е |
|
[] |
[] |
[1..7] |
1 |
[1] |
[1,3] |
[4,6,7] |
2 |
[1,4] |
[1,2,3,5] |
[7] |
3 |
[1,4,7] |
[1..6] |
[] |
Найденное решение не оптимально. |VP|=6, а |VPОПТ|=3.
Теорема. Данный приближенный алгоритм решения задачи о вершинном покрытии работает с ошибкой не более чем в 2 раза.
Доказательство. Очевидно (по построению), что множество VP – множество вершин вершинного покрытия.
А – множество ребер, выбираемых в ходе работы алгоритма. Никакие два ребра из А не имеют общих вершин (по построению), следовательно, |VP|=2·|A| или .
Оптимальное вершинное покрытие VPОПТ содержит хотя бы одну из двух вершин выбранных в А ребер, следовательно, |A|≤|VPОПТ|.
Из полученных равенства и неравенства |A|≤|VPОПТ| следует, что . Это означает, что найденное решение не более чем в два раза превосходит оптимальное, т. е. алгоритм работает с ошибкой не более чем в два раза.
Вопросы по главе для самоконтроля
Сформулируйте определение массовой проблемы.
Сформулируйте определение NP-полной задачи.
Сформулируйте нерешенные задачи теории NP-полноты.
Сформулируйте определение полиномиальной сводимости.
На чем основан способ доказательства NP-полноты задач?
Что называется схемой приближения?
Что называется полностью полиномиальной схемой приближения?
Что значат слова «алгоритм работает с ошибкой не более чем в n раз»?
Привести пример графа, для которого приближенный алгоритм решения задачи о вершинном покрытии дает
a) точное решение;
b) решение с ошибкой ровно в два раза.
Известно, что задача о ВЕРШИННОМ ПОКРЫТИИ и задача о КЛИКЕ взаимно дополнительны: минимальное вершинное покрытие является дополнением к максимальной клике в графе-дополнении. Можно ли отсюда заключить, что приближенный алгоритм решения задачи о ВЕРШИННОМ ПОКРЫТИИ даст решение и для задачи о КЛИКЕ с такой же погрешностью? Ответ обоснуйте.