Чтобы дать вам суть доказательства (это несколько страниц усердной работы в «1001 * Компьютеры и интерактивность» Гэри и Джонсона ):
Любая вычислительная проблема может быть выражена как машина Тьюринга.
Можно выразить машину Тьюринга как логическую задачу, удовлетворяющую определенным ограничениям сложности.
Следовательно, если вы можете решить проблему логики за полиномиальное время, вы можете решить проблему машины Тьюринга за полиномиальное время.
Это (наряду с некоторыми другими соображениями) показывает, что если вы можете решить логическую задачу за полиномиальное время, вы можете решить любую проблему NP за полиномиальное время. Это определение NP-завершения, поэтому логическая задача является NP-полной и может использоваться в качестве основы для других задач.
Используемая логическая проблема называется Удовлетворенность (часто сокращается до SAT). Учитывая серию предложений вида (A или не-B или не-C) (предложения, состоящие из любого числа предложений и отрицаний предложений, связанных логическим или), существует ли присвоение истинностных значений предложениям, которое делает все пункты верны?
NP-полнота является четко определенным свойством. Единственная причина, по которой вы сомневаетесь в том, что проблема является NP-полной, заключается в том, что вы думали, что можете свести к ней еще одну NP-полную проблему, но пока не смогли найти удобную проблему или получить доказательство.
Вопрос не в том, существуют ли NP-полные проблемы или как доказать, что проблема NP-полна, а в том, что это значит. Никто еще не создал алгоритм за полиномиальное время для решения NP-полной задачи, и никто не доказал, что такой алгоритм не может существовать. Независимо от того, P = NP или нет, у нас, конечно, нет хороших алгоритмов для решения любой NP-полной задачи.
Это одна из проблем тысячелетия Фонда Клэйпула, так что если вы можете найти доказательство, которое ускользает от некоторых очень ярких людей в течение нескольких лет, для вас есть миллион долларов.