Равенство классов P и NP

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
Задачи тысячелетия
Равенство классов P и NP
Гипотеза Ходжа
Гипотеза Пуанкаре (решена)
Гипотеза Римана
Решение уравнений
квантовой теории
Янга — Миллса
Существование и гладкость 
решений уравнений
Навье — Стокса
Гипотеза
Бёрча — Свиннертон-Дайера

Вопрос о равенстве классов сложности P и NP (в русских источниках также известный как проблема перебора[1][2]) — это одна из центральных открытых проблем теории алгоритмов уже более трёх десятилетий. Если на него будет дан утвердительный ответ, это будет означать, что теоретически возможно решать многие сложные задачи существенно быстрее, чем сейчас.

Отношения между классами P и NP рассматриваются в разделе теории алгоритмов, который называется теорией вычислительной сложности. Она изучает ресурсы, необходимые для решения некоторой задачи. Наиболее общие ресурсы — это время (сколько нужно сделать шагов) и память (сколько памяти потребуется для решения задачи).

Проблема равенства классов P и NP является одной из семи задач тысячелетия, за решение которой Математический институт Клэя назначил премию в миллион долларов США.

Формулировка[править | править вики-текст]

Диаграмма классов сложности при условии PNP.

Нестрого говоря, проблема равенства P = NP состоит в следующем: если положительный ответ на какой-то вопрос можно довольно быстро проверить (за полиномиальное время), то правда ли, что ответ на этот вопрос можно довольно быстро найти (также за полиномиальное время и используя полиномиальную память)? Другими словами, действительно ли решение задачи проверить не легче, чем его отыскать?[3]

Например, верно ли, что среди чисел {−2, −3, 15, 14, 7, −10, …} есть такие, что их сумма равна 0 (задача о суммах подмножеств)? Ответ — да, потому что −2 −3 + 15 −10 = 0 легко проверяется несколькими сложениями (информация, необходимая для проверки положительного ответа, называется сертификатом). Следует ли отсюда, что так же легко подобрать эти числа? Проверить сертификат так же легко, как найти его? Кажется, что подобрать числа сложнее, но это не доказано.

Из определения классов P и NP сразу вытекает следствие: . Однако до сих пор ничего не известно о строгости этого включения, то есть, существует ли задача, лежащая в NP, но не лежащая в P. Если такой задачи не существует, то все задачи, принадлежащие классу NP, можно будет решать за полиномиальное время, что сулит огромную выгоду в скорости вычислений. Сейчас самые сложные задачи из класса NP (так называемые NP-полные задачи) можно решить за экспоненциальное время, что считается неприемлемым с практической точки зрения.

История[править | править вики-текст]

Впервые вопрос о равенстве классов был поставлен Стивеном Куком в 1971 году[4] и, независимо, Леонидом Левиным в 1973 году[5].

В настоящее время большинство математиков считают, что эти классы не равны. Согласно опросу, проведённому в 2002 году среди 100 учёных,[6] 61 человек считает, что ответ — «не равны», 9 — «равны», 22 затруднились ответить и 8 считают, что гипотеза не выводима из текущей системы аксиом и, таким образом, не может быть доказана или опровергнута.

Попытки доказательства[править | править вики-текст]

  • 6 августа 2010 года[7] сотрудник исследовательской лаборатории Hewlett-Packard в Пало-Альто Винэй Деолаликар (англ.) разослал некоторым учёным на проверку своё доказательство неравенства P и NP.[8] Стивен Кук назвал его препринт «относительно серьёзной попыткой решения проблемы P vs NP».[9] Однако уже в том же месяце были найдены недостатки в доказательстве. Деолаликар заявил, что в следующей версии доказательства он постарается учесть все замечания.[7][10] На викистранице «Deolalikar P vs NP paper», связанной с проектом Polymath, приводится критический анализ, собраны предполагаемые ошибки и некоторые опечатки в работе Деолаликара.[11] Там же можно проследить за онлайн-реакцией на предложенное доказательство.
  • Более полный список публикаций, авторов которые заявляли, что доказали или опровергли равенство классов P и NP, можно найти на странице Герхарда Воегинджера (англ.) из технологического университета Эйндховена, Нидерланды.[12]

Защита, предполагающая отсутствие равенства классов P и NP[править | править вики-текст]

Любая криптосистема с открытым ключом базируется на предположении существования односторонних функций и/или крайней затратности решения некоторой задачи (например, для алгоритма RSA это разложение на множители очень больших чисел).

Для защиты компьютерных систем от злоупотребления услугами запрашивающей стороне предлагается решить задачу, на поиск решения которой тратится достаточно много времени, а результат легко и быстро проверяется обслуживающей стороной. Примером такой защиты от спама может служить система Hashcash[13], которая использует хеш частичной инверсии при отправке электронной почты.

В системе Биткойн требуется, чтобы получаемая хеш-сумма была меньше специального параметра. Для поиска нужной хеш-суммы требуется её многократный пересчёт с перебором произвольных значений дополнительного параметра. На поиск одной хеш-суммы все компьютеры системы тратят примерно 10 минут, что регулирует скорость эмиссии новых биткойнов. Для проверки требуется лишь однократное вычисление хеша.

Отображение в искусстве[править | править вики-текст]

  • Во второй серии второго сезона сериала «Элементарно» описываются потенциальные проблемы, которые могут возникнуть в случае успешного нахождения решения равенства классов P и NP для прикладных случаев.
  • Во второй серии первого сезона сериала «Числа» один из главных героев пытался решить эту задачу.
  • В сериале «Футурама» можно заметить папку с заголовком «P=NP».
  • В сериале «След» (серия 1358) расследуется убийство профессора, пытавшегося решить проблему равенства классов P и PN.
  • В компьютерной игре Minecraft в главном меню, иногда случайно появляется надпись: "NP is not in P"[14].

См. также[править | править вики-текст]

Примечания[править | править вики-текст]

Литература[править | править вики-текст]

Ссылки[править | править вики-текст]