P
- это класс всех языков, которые могут быть вычислены за полиномиальное время детерминированной машиной Тьюринга.Современный компьютер очень похож на детерминированную машину Тьюринга, за исключением того, что машина Тьюринга по существу имеет бесконечную память.Это различие обычно игнорируется в практических целях.
NP
- это класс всех языков, которые могут быть вычислены за полиномиальное время с помощью не -детерминирующей токарной машины.Недетерминированная машина Тьюринга не соответствует ни одному реальному устройству.
Основной факт вычислительной сложности состоит в том, что NP
эквивалентен классу языков, проблемы проверки которых находятся в P
.На самом деле, NP
иногда определяется как этот класс;оба определения взаимозаменяемы, и определение проверки имеет прямое отношение к компьютерам, подобным детерминированным машинам Тьюринга, в реальном мире.
Таким образом, NP
- это класс проблем, которые можно проверить вpoly-time на «реальной» машине и разрешимый в poly-time на очень похожей теоретической машине.Таким образом, вопросы разрешимости и проверяемости связаны.
В настоящее время большинство ученых-компьютерщиков считают, что P
и NP
не эквивалентны;то есть существуют языки, вычисляемые в поли-времени недетерминированной машиной Тьюринга, но не детерминированной машиной Тьюринга, или, что то же самое, которые не могут быть решены в поли-времени детерминированной машиной Тьюринга, но чьи решения могут быть проверены в поли-временидетерминированной машиной Тьюринга.