NP - это класс проблем, где вы можете проверить «да» экземпляры. Не дается никаких гарантий, что вы можете проверить «нет» экземпляров.
Класс задач, где вы можете проверить «нет» экземпляров за полиномиальное время, является co-NP . Любой язык в co-NP является дополнением к некоторому языку в NP , и наоборот. Примеры включают такие вещи, как не-3-окрашиваемость. Проблема, которую вы описываете: «Нет ли пути TSP с длиной не более ?» также в co-NP : если вы уберете двойное отрицание, экземпляр «нет» для этой проблемы будет экземпляром «да» для TSP, и мы можем проверить их за полиномиальное время.С
Есть некоторые проблемы, такие как целочисленная факторизация и любая проблема в P , которые, как мы знаем, существуют как в NP, так и в co-NP . (Спасибо user21820 за указание на это.)
Неизвестно, являются ли NP и co-NP одним и тем же набором проблем. Если они одинаковы, то мы можем проверить как «да», так и «нет» экземпляры TSP. Если они разные, то P≠NP , так как мы знаем, что Pзнак равноco-P (потому что мы можем просто отрицать ответ детерминированной машины, давая ответ на проблему дополнения).