Введение
В теории вычислительной сложности, дополнение к задаче принятия решения — это задача принятия решения, полученная путем обращения ответов "да" и "нет". Эквивалентно, если мы определим задачи принятия решения как множества конечных строк, то дополнение этого множества относительно некоторой фиксированной области определения является его задачей-дополнением. Например, одна важная задача — определение, является ли число простым. Ее дополнение — определение, является ли число составным (число, которое не является простым). Здесь область определения дополнения — множество всех целых чисел, больших единицы. Существует редукция Тьюринга от любой задачи к ее задаче-дополнению. Операция дополнения является инволюцией, то есть она "отменяет сама себя", или дополнение дополнения — это исходная задача. Можно обобщить это на дополнение класса сложности, называемое классом-дополнением, которое представляет собой множество дополнений всех задач в классе. Если класс называется C, его дополнение обычно обозначается как co C. Следует отметить, что это не дополнение самого класса сложности как множества задач, которое содержало бы гораздо больше задач. Класс называется замкнутым относительно дополнения, если дополнение любой задачи в классе также принадлежит этому классу. Поскольку существует редукция Тьюринга от любой задачи к ее дополнению, любой класс, замкнутый относительно редукций Тьюринга, замкнут относительно дополнения. Любой класс, замкнутый относительно дополнения, равен своему классу-дополнению. Однако при использовании многих редукций один-ко-одному многие важные классы, особенно NP, предположительно различны своим классам-дополнениям (хотя это не доказано). Замыкание любого класса сложности относительно редукций Тьюринга является надмножеством этого класса, замкнутым относительно дополнения. Замыкание относительно дополнения — наименьший такой класс. Если класс пересекается со своим дополнением, мы получаем (возможно, пустое) подмножество, замкнутое относительно дополнения. Каждый детерминированный класс сложности (DSPACE(f(n)), DTIME(f(n)) для всех f(n)) замкнут относительно дополнения, поскольку можно просто добавить последний шаг к алгоритму, который инвертирует ответ. Это не работает для недетерминированных классов сложности, поскольку если существуют как пути вычисления, которые принимают, так и пути, которые отклоняют, и все пути инвертируют свой ответ, все равно будут пути, которые принимают, и пути, которые отклоняют, — следовательно, машина принимает в обоих случаях. Аналогично, вероятностные классы, такие как BPP, ZPP, BQP или PP, которые определены симметрично относительно своих случаев "да" и "нет", замкнуты относительно дополнения. В отличие от этого, классы, такие как RP и co RP, определяют свои вероятности с односторонней ошибкой и поэтому не являются (в настоящее время известно) замкнутыми относительно дополнения. Некоторые из самых удивительных результатов сложности, полученных на сегодняшний день, показали, что классы сложности NL и SL на самом деле замкнуты относительно дополнения, тогда как ранее широко считалось, что это не так (см. теорему Иммермана — Селепчени). Последнее стало менее удивительным, теперь, когда мы знаем, что SL равен L, который является детерминированным классом. Каждый класс, который является низким для себя, замкнут относительно дополнения.