Все ли известные алгоритмы решения NP-полных задач конструктивны?

11

Существуют ли какие-либо известные алгоритмы, которые корректно выводят «да» для NP-полной задачи без неявной генерации сертификата?

Я понимаю, что легко превратить оракула выполнимости в искатель удовлетворяющих назначений: просто итерируйте по переменным, каждый раз запрашивая оракула выполнимости, чтобы решить соединение этой переменной с исходной задачей.

Но будет ли такая обертка когда-нибудь полезной? Все ли спутниковые решатели ищут в пространстве возможных заданий?

Или есть некоторые типы NP-полных задач (коммивояжер, сумма подмножеств и т. Д.), В которых решатель может, скажем, использовать математическую теорему, чтобы доказать, что решение должно существовать? Как сделать доказательство от противоречия?

user82928
источник

Ответы:

11

Насколько я понимаю, вы задаете два вопроса: (1) есть ли, например, алгоритмы SAT, которые более умны, чем грубая грубая сила, и (2) есть алгоритмы, которые просто дают ответ ДА ​​/ НЕТ при решении задачи, полной NP фактически не найдя решения. Я отвечу на оба вопроса в таком порядке.

(1) Совершенно возможно решить проблему без грубой силы, то есть без наивного опробования всех возможностей. Например, современные полные решатели SAT могут применять умные алгоритмы, которые выводят или доказывают, что определенные (частичные) назначения не могут привести к решению, поэтому они даже не рассматривают эту часть.

В более общем смысле даже NP-сложные задачи часто обнаруживают своего рода алгоритмическую опору, которая позволяет нам разрабатывать алгоритм быстрее, чем грубая сила. Область исследования - точные (экспоненциальные) алгоритмы . Такие алгоритмы занимают экспоненциальное время, но все же быстрее, чем наивные алгоритмы. Например, вы можете решить TSP примерно завремя, где - количество городов для посещения. Этот метод не будет масштабироваться до даже умеренных значений , но существует классический алгоритм динамического программирования благодаря Held & Karp . Для общих методов, см., Например, ветвь и граница .n n O ( 2 n n 2 )N!NNО(2NN2)

(2) Существуют «алгоритмы оракула» для NP-полных задач, которые просто выводят ДА / НЕТ без явного сертификата. Например, рассмотрим проблему -path:К

(Проблема ).К Учитывая граф и целое число , существует ли простой путь в на вершинах?k G kгКгК

Вышеуказанная проблема легко видна как NP-полная. алгоритм для задачи приведен в [1]. Сам алгоритм дает только ДА / НЕТ ответ на проблему, но мы можем использовать дополнительные приемы для построения самого фактического . В более общем смысле, при наличии такого «алгоритма оракула» можно использовать инструменты комбинаторного группового тестирования для извлечения самого свидетеля.kО*(2К)К


[1] Уильямс, Райан. «Поиск путей длины за времени». Письма обработки информации 109,6 (2009): 315-318. ссылка для издателя , PDFO ( 2 k )КО*(2К)

Юхо
источник
Отлично. Бумага k-path - это именно то, что я искал. Спасибо!
user82928