Что такое NP-полнота и как доказать, что новая задача оптимизации является NP-полной? Приведите общий подход и выполните редукцию на конкретном примере (например, из задачи о независимом множестве или SAT)

25 Ноя в 15:54
1 +1
0
Ответы
1
Кратко: NP-полнота — это свойство языков/задач: задача LLL NP-полна, если
- L∈L\inLNP (решение можно проверить за полиномиальное время по сертификату), и
- для любой задачи A∈A\inANP существует полиномиальная сводимость fff такая, что x∈A ⟺ f(x)∈Lx\in A \iff f(x)\in LxAf(x)L (то есть LLL NP-трудна).
Для оптимизационных задач обычно рассматривают их решение-версию (decision version): вместо «найти максимум» ставят вопрос «существует решение с качеством ≥k\ge kk?\)». Демонстрация NP-полноты новой оптимизационной задачи проходит так:
Общий подход
- Формализовать decision-версию задачи: определить вход, параметр kkk и требование «есть ли решение с ценностью ≥k\ge kk?».
- Доказать, что задача принадлежит NP: показать, как по сертификату (напр., набор выбранных элементов) за полиномиальное время проверить, что значение ≥k\ge kk.
- Выбрать известную NP-полную задачу AAA (напр., 333-SAT или INDEPENDENT SET).
- Построить полиномиальную функцию fff, переводящую любую инстанцию xxx задачи AAA в инстанцию f(x)f(x)f(x) вашей задачи так, чтобы xxx позитивно тогда и только тогда, когда f(x)f(x)f(x) позитивно. Доказать корректность и полиномиальность построения.
- Сделать вывод: поскольку AAA сводится к вашей задаче, она NP-трудна; вместе с принадлежностью NP это даёт NP-полноту.
Конкретный пример: сведение 333-SAT → INDEPENDENT SET (решение-версия Maximum Independent Set)
- Исходная задача: дана булева формула в CNF с mmm клаузами C1,…,CmC_1,\dots,C_mC1 ,,Cm , каждая клауза содержит не более трёх литералов. Нужно решить, выполнима ли формула.
- Целевая задача (решение): для графа GGG и числа kkk — существует ли независимое множество размера ≥k\ge kk?
Построение графа GGG из формулы ϕ\phiϕ:
- Для каждой клаузы CiC_iCi создаём вершины, по одной на каждый литерал в клаузе. Если клауз имеет три литерала, делаем три вершины; между всеми вершинами одной клаузе ставим ребра (полный подграф — треугольник для трёхлитеральной клаузе). Это гарантирует, что независимое множество может выбрать максимум одну вершину из каждой клаузе.
- Для любых двух вершин, соответствующих литералам xxx и ¬x\neg x¬x (противоположные литералы одного и того же переменного) из разных клауз, добавляем между ними ребро. Это не даёт выбрать в независимом множестве одновременно противоречивые литералы.
- Параметр kkk берём равным числу клауз mmm.
Корректность:
- Если ϕ\phiϕ выполнима, то есть присвоение переменным, делающее каждую клаузу истинной. Для каждой клаузи выбираем один истинный литерал; соответствующие вершины по построению не соединены ребром: внутри клаузи мы взяли только одну вершину (ребра внутри клаузи предотвращают выбор двух), а между клаузами нет рёбер между выбранными вершинами, потому что выбранные литералы не являются противоположностями (противоречивые литералы не могут быть одновременно истинны). Значит существует независимое множество размера mmm.
- Обратно, если в GGG есть независимое множество размера mmm, то в каждой клаузе оно должно содержать ровно одну вершину (иначе максимум из одной из клауз). Эти выбранные вершины соответствуют литералам, не являющимся противоположностями (иначе между ними было бы ребро). Присвоив соответствующим литералам значение «истина» (и остальным — произвольно), получаем модель формулы, то есть ϕ\phiϕ выполнима.
Полиномиальность: граф строится за время полиномиальное по размеру формулы, число вершин и рёбер полиномиально ограничено (O(m)O(m)O(m) вершин и O(m2)O(m^2)O(m2) рёбер в худшем случае).
Вывод: поскольку 333-SAT сводится полиномиально к решению INDEPENDENT SET, последняя задача NP-трудна; она также принадлежит NP (сертификат — множество вершин размер kkk, проверка независимости и размера — полиномиальна). Значит задача NP-полна. Аналогично можно редуцировать из INDEPENDENT SET в другие оптимизационные задачи, чтобы показать их NP-трудность.
Замечания:
- Для любой новой оптимизационной задачи сначала формализуйте решение-версию; именно её обычно доказывают NP-полной.
- Можно использовать разные исходные NP-полные задачи (3-SAT, CLIQUE, VERTEX-COVER, INDEPENDENT-SET и т.д.), выбирая ту, чей стиль конструкции проще для вашей задачи.
25 Ноя в 16:47
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир