Решение NP-полных задач

реклама
Методы построения и анализа
алгоритмов
NP-полные задачи
Щукин Георгий Анатольевич
Новосибирский Государственный Технический Университет
Кафедра параллельных вычислительных технологий
2014
Классы задач
Класс P: задачу можно решить за полиномиальное
время
Класс NP (Nondeterministic Polynomial): решение задачи
можно проверить на корректность за полиномиальное
время
на
детерминированной
машине.
На
недетерминированной машине задачу можно решить за
полиномиальное время
Класс NP-трудных задач (NP-Hard): задача по крайней
мере так же сложна, как сложнейшая задача в NP
Класс NP-полных задач (NP-Complete): NP + NP-Hard.
Задача NP-полная, если каждая NP задача сводится к
ней за полиномиальное время
P = NP?
Пока не
доказано
Имея алгоритм решения одной NP-полной задачи за полиномиальное
время на детерминированной машине, все NP-полные задачи можно
будет решить за полиномиальное время
Приводимость задач
A
2. Приведение за
полиномиальное время
3. Может быть решена за
полиномиальное время
B
1. Известен алгоритм
решения с полиномиальной
сложностью
1. Для задачи B известен алгоритм решения с полиномиальной сложностью
2. Есть процедура приведения входных данных задачи A к входным данным
задачи B, требующая полиномиальное время работы
3. Таким образом, задача A может быть также решена за полиномиальное время
Приводимость задач и NP-полнота
A
2. Приведение за
полиномиальное время
3. Не может быть решена за
полиномиальное время
B
1. NP-полная задача
1. Известно, что задача B — NP-полная (нет эффективного алгоритма решения)
2. Есть процедура приведения входных данных задачи A к входным данным
задачи B, требующая полиномиальное время работы
3. Таким образом, задача A также не имеет эффективного алгоритма решения (за
полиномиальное время)
Задачи оптимизации и
принятия решения
Пример задачи оптимизации: поиск кратчайшего
пути в графе между парой вершин
Пример задачи принятия решения: есть ли путь в
графе между парой вершин длиной меньше чем k?
Задачи принятия решения (decision problems):
ответом может быть только «да» или «нет»
Понятие NP-полноты применяется в основном
именно к задачам принятия решения
SAT
Дано: булева формула f ( x 1, x 2, ... , x n )
Задача SAT: проверить, является ли данная булева
формула выполнимой: f ( x́1 , x́2 , ... , x́n )=1
SAT и NP-полнота
SAT — NP-полная задача
Существует алгоритм
полиномиальное время
проверки
решения
за
Любую другую NP задачу можно свести к SAT за
полиномиальное время
Время решения: O(2N)
На данный момент не найдено алгоритма решения
SAT за полиномиальное время
Доказательство NP-полноты
3-CNF-SAT: булевая формула — конъюнкция
дизъюнкций, в каждой дизъюнкции — ровно 3
литерала (переменная или ее отрицание)
Для доказательства NP-полноты задачи нужно
показать, что задача SAT или 3-CNF-SAT может
быть сведена к этой задаче за полиномиальное
время
Задача о клике
Клика неориентированного графа G = (V,E) —
подмножество вершин V', каждая пара вершин из
которого соединена ребром из E (полный подграф
графа)
Задача о клике — найти клику максимального
размера (с максимальным числом вершин)
Задача о клике: решение
MaxClique(Graph G):
max_size = 0
max_clique = NULL
subgraphs = get_all_subgraphs(G)
for subgraph in subgraphs:
if is_clique(subgraph):
size = size(subgraph)
if size > max_size:
max_size = size
max_clique = subgraph
return max_clique
Задача о клике: оценка
Число всех подграфов графа: O(2V)
Проверка на клику: O(V2)
Время решения: O(V2*2V)
Для задач, решаемых методом полного перебора:
временная сложность решения = O(время
обработки одного варианта * число вариантов)
Решение NP-полных задач
Жадные алгоритмы
Поиск с возвратом/метод ветвей и границ
Эвристические алгоритмы
Вышеприведенные методы не гарантируют
нахождение оптимального решения задачи
Метод ветвей и границ
Основная идея: рекурсивное разбиение множества
возможных решений на подмножества с отбрасыванием
неперспективных
подмножеств
для
сокращения
перебора
Шаг ветвления: разбить текущее множество решенийкандидатов на подмножества решений
Шаг ограничения: вычислить верхние и нижние оценки
для подмножеств с помощью оценочной функции;
отбросить подмножества с нижними оценками выше чем
текущая минимальная верхняя оценка
Повторить процедуру для подмножеств или вернуть
найденное решение
Алгоритм Брона-Кербоша
BronKerbosch(Graph G):
BronKerbosch({}, G.V, {})
BronKerbosch(R, P, X):
Если P и X пусты:
R — максимальная клика
Для каждой вершины v в P:
N(v) — все смежные с v
вершины
BronKerbosch(R ⋃ {v}, P ⋂ N(v), X ⋂ N(v))
P = P \ {v}
X = X ⋃ {v}
Время работы: O(3n/3)
в худшем случае
Задача о независимом множестве
Независимое множество неориентированного
графа G = (V,E) — подмножество вершин V',
никакая пара вершин из которого не соединена
ребром из E
Задача о независимом множестве — найти
независимое множество максимального размера
Задача о вершинном покрытии
Вершинное покрытие неориентированного графа
G = (V,E) — подмножество вершин V', которое
«покрывает» все ребра графа: для каждого ребра
(u,v) из E вершина u и/или v находится в V'
Задача о вершинном покрытии — найти покрытие
минимального размера
Задача о раскраске графа
Задача о раскраске неориентированного графа G =
(V,E) — найти минимальное число цветов k,
которыми можно раскрасить вершины графа таким
образом, чтобы вершины каждого ребра были
окрашены в разные цвета
Задача о коммивояжере
Гамильтонов цикл неориентированного графа G =
(V,E) — простой цикл (не проходящий дважды
через одну и ту же вершину), содержащий все
вершины графа ровно по одному разу
Задача о коммивояжере
для взвешенного
неориентированного
графа G=(V,E) — найти
гамильтонов цикл с
минимальной суммой
весов ребер
Задача о рюкзаке
Дано множество предметов, для каждого предмета
известен вес/объем и стоимость. Дан рюкзак с
известной
максимальной
вместимостью
по
весу/объему
Задача: найти подмножество
предметов с максимальной
суммарной стоимостью,
которое может
поместиться в рюкзак
Полезная литература
Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К.: Алгоритмы:
Построение и анализ, 2-е издание:
Глава 34, NP-полнота
Ахо А., Хопкрофт Д., Ульман Д.: Структуры данных и алгоритмы:
Глава 10, Методы разработки алгоритмов
Гери М., Джонсон Д.: Вычислительные машины и
труднорешаемые задачи
Скачать