Одна из причин того, что мы видим различные сложности аппроксимации для NP-полных задач, состоит в том, что необходимые условия для NP-полных представляют собой очень грубую меру сложности задачи. Возможно, вы знакомы с основным определением проблемы быть NP-полным:Π
- в НП, аΠ
- Для любой другой задачи в NP мы можем превратить экземпляр x of Ξ в экземпляр y of Π за полиномиальное время, так что y является экземпляром yes из Π тогда и только тогда, когда x является экземпляром yes из Ξ .ΞИксΞYΠYΠИксΞ
Рассмотрим условие 2: все, что требуется, это то, что мы можем взять и превратить его в некоторый y, который сохраняет «однобитный» ответ да / нет. Нет никаких условий, например, относительно размера свидетелей относительно «да» или «нет» (то есть размера решения в контексте оптимизации). Таким образом, единственная используемая мера - это общий размер входных данных, который лишь очень слабо влияет на размер решения. Так что это довольно «легко» превратить £ , в П .ИксYΞΠ
Мы можем увидеть разницу в различных NP-полных задачах, взглянув на сложность некоторых простых алгоритмов. -Цвет имеет грубую силу O ( k n ) (где n - размер ввода). Для k- доминирующего множества подход грубой силы принимает O ( n k ) . По сути, это лучшие точные алгоритмы, которые у нас есть. Однако k- Vertex Cover имеет очень простое значение O ( 2 k n c ).КO ( кN)NКO ( nК)КO ( 2КNс)Алгоритм (выберите ребро, ветвь, в которую нужно включить конечную точку, отметьте все покрытые, продолжайте движение, пока у вас не останется немаркированных ребер или пока вы не достигнете своего бюджета и bactrack). При многократном сокращении за полиномиальное время (сокращение Карпа, то есть то, что мы делаем в условии 2 выше), эти проблемы эквивалентны.К
Когда мы начинаем приближаться к сложности с помощью чуть более деликатных инструментов (сложности аппроксимации, параметризованной сложности, любых других, о которых я не могу думать), используемые нами сокращения становятся более строгими или, скорее, более чувствительными к структуре решения, и различия начинают появляться; Покрытие Vertex (как упомянул Ювал) имеет простую 2-аппроксимацию (но не имеет FPTAS, если не разваливаются некоторые классы сложности), k- Доминирующий Set имеет ( 1 + log n ) -приближающий алгоритм (но нет ( c log n ) -приближение для некоторого c > 0КК( 1 + журналн )( c журналн )с > 0), и приближение не имеет никакого смысла для прямой версии -Coloring.К