В теории вычислительной сложности P , также известный как PTIME или DTIME ( n O(1) ), является фундаментальным классом сложности . Он содержит все проблемы принятия решений , которые могут быть решены детерминированной машиной Тьюринга с использованием полиномиального количества времени вычислений или полиномиального времени .
Тезис Кобэма гласит, что P — это класс вычислительных задач, которые «эффективно решаемы» или « обрабатываемы ». Это неточно: на практике некоторые задачи, о которых неизвестно, что они находятся в P, имеют практические решения, а некоторые, которые находятся в P, — нет, но это полезное эмпирическое правило .
Язык L принадлежит P тогда и только тогда, когда существует детерминированная машина Тьюринга M , такая что
P также можно рассматривать как однородное семейство булевых схем . Язык L принадлежит P тогда и только тогда, когда существует однородное семейство булевых схем с полиномиальным временем , такое, что
Определение схемы можно ослабить, используя только семейство однородных логпространств, не меняя класс сложности.
Известно, что P содержит множество естественных проблем, включая версии решений линейного программирования и нахождение максимального паросочетания . В 2002 году было показано, что проблема определения, является ли число простым, лежит в P. [1] Соответствующий класс функциональных задач — FP .
Несколько естественных проблем являются полными для P, включая st -связность (или достижимость ) на чередующихся графах. [2] Статья о P-полных проблемах перечисляет другие соответствующие проблемы в P.
Обобщением P является NP , который является классом задач принятия решений , разрешимых недетерминированной машиной Тьюринга , которая работает за полиномиальное время . Эквивалентно, это класс задач принятия решений, где каждый экземпляр «да» имеет сертификат полиномиального размера, и сертификаты могут быть проверены полиномиальной детерминированной машиной Тьюринга. Класс задач, для которых это верно для экземпляров «нет», называется co-NP . P тривиально является подмножеством NP и co-NP; большинство экспертов считают, что это собственное подмножество, [3] хотя это убеждение ( гипотеза) остается недоказанным . Другая открытая проблема заключается в том, является ли NP = co-NP; поскольку P = co-P, [4] отрицательный ответ будет подразумевать .
Также известно, что P не меньше L , класса задач, разрешимых в логарифмическом объеме памяти . Решатель, использующий память, не может использовать больше времени, поскольку это общее число возможных конфигураций; таким образом, L является подмножеством P. Другая важная проблема заключается в том, L = P. Мы знаем, что P = AL, множество задач, разрешимых в логарифмической памяти с помощью чередующихся машин Тьюринга . Также известно, что P не больше PSPACE , класса задач, разрешимых в полиномиальном пространстве. Опять же, является ли P = PSPACE открытой проблемой. Подводя итог:
Здесь EXPTIME — класс задач, решаемых за экспоненциальное время. Из всех классов, показанных выше, известны только два строгих включения:
Наиболее сложными задачами в P являются P-полные задачи.
Другое обобщение P — P/poly , или неравномерное полиномиальное время. Если проблема находится в P/poly, то ее можно решить за детерминированное полиномиальное время при условии, что задана строка рекомендаций , зависящая только от длины входных данных. Однако, в отличие от NP, машине полиномиального времени не нужно обнаруживать мошеннические строки рекомендаций; она не является верификатором. P/poly — это большой класс, содержащий почти все практические проблемы, включая все BPP . Если он содержит NP, то полиномиальная иерархия схлопывается до второго уровня. С другой стороны, он также содержит некоторые непрактичные проблемы, включая некоторые неразрешимые проблемы, такие как унарная версия любой неразрешимой проблемы.
В 1999 году Джин-Йи Кай и Д. Сивакумар, основываясь на работе Мицунори Огихары, показали, что если существует разреженный язык, который является P-полным, то L = P. [5]
P содержится в BQP ; неизвестно, является ли это содержание строгим.
Полиномиальные алгоритмы замкнуты относительно композиции. Интуитивно это означает, что если написать функцию, которая является полиномиальной по времени, предполагая, что вызовы функций являются постоянными по времени, и если эти вызываемые функции сами требуют полиномиального времени, то весь алгоритм занимает полиномиальное время. Одним из следствий этого является то, что P является низким для себя. Это также одна из главных причин, по которой P считается машинно-независимым классом; любая машинная «фича», такая как случайный доступ , которая может быть смоделирована за полиномиальное время, может быть просто скомпонована с основным полиномиальным алгоритмом, чтобы свести его к полиномиальному алгоритму на более простой машине.
Языки в P также замкнуты относительно обращения, пересечения , объединения , конкатенации , замыкания Клини , обратного гомоморфизма и дополнения . [6]
Известно, что некоторые проблемы разрешимы за полиномиальное время, но не известен конкретный алгоритм для их решения. Например, теорема Робертсона–Сеймура гарантирует, что существует конечный список запрещенных миноров , который характеризует (например) множество графов, которые могут быть вложены в тор; более того, Робертсон и Сеймур показали, что существует алгоритм O( n 3 ) для определения того, имеет ли граф заданный граф в качестве минора. Это дает неконструктивное доказательство того, что существует алгоритм полиномиального времени для определения того, может ли заданный граф быть вложен в тор, несмотря на то, что не известен конкретный алгоритм для этой задачи.
В дескриптивной сложности P можно описать как проблемы, выражаемые в FO(LFP) , логике первого порядка с добавленным к ней оператором наименьшей фиксированной точки , на упорядоченных структурах. В учебнике Иммермана 1999 года по дескриптивной сложности [7] Иммерман приписывает этот результат Варди [8] и Иммерману. [9]
В 2001 году было опубликовано, что PTIME соответствует (положительным) грамматикам конкатенации диапазонов . [10]
P также может быть определен как класс алгоритмической сложности для задач, которые не являются задачами принятия решений [11] (хотя, например, нахождение решения для экземпляра 2-выполнимости за полиномиальное время автоматически дает полиномиальный алгоритм для соответствующей задачи принятия решений). В этом случае P не является подмножеством NP, но P∩DEC является, где DEC — класс задач принятия решений.
Козен [12] утверждает, что Кобэму и Эдмондсу «обычно приписывают изобретение понятия полиномиального времени», хотя Рабин также изобрел это понятие независимо и примерно в то же время (статья Рабина [13] была в трудах конференции 1966 года 1967 года, в то время как статья Кобэма [14] была в трудах конференции 1964 года 1965 года, а статья Эдмондса [15] была опубликована в журнале в 1965 году, хотя Рабин не упоминает ни одну из них и, по-видимому, не знал о них). Кобэм изобрел класс как надежный способ характеристики эффективных алгоритмов, что привело к тезису Кобэма . Однако Х. К. Поклингтон в своей статье 1910 года [16] [17] проанализировал два алгоритма решения квадратных сравнений и заметил, что один из них требует времени, «пропорционального степени логарифма модуля», и сравнил его с алгоритмом, требующим времени, пропорционального «самому модулю или его квадратному корню», тем самым явно проводя различие между алгоритмом, который работает за полиномиальное время, и алгоритмом, который работает за (умеренно) экспоненциальное время.