♯P
В теории сложности вычислений класс сложности #P (произносится как «острый P» или иногда «число P» или «хэш P») представляет собой набор задач подсчета , связанных с проблемами решения в множестве NP . Более формально, #P — это класс функциональных задач вида «вычислить f ( x )», где f — количество принимающих путей недетерминированной машины Тьюринга, работающей за полиномиальное время . В отличие от большинства известных классов сложности, это не класс задач принятия решений , а класс функциональных задач . Наиболее сложные и репрезентативные задачи этого класса — #P-полные .
Отношение к проблемам принятия решений
Проблема принятия решения NP часто имеет вид: «Существуют ли какие-либо решения, удовлетворяющие определенным ограничениям?» Например:
- Существуют ли в списке целых чисел подмножества, сумма которых равна нулю? ( проблема с суммой подмножества )
- Существуют ли гамильтоновы циклы в данном графе со стоимостью меньше 100? ( задача коммивояжера )
- Существуют ли какие-либо назначения переменных, удовлетворяющие заданной формуле КНФ (конъюнктивной нормальной формы) ? ( булева проблема выполнимости или SAT)
- Имеет ли одномерный действительный многочлен положительные корни? ( нахождение корня )
Соответствующие задачи с функцией #P спрашивают «сколько», а не «есть ли они?». Например:
- Сколько подмножеств списка целых чисел в сумме дает ноль?
- Сколько гамильтоновых циклов в данном графе стоили меньше 100?
- Сколько назначений переменных удовлетворяют данной формуле CNF?
- Сколько корней вещественного одномерного многочлена являются положительными?
Связанные классы сложности [ править ]
Очевидно, что задача #P должна быть по крайней мере такой же сложной, как и соответствующая задача NP . Если подсчитать ответы легко, то должно быть легко и определить, есть ли ответы — просто подсчитайте их и посмотрите, больше ли число нуля. Некоторые из этих задач, такие как поиск корня , достаточно просты для решения FP , тогда как другие являются #P-полными .
Одним из следствий теоремы Тоды является то, что машина полиномиального времени с #P оракулом ( P #П ) может решить все проблемы в PH , всю полиномиальную иерархию . Фактически, машине полиномиального времени достаточно выполнить только один #P -запрос, чтобы решить любую задачу в PH . Это указывает на крайнюю трудность точного решения #P -полных задач.
Удивительно, но некоторые #P -задачи, которые считаются сложными, соответствуют простым (например, с линейным временем) P- задачам. Дополнительную информацию об этом см. в разделе #P-complete .
Ближайшим классом проблем принятия решений к #P является PP , который спрашивает, приемлемо ли большинство (более половины) путей вычислений. Это позволит найти самый значимый бит в ответе на задачу #P . Класс проблемы принятия решения ⊕P (произносится как «Четность-P») вместо этого запрашивает младший бит ответа #P .
Формальные определения [ править ]
#P формально определяется следующим образом:
- #P — набор всех функций такая, что существует недетерминированная машина Тьюринга с полиномиальным временем такой, что для всех , равно количеству принимающих филиалов в график вычислений на . [1]
#P также может быть эквивалентно определен в терминах проверяющего. Проблема решения находится в NP, если существует проверяемый за полиномиальное время сертификат для данного экземпляра проблемы, то есть NP запрашивает, существует ли доказательство принадлежности входных данных, правильность которого можно проверить за полиномиальное время. Класс #P запрашивает, сколько существует сертификатов для экземпляра проблемы, корректность которых можно проверить за полиномиальное время. [1] В этом контексте #P определяется следующим образом:
- #P — набор функций такой, что существует полином с полиномиальным временем и детерминированная машина Тьюринга , называемый верификатором, такой, что для каждого , . [2] (Другими словами, равен размеру набора, содержащего все сертификаты полиномиального размера).
История [ править ]
Класс сложности #P был впервые определен Лесли Валиантом в статье 1979 года о вычислении перманента квадратной матрицы , в которой он доказал, что перманент является #P-полным . [3]
Ларри Стокмейер доказал, что для каждой задачи #P существует рандомизированный алгоритм , использующий оракул для SAT, который в данном случае из и возвращает с высокой вероятностью число такой, что . [4] Время работы алгоритма является полиномиальным по и . Алгоритм основан на лемме об остаточном хеше .
См. также [ править ]
- Quantum_computing#Relation_to_computability_and_complexity_theory – Технология, использующая квантовую механику.
Ссылки [ править ]
- ^ Jump up to: Перейти обратно: а б Барак, Вооз (весна 2006 г.). «Сложность подсчета» (PDF) . Информатика 522: Сложность вычислений . Принстонский университет.
- ^ Арора, Санджив ; Барак, Вооз (2009). Вычислительная сложность: современный подход . Издательство Кембриджского университета. п. 344. ИСБН 978-0-521-42426-4 .
- ^ Лесли Г. Валиант (1979). «Сложность вычисления перманента» . Теоретическая информатика . 8 (2). Эльзевир : 189–201. дои : 10.1016/0304-3975(79)90044-6 .
- ^ Стокмейер, Ларри (ноябрь 1985 г.). «Об алгоритмах аппроксимации для #P» (PDF) . SIAM Journal по вычислительной технике . 14 (4): 849. дои : 10.1137/0214060 . Архивировано из оригинала (PDF) 28 октября 2009 г.