Открыть сервис

Сводимость по Карпу

Сводимость по Карпу (также известная как «многозначная сводимость» или «полиномиальная сводимость по Карпу») — это понятие в теории алгоритмов и теории сложности вычислений, определяющее отношение между двумя задачами разрешения. Задача A сводится по Карпу к задаче B, если существует детерминированная машина Тьюринга с полиномиальным временем работы, которая преобразует любой вход задачи A во вход задачи B таким образом, что ответы на оба входа совпадают.

Определение

Формально, задача A сводится по Карпу к задаче B (обозначается A ≤p B), если существует функция f, вычислимая за полиномиальное время, такая что для любого слова x:

  • x ∈ A тогда и только тогда, когда f(x) ∈ B.

Функция f называется сводящей функцией. Ключевое требование — время вычисления f ограничено полиномом от длины входа |x|.

Сводимость по Карпу была предложена американским учёным Ричардом Карпом в 1972 году в его знаменитой работе «Reducibility Among Combinatorial Problems». Это понятие стало развитием идей Стивена Кука, который годом ранее ввёл понятие NP-полноты, используя более слабую сводимость по Куку (полиномиальную сводимость по Тьюрингу).

Свойства

Сводимость по Карпу обладает следующими важными свойствами:

  • Рефлексивность: любая задача сводима к самой себе (f — тождественная функция).
  • Транзитивность: если A ≤p B и B ≤p C, то A ≤p C.
  • Замкнутость классов: если A ≤p B и B ∈ P, то A ∈ P; если A ≤p B и B ∈ NP, то A ∈ NP.

Отношение ≤p задаёт на множестве задач предпорядок. Задачи, сводимые друг к другу в обе стороны, называются эквивалентными по Карпу.

Отличие от сводимости по Куку

Сводимость по Куку (полиномиальная сводимость по Тьюрингу) позволяет задавать задаче B произвольное число вопросов, причём каждый следующий вопрос может зависеть от предыдущих ответов. Сводимость по Карпу является частным случаем сводимости по Куку: она допускает только один вопрос к B, причём ответ на него должен совпадать с ответом на исходный вход. Сводимость по Карпу строго сильнее: если A ≤p B, то A сводима по Куку к B, но обратное не всегда верно.

Роль в теории NP-полноты

Сводимость по Карпу является стандартным инструментом для доказательства NP-полноты задач. Задача называется NP-трудной, если к ней сводится по Карпу любая задача из класса NP. Задача называется NP-полной, если она одновременно принадлежит классу NP и является NP-трудной.

Для доказательства NP-полноты новой задачи C используется следующий приём: берётся известная NP-полная задача (например, задача выполнимости булевых формул SAT), строится полиномиальная сводимость SAT ≤p C, и показывается, что C ∈ NP. После этого C объявляется NP-полной.

В своей работе 1972 года Карп представил список из 21 комбинаторной задачи (включая задачу о клике, задачу о вершинном покрытии, задачу о гамильтоновом цикле, задачу о сумме подмножества и другие), для которых он построил цепочки сводимостей, доказав их NP-полноту.

Примеры сводимостей

Классическим примером является сведение задачи о выполнимости булевой формулы (SAT) к задаче о 3-выполнимости (3-SAT). Каждая формула преобразуется в эквивалентную 3-КНФ-формулу за полиномиальное время, что доказывает NP-полноту 3-SAT.

Другой пример — сведение задачи о 3-выполнимости к задаче о клике. По формуле в 3-КНФ строится граф, в котором клика размера, равного числу дизъюнктов, существует тогда и только тогда, когда формула выполнима.

Значение и критика

Сводимость по Карпу стала основным инструментом классификации вычислительных задач. Она позволяет устанавливать относительную сложность задач без точного знания их абсолютной сложности. Однако сводимость по Карпу чувствительна к деталям кодирования входных данных: изменение кодировки может повлиять на существование полиномиальной сводимости. Кроме того, для некоторых задач (например, задач оптимизации) применяются более специализированные виды сводимостей, такие как сводимость, сохраняющая приближение.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →