В теории вычислительной сложности полиномиальное сокращение — это метод решения одной проблемы с помощью другой. Он показывает, что если существует гипотетическая подпрограмма, решающая вторую проблему, то первую проблему можно решить, преобразовав или сократив ее до входных данных для второй проблемы и вызвав подпрограмму один или несколько раз. Если и время, необходимое для преобразования первой проблемы во вторую, и количество вызовов подпрограммы, являются полиномиальными , то первая проблема полиномиально сводится ко второй. [1]
Полиномиальное сокращение времени доказывает, что первая проблема не сложнее второй, потому что всякий раз, когда существует эффективный алгоритм для второй проблемы, он существует и для первой проблемы. Противоположным образом , если не существует эффективного алгоритма для первой проблемы, то не существует и для второй. [1] Полиномиальное сокращение времени часто используется в теории сложности для определения как классов сложности , так и полных задач для этих классов.
Три наиболее распространенных типа полиномиальной редукции, от наиболее к наименее ограничительным, — это полиномиальная редукции многих-единиц , редукции таблиц истинности и редукции Тьюринга . Наиболее часто используемые из них — это редукции многих-единиц, и в некоторых случаях фраза «полиномиальная редукции» может использоваться для обозначения полиномиальной редукции многих-единиц. [2] Наиболее общими редукциями являются редукции Тьюринга, а наиболее ограничительными — редукции многих-единиц с редукциями таблиц истинности, занимающими пространство между ними. [3]
Полиномиальное время многоединичного сведения задачи A к задаче B (обе обычно должны быть задачами принятия решений ) — это полиномиальное время алгоритма преобразования входных данных задачи A во входные данные задачи B , так что преобразованная задача имеет тот же выход, что и исходная задача. Экземпляр x задачи A может быть решен путем применения этого преобразования для создания экземпляра y задачи B , предоставления y в качестве входных данных алгоритму для задачи B и возврата его выходных данных. Полиномиальные многоединичные сведения также могут быть известны как полиномиальные преобразования или сокращения Карпа , названные в честь Ричарда Карпа . Сведение этого типа обозначается или . [4] [1]
Сведение таблицы истинности за полиномиальное время от задачи A к задаче B (обе задачи принятия решений) — это алгоритм полиномиального времени для преобразования входных данных для задачи A в фиксированное количество входных данных для задачи B , так что выходные данные для исходной задачи могут быть выражены как функция выходных данных для B. Функция, которая отображает выходные данные для B в выходные данные для A, должна быть одинаковой для всех входных данных, чтобы ее можно было выразить таблицей истинности . Сведение этого типа может быть обозначено выражением . [5]
Сведение Тьюринга за полиномиальное время от задачи A к задаче B — это алгоритм , который решает задачу A, используя полиномиальное число вызовов подпрограммы для задачи B и полиномиальное время вне этих вызовов подпрограммы. Сведение Тьюринга за полиномиальное время также известно как сведение Кука , названное в честь Стивена Кука . Сведение этого типа может быть обозначено выражением . [4] Сведение многих-единиц можно рассматривать как ограниченные варианты сведений Тьюринга, где число вызовов подпрограммы для задачи B равно ровно одному, а возвращаемое сведением значение совпадает со значением, возвращаемым подпрограммой.
Полная задача для заданного класса сложности C и редукции ≤ — это задача P , которая принадлежит C , такая, что каждая задача A в C имеет редукцию A ≤ P. Например, задача является NP -полной, если она принадлежит NP , и все задачи в NP имеют к ней редукции типа «многие-один» за полиномиальное время. Можно доказать, что задача, которая принадлежит NP, является NP -полной, найдя к ней одну редукцию типа «многие-один» за полиномиальное время из известной NP -полной задачи. [6] Редукции типа «многие-один» за полиномиальное время использовались для определения полных задач для других классов сложности, включая языки PSPACE -полные и языки EXPTIME -полные . [7]
Каждая задача принятия решений в P (класс задач принятия решений с полиномиальным временем) может быть сведена к любой другой нетривиальной задаче принятия решений (где нетривиальность означает, что не каждый вход имеет тот же выход), с помощью многоединичного сокращения с полиномиальным временем. Чтобы преобразовать экземпляр задачи A в B , решите A за полиномиальное время, а затем используйте решение для выбора одного из двух экземпляров задачи B с разными ответами. Следовательно, для классов сложности в P, таких как L , NL , NC и самого P , сокращения с полиномиальным временем не могут использоваться для определения полных языков: если бы они использовались таким образом, каждая нетривиальная задача в P была бы полной. Вместо этого, более слабые сокращения, такие как сокращения логарифмического пространства или сокращения NC , используются для определения классов полных задач для этих классов, таких как P -полные задачи. [8]
Определения классов сложности NP , PSPACE и EXPTIME не включают редукции: редукции входят в их изучение только при определении полных языков для этих классов. Однако в некоторых случаях класс сложности может быть определен посредством редукций. Если C — это любая задача принятия решений , то можно определить класс сложности C, состоящий из языков A , для которых . В этом случае C автоматически будет полным для C , но C может иметь и другие полные задачи.
Примером этого является класс сложности, определенный из экзистенциальной теории вещественных чисел , вычислительная задача, которая, как известно, является NP -трудной и в PSPACE , но не является полной для NP , PSPACE или любого языка в полиномиальной иерархии . — это набор задач, имеющих полиномиальное время сведения ко многим единицам до экзистенциальной теории вещественных чисел; в нем есть несколько других полных задач, таких как определение прямолинейного числа пересечений неориентированного графа . Каждая задача в наследует свойство принадлежности к PSPACE , и каждая -полная задача является NP -трудной. [9]
Аналогично, класс сложности GI состоит из задач, которые можно свести к задаче изоморфизма графов . Поскольку известно, что изоморфизм графов принадлежит как NP , так и co- AM , то же самое верно для каждой задачи в этом классе. Задача является GI -полной, если она является полной для этого класса; сама задача изоморфизма графов является GI -полной, как и несколько других связанных задач. [10]