Аппроксимационный алгоритм


Аппроксимационный алгоритм — в исследовании операций алгоритм, использующийся для поиска приближённого решения оптимизационной задачи.

Концепция аппроксимационного алгоритма была формализована в 1972-м году в статье Гарея, Грэхэма и Ульмана, а позднее Джонсоном. Аппроксимационные алгоритмы часто связаны с NP-трудными задачами, поскольку для них вряд ли найдётся эффективный алгоритм точного решения за полиномиальное время, так что имеет смысл попробовать найти близкое оптимальному решение. В отличие от эвристических алгоритмов, дающих достаточно хорошие решения за приемлемое время, аппроксимационные алгоритмы обеспечивают доказуемое качество решения в заранее определённых границах времени. В идеале аппроксимация даёт решение, отличающееся от оптимального на некоторый небольшой множитель (например, в пределах 5 %). Аппроксимационные алгоритмы всё чаще используются для решения задач, для которых известны точные алгоритмы, работающие за полиномиальное время, но работающие долго. Типичным примером аппроксимационного алгоритма может служить алгоритм решения задачи о вершинном покрытии в теории графов: найти непокрытое ребро и добавить обе его вершины к покрытию вершин, и так продолжать, пока все не будут покрыты. Ясно, что полученное покрытие может оказаться вдвое больше оптимального. Такое решение является аппроксимационным алгоритмом с постоянным коэффициентом 2.

NP-трудные проблемы сильно различаются по возможности аппроксимации. Некоторые, среди которых, например, задача об упаковке в контейнеры, могут быть аппроксимированы с любым коэффициентом, большим 1 (это семейство алгоритмов называют приближённой схемой полиномиального времени, или PTAS). Другие задачи невозможно аппроксимировать ни с каким постоянным коэффициентом, или даже с полиномиальным коэффициентом (если P ≠ NP), и среди таких задач находится задача о максимальной клике.

NP-трудные задачи часто можно выразить в терминах целочисленного программирования и решить в точности за экспоненциальное время. Многие экспоненциальные алгоритмы берут своё начало из приведения к задаче линейного программирования целочисленной задачи.

Не все аппроксимационные алгоритмы подходят для решения практических задач. Часто они используют в качестве подзадач ЦП/ЛП/полуопределённые задачи, сложные структуры данных или изощрённую технику программирования, что ведёт к сложности реализации. Некоторые аппроксимационные алгоритмы имеют неприемлемое время работы, хотя время и полиномиально (например, O(n2000)). Всё же изучение даже таких нереальных алгоритмов не преследует чисто теоретические цели, поскольку оно даёт возможность понять суть проблемы. Классический пример — начальный PTAS алгоритм для метрической задачи о коммивояжёре, принадлежащий Санджив Арора и имевший практически нереальное время работы. Однако, в течение года, Арора отточил идею до алгоритма, работающего за линейное время. Такие алгоритмы пригодны также для задач, в которых время работы и цена могут быть оправданы. К таким задачам относятся Вычислительная биология, Финансовая инженерия, Транспортное планирование и Управление запасами.

Другое ограничение связано с тем, что подход годится только для задач оптимизации, но не для «чистых» задач распознавания наподобие задачи выполнимости булевых формул, хотя часто бывает, что метод вполне применим для решения оптимизационных версий тех же задач, например, для задачи максимальной выполнимости булевых формул (Max SAT).


Невозможность аппроксимации является плодотворным полем исследований в области вычислительной сложности с тех пор, как в 1990 году Фейг (Feige), Голдвассер (Goldwasser), Ловаш (Lovasz), Сафра (Safra) и Шегеди (Szegedy) установили невозможность аппроксимации задачи нахождения максимального независимого множества вершин. Через год после того, как Арора (Arora) доказал теорему PCP, было доказано, что аппроксимационные алгоритмы Джонсона (Johnson) 1974-го года для задачи о выполнимости булевых формул, задачи о покрытии множества, задачи о независимом множестве и задача о хроматическом числе графа имеют оптимальный аппроксимационный коэффициент (в предположении, что P ≠ NP)

Гарантированная эффективность

Для некоторых аппроксимационных алгоритмов удаётся доказать некоторые свойства результата аппроксимации. Например, ρ-аппроксимационный алгоритм A — это по определению алгоритм, для которого отношение f(x) = ценность/затраты для решения аппроксимационной задачи A(x) для задачи x не превосходит (или не менее, в зависимости от ситуации) произведения коэффициента ρ на оптимальную величину ценности:

{ O P T ⩽ f ( x ) ⩽ ρ O P T , ρ > 1 ; ρ O P T ⩽ f ( x ) ⩽ O P T , ρ < 1. {displaystyle {egin{cases}mathrm {OPT} leqslant f(x)leqslant ho mathrm {OPT} , ho >1; ho mathrm {OPT} leqslant f(x)leqslant mathrm {OPT} , ho <1.end{cases}}}

Коэффициент ρ называется относительной гарантированной эффективностью.

Аппроксимационный алгоритм имеет абсолютную гарантированную эффективность или ограниченную ошибку c, если для любой задачи x выполняется

( O P T − c ) ⩽ f ( x ) ⩽ ( O P T + c ) . {displaystyle (mathrm {OPT} -c)leqslant f(x)leqslant (mathrm {OPT} +c).}

Подобным образом определяется гарантированная эффективность, R(x, y), решения y для задачи x

R ( x , y ) = max ( O P T f ( y ) , f ( y ) O P T ) , {displaystyle R(x,y)=max left({frac {mathrm {OPT} }{f(y)}},{frac {f(y)}{mathrm {OPT} }} ight),}

где f(y) — отношение ценность/затраты для решения y задачи x. Ясно, что гарантированная эффективность не меньше единицы и равна единице только в случае, когда y является оптимальным решением. Если алгоритм A гарантирует решение с максимальной эффективностью r(n), то говорят, что A является r(n)-аппроксимационным алгоритмом и имеет аппроксимационный коэффициент r(n).

Легко заметить, что в случае задачи минимизации оба определения гарантированной эффективности дают одно значение, в то время как для задачи максимизации r = ρ − 1 {displaystyle r= ho ^{-1}} .

Важное понятие относительной ошибки, связанной с задачами оптимизации, определяется в литературе по-разному: например, В. Канн определяет её как | O P T − f ( y ) | / O P T {displaystyle |mathrm {OPT} -f(y)|/mathrm {OPT} } , а Аузиелло и др. как | O P T − f ( y ) | / max { O P T , f ( y ) } {displaystyle |mathrm {OPT} -f(y)|/max{mathrm {OPT} ,f(y)}} .

Абсолютная гарантированная эффективность P A {displaystyle mathrm {P} _{A}} некоторого аппроксимационного алгоритма A определяется как

P A = inf { r ⩾ 1 ∣ R A ( x ) ⩽ r , ∀ x } . {displaystyle mathrm {P} _{A}=inf{rgeqslant 1mid R_{A}(x)leqslant r,forall x}.}

Здесь х обозначает задачу, а R A ( x ) {displaystyle R_{A}(x)} — это гарантированная эффективность A для x.

Таким образом, P A {displaystyle mathrm {P} _{A}} — это верхняя граница гарантированной эффективности r для всех возможных задач.

Подобным образом определяется асимптотическая эффективность R A ∞ {displaystyle R_{A}^{infty }} :

R A ∞ = inf { r ⩾ 1 ∣ ∃ n ∈ Z + , R A ( x ) ⩽ r , ∀ x , | x | ⩾ n } . {displaystyle R_{A}^{infty }=inf{rgeqslant 1mid exists nin mathbb {Z} ^{+},R_{A}(x)leqslant r,forall x,|x|geqslant n}.}

Техника разработки алгоритмов

На настоящее время существует несколько стандартных подходов к разработке аппроксимационного алгоритма. Среди них:

  • Жадный алгоритм.
  • Локальный поиск.
  • Перебор и динамическое программирование.
  • Решение ослабленной задачи выпуклого программирования с возможностью получения дробного решения. Затем решение преобразуется в подходящее решение путём округления. Популярными методами ослабления задачи являются:
  • Сведение к задаче линейного программирования.
  • Сведение к задаче полуопределённого программирования.
  • Определение для задачи некоторой простой метрики и решение задачи с этой метрикой.
  • Эпсилон-член

    В литературе коэффициент аппроксимации для задачи на максимум (или минимум) записывается как c − ϵ {displaystyle c-epsilon } (или c + ϵ {displaystyle c+epsilon } ) для некоторого числа c {displaystyle c} в том случае, когда существуют варианты алгоритма с коэффициентом аппроксимации c ∓ ϵ {displaystyle cmp epsilon } для любого ϵ > 0 {displaystyle epsilon >0} , но не для ϵ = 0 {displaystyle epsilon =0} . Пример такой аппроксимации — недостижимость коэффициента 7 / 8 для задачи MAX-3SAT.



    Имя:*
    E-Mail:
    Комментарий: