Дайте определение NP-полноты и приведите пример редукции от SAT к задаче рюкзака или наоборот; обсудите, какие эвристики и приближённые алгоритмы используются на практике для NP-трудных задач и как оценивать их качество

24 Ноя в 09:34
2 +2
0
Ответы
1
Определение NP‑полноты:
- Язык (задача) LLL называется NP‑полным, если
1. L∈NPL\in\mathrm{NP}LNP (решение проверяется детерминированно за полином),
2. для любой задачи A∈NPA\in\mathrm{NP}ANP существует полиномиальная сводимость (полиномиально вычислимая функция) fff такая, что для любого входа xxx x∈A ⟺ f(x)∈L. x\in A \iff f(x)\in L.
xAf(x)L.
Это называется полиномиальной много‑в‑одном сводимостью (many‑one). (Cook–Levin: SAT — с.н.с. NP.)
Пример сводимости SAT → Задача рюкзака (через Subset‑Sum):
- Схема (классическая идея): сначала привести SAT к 3‑SAT. Пусть дано 3‑SAT с переменными x1,…,xnx_1,\dots,x_nx1 ,,xn и дизъюнктами (клауза) C1,…,CmC_1,\dots,C_mC1 ,,Cm .
- Построим экземпляр SUBSET‑SUM (подмножество сумм), затем заметим, что SUBSET‑SUM сводится к 0–1 knapsack тривиально.
Построение (эсквиз):
1. Выбираем основание B>mB>mB>m (например B=m+1B=m+1B=m+1), чтобы при сложении цифр не было переносов.
2. Числа будут иметь n+mn+mn+m «цифр»: первые nnn цифр соответствуют выбору значения для каждой переменной, последние mmm — выполнению клауз.
3. Для каждой переменной xix_ixi создаём два числа ai,Ta_{i,T}ai,T и ai,Fa_{i,F}ai,F . В iii-й (переменной) позиции обе эти числа имеют цифру 111 (это обеспечивает выбор ровно одного значения для каждой переменной), а в позициях клауз у числа стоит 111 там, где соответствующая литерала (например xix_ixi или ¬xi\neg x_i¬xi ) входит в клаузу.
4. Для каждой клаузулы добавляем вспомогательные «заполняющие» числа, чтобы можно было довести суммарную цифру в каждой клаузовой позиции до заданного целевого значения (обычно «1») ровно тогда, когда выбран хотя бы один истинный литерал в этой клаузе.
5. Целевое число TTT задаём так, чтобы первые nnn цифр = 111 (обеспечить ровно один выбор значения на переменную), последние mmm цифр = требуемые значения для клауз (например 111).
- Правильность: существует подмножество чисел, сумма которого равна TTT тогда и только тогда, когда в 3‑SAT есть удовлетворящее присваивание (выбор одного из ai,T,ai,Fa_{i,T},a_{i,F}ai,T ,ai,F для каждой переменной и подбор заполняющих чисел обеспечивает каждую клаузу).
- Затем SUBSET‑SUM сводится к 0–1 KNAPSACK: взять веса = эти числа, вместимость = TTT, доходы равны весам и требовать достижение ровно вместимости (или задать доход‑порог). Таким образом получаем сводимость SAT ≤p KNAPSACK.
Эвристики и приближённые алгоритмы на практике (коротко и по назначению):
- Жадные алгоритмы (greedy): просты и быстры; часто дают хорошее начальное решение (например жадный по плотности value/weightvalue/weightvalue/weight для рюкзака).
- Локальный поиск: hill‑climbing, simulated annealing, tabu search — быстро улучшают решение на больших экземплярах.
- Популяционные/эволюционные алгоритмы и метаэвристики: genetic algorithms, GRASP — применимы, когда пространство решений сложно.
- Линейное программирование и округление: решаем LP‑релаксацию, затем округляем; даёт гарантии через интегральный разрыв.
- Прямые алгоритмы с ветвлением и отсечением (branch‑and‑bound / branch‑and‑cut): точные методы с сильными эвристиками и оценками (используются в солверах).
- Специальные аппроксимации и схемы: для KNAPSACK есть FPTAS — для любого ε>0\varepsilon>0ε>0 можно получить решение с ценностью не менее (1−ε)OPT(1-\varepsilon)\mathrm{OPT}(1ε)OPT за время полиномиальное в nnn и 1/ε1/\varepsilon1/ε (т.е. poly(n,1/ε) \mathrm{poly}(n,1/\varepsilon)poly(n,1/ε)).
- Для других задач: PTAS, константные аппроксимации (например 0.878…0.878\ldots0.878 для Max‑Cut по Goemans–Williamson с SDP), приближения через специализированные эвристики.
Как оценивать качество эвристики/приближения:
- Аппроксимационное отношение (approximation ratio). Для задачи максимизации определить
ρ=ALGOPT, \rho=\frac{\mathrm{ALG}}{\mathrm{OPT}},
ρ=OPTALG ,
где ALG\mathrm{ALG}ALG — значение алгоритма, OPT\mathrm{OPT}OPT — оптимум. Алгоритм считается α\alphaα-аппроксимационным, если для всех входов ALG≥α⋅OPT\mathrm{ALG}\ge \alpha\cdot\mathrm{OPT}ALGαOPT.
Для минимизации обычно берут ρ=OPTALG\rho=\frac{\mathrm{OPT}}{\mathrm{ALG}}ρ=ALGOPT .
- Относительная погрешность (relative gap): (OPT−ALG)/OPT(\mathrm{OPT}-\mathrm{ALG})/\mathrm{OPT}(OPTALG)/OPT.
- Гарантии на время: полиномиальность, зависимость от 1/ε1/\varepsilon1/ε (для FPTAS).
- Интегральный разрыв LP: насколько хороша LP‑релаксация — даёт теоретическую оценку округления.
- Эмпирическая оценка: бенчмарки, сравнение с оптимумом на малых экземплярах (или с лучшими известными решениями), статистика по набору инстансов (средняя/худшая/медианная разница), стабильность и время.
- Вероятностные гарантии: для рандомизированных алгоритмов смотреть вероятность достижения требуемого соотношения/предела.
Краткое резюме:
- NP‑полнота = принадлежность NP + полиномиальная сводимость из любой задачи NP.
- Практически для SAT→Knapsack используют серию сводимостей (SAT→3‑SAT→SUBSET‑SUM→KNAPSACK) через кодирование присваиваний в числа; Subset‑Sum легко превращается в knapsack.
- На практике применяют комбинацию жадных эвристик, локального поиска, LP‑релаксаций, метаэвристик и точных методов с отсечением; качество оценивают теоретическими гарантиями (аппрокс‑коэффициент, FPTAS/PTAS) и эмпирическими метриками (относительная ошибка, бенчмарки, время).
24 Ноя в 10:27
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир