Примечание: я еще не проверил ответ тщательно, и есть недостающие части, которые будут написаны, рассмотрите это первый проект.
Этот ответ предназначен главным образом для людей, которые не являются исследователями в теории сложности или смежных областях. Если вы теоретик сложности и прочитали ответ, пожалуйста, дайте мне знать, если вы заметили какую-либо проблему или у вас есть идея улучшить ответ.
Где можно найти заявленные решения P vs. NP
- Есть страница P-vs.-NP, на которой есть список таких претензий.
- Статьи, требующие решения вопроса, регулярно публикуются на arXiv .
Другие списки, как не решить P против NP
Лэнс Фортноу, так ты думаешь, что решил P verus NP , 2009
Скотт Ааронсон, « Восемь знаков». Утверждение P ≠ NP неверно , 2010
Страница Polymath для статьи Деолаликара , где в разделе дальнейших чтений есть хороший список ссылок на проблему.
Как не подойти к P против NP
Позвольте мне обсудить «как не подходить к P против NP» не в смысле идей, которые не будут работать, а в более общем смысле. P vs. NP - это легко сформулированная проблема (см. Также мой ответ здесь ):
NP = P: для каждой решаемой задачи с алгоритмом проверки полиномиального времени есть алгоритм полиномиального времени.
или эквивалентно
Для SAT есть алгоритм полиномиального времени.
SAT можно заменить любой другой NP-полной проблемой .
,
Часто люди упрощают и чрезмерно философствуют проблему и преувеличивают практическую значимость проблемы (как указано выше). Такие заявления часто предназначены для того, чтобы дать интуицию, но они никоим образом не заменяют фактическую математическую формулировку проблемы.
Теоретическая эффективность - это не то же самое, что осуществимость на практике.
Позвольте мне сначала с преувеличенными практическими последствиями.
I. Возможно, что P = NP, но это не помогает для любой проблемы на практике!
Скажем, например, что SAT находится в P, но самый быстрый алгоритм для его времени выполнения -
. Этот алгоритм не имеет практического применения.2264N65536+ 22128
II. Вполне возможно , что P NP и мы можем решать NP-полные задачи эффективно .≠
Скажем, например, что SAT не находится в P, но имеет алгоритм с временем выполнения .NЛ.Г.*Л.Г.*N
Чтобы получить входное значение, которое могло бы составить вы должны использовать больше электронов, чем считается во вселенной. Таким образом, показатель степени по сути .2Л.Г.*n > 62
Суть в том, что P - абстрактная простая модель эффективных вычислений, сложность в худшем случае - абстрактная простая модель оценки стоимости вычислений и т. Д. Все это абстракции, но на практике никто не будет рассматривать алгоритм как в (I) выше, как эффективный алгоритм на самом деле. P - хорошая абстрактная модель, у нее хорошие свойства, она облегчает технические проблемы и полезна. Однако, как и любая математическая абстракция, она скрывает детали, которые на практике нас могут волновать. Существуют различные, более изощренные модели, но чем сложнее становится модель, тем менее приятным будет спорить.
То , что люди заботятся о на практике для вычисления в ответ на проблему за исключением случаев , что они заботятся об использовании разумного количества ресурсов. Есть задачи, зависящие и должны быть приняты во внимание.
Попытка найти лучшие алгоритмы для практических примеров NP-сложных задач - интересное и достойное начинание. Существуют решающие SAT эвристические алгоритмы, которые используются в промышленности и могут решать практические случаи SAT с миллионами переменных. Существует даже международный конкурс SAT .
(Но есть также небольшие конкретные случаи, когда все эти алгоритмы терпят неудачу и терпят неудачу довольно сильно, мы можем фактически доказать, что все современные современные SAT-решатели занимают экспоненциальное время для решения простых примеров, таких как пропозициональный принцип Пигон-Холла .)
Имейте в виду, что правильность и время выполнения программ не могут быть получены только при запуске программы на экземплярах . Неважно, сколько экземпляров вы попробуете, ни одной суммы не хватит. Существует бесконечно много возможных входных данных, и вы должны показать правильность и эффективность (т. Е. Время выполнения является полиномиальной) программы для всех из них. Короче, вам нужно математическое доказательство правильности и эффективности. Если вы не знаете, что такое математическое доказательство, то вам следует сначала выучить некоторую базовую математику (прочитайте учебник по дискретной математике / комбинаторике / теории графов, это хорошая тема для изучения того, что считается математическим доказательством).
Также будьте осторожны с другими утверждениями о P против NP и последствиях его ответов. Такие претензии часто основаны на аналогичных упрощениях.
Теоретики сложности на самом деле не заботятся о ответе на P против NP!
Я немного преувеличил. Конечно, мы заботимся об ответе на P против NP. Но мы заботимся об этом в контексте. P vs. NP - наша главная проблема, но она не является конечной целью. Это легко сформулированная проблема, она включает в себя много фундаментальных идей, она полезна для объяснения вопросов, которые нас интересуют, для людей, которые не знакомы с этой темой. Но мы не ищем однозначного ответа Да / Нет на этот вопрос.
Мы стремимся лучше понять природу эффективных вычислений . Мы считаем, что решение вопроса придет с таким пониманием, и это реальная причина, по которой мы заботимся об этом. Это часть огромного объема исследований. Если вы хотите почувствовать вкус того, что у нас есть, посмотрите на хороший учебник по теории сложности, например, « Теория сложности: современный подход » Ароры и Барака ( черновая версия ).
Предположим, что кто-то приходит с зашифрованным полностью формальным доказательством P NP, и мы можем проверить его правильность с очень высокой степенью достоверности, выбрав и расшифровав несколько битов доказательства (см. Доказательство с нулевым знанием и теорема PCP ). , Таким образом, мы можем проверить утверждение с вероятностью ошибки меньше, чем метеор, поразивший наш дом, мы совершенно уверены, что доказательство верное и P = NP, но мы не знаем доказательства. Это не принесет нам много удовольствия или удовольствия. Само формальное доказательство также не будет таким удовлетворительным. То, что мы ищем, не является формальным доказательством, мы ищем понимание.≠
Короче говоря, с точки зрения теоретика сложности
P против NP - не головоломка с ответом Да / Нет. Мы ищем ответ P против NP, потому что мы думаем, что это поможет лучше понять природу эффективных вычислений. Ответ без серьезного продвижения в нашем понимании не очень интересен.
Было слишком много случаев, когда неспециалисты заявляли о решениях для P и NP, и эти претензии, как правило, страдают от проблем, которые они бы не сделали, если бы просто прочитали стандартный учебник по теории сложности.
Общие проблемы P = NP
Утверждения P = NP кажутся более распространенными. Я думаю, что следующее является наиболее распространенным типом. У кого-то есть идея, она пишет программу и несколько раз тестирует ее, думает, что это полиномиальное время, и правильно решает проблему NP-завершения. Как я объяснил выше, никакое количество испытаний не покажет P = NP. P = NP нуждается в математическом доказательстве , а не просто в программе, которая, кажется, решает NP-полную задачу за полиномиальное время.
Эти попытки обычно страдают от одной из двух проблем:
I. Алгоритм не совсем полиномиального времени.
II. алгоритм не решает все случаи правильно.
≠
[будет написано]
Как проверить , что ваш алгоритм действительно не реально работать
Вы не можете показать, что ваш алгоритм работает правильно, тестируя. Но вы можете показать, что он работает неправильно, протестировав! Итак, вот как вы можете убедиться, что ваш алгоритм неверен, если вы готовы выполнить какую-то работу.
Сначала напишите программу для преобразования экземпляров SAT (в стандартном формате CNF) в NP-сложную проблему, которую вы решаете. SAT является одной из наиболее изученных NP-трудных проблем, и переход от других проблем к SAT обычно прост. Во-вторых, возьмите примеры, с которыми борются современные SAT-решатели (например, возьмите примеры из соревнования SAT), и подайте их в свой алгоритм и посмотрите, как работает ваш алгоритм. Попробуйте известные сложные примеры, такие как пропозициональный принцип Pigeonhole (и не обманывайте, жестко кодируя их как особые случаи), криптографические примеры (такие как вызовы факторинга RSA ), случайные экземпляры k-SAT вблизи порога и т. Д.
10 н2
Как проверить вашу алгоритмическую идею P = NP не может работать
Если вы сделаете это, вы будете совершенно уверены, что ваш алгоритм не работает (если он работает лучше, чем современные SAT-решатели, тогда соревнуйтесь в следующем конкурсе, и многие люди будут заинтересованы в изучении вашего алгоритма и идей).
Теперь вы знаете, что это на самом деле не работает, но этого недостаточно. Ты хочешь знать почему,
причина, по которой мой алгоритм не работает, небольшая проблема, которую можно исправить, или есть фундаментальная причина, по которой он не может работать?
Иногда проблема с алгоритмом проста, и можно определить, что было концептуально неправильно. Лучший результат в том, что вы понимаете причину, по которой ваша идея не может работать. Часто это не так, ваша идея не работает, но вы не можете понять, почему. В этом случае имейте в виду:
понять, почему какая-то идея не может работать, может быть сложнее, чем решить P против NP!
Если вы сможете формализовать свою идею достаточно, вы сможете доказать ограничения конкретных идей (например, есть результаты, которые говорят, что определенные формализации жадного алгоритма не могут решить NP-полные проблемы). Тем не менее, это еще сложнее, и у вас мало шансов, если вы не читали стандартный учебник теории сложности.
Иногда даже нет четкой концептуальной идеи, почему алгоритм должен работать, то есть он основан на некоторой непонятной эвристике . Если у вас нет четкого концептуального представления о том, почему ваш алгоритм должен работать, то у вас не будет большого шанса понять, почему он не работает!
≠
≠
Вопрос 1: автор не знает определения P и NP или, что еще хуже, не понимает, что является математическим доказательством. Поскольку автору не хватает базовой математической подготовки, он не понимает, когда ему говорят, что он представляет, не является доказательством (например, шаги не следуют из предыдущих).
Проблема 2: автор путает «мы не знаем как» с «математической невозможностью». Например, они делают различные необоснованные предположения, и когда их спрашивают "почему это утверждение верно?" они отвечают «как это может быть ложным?». Одним из распространенных является предположение, что любая программа, решающая проблему, должна выполнять определенные шаги, например, она должна вычислять определенные промежуточные значения, потому что он не может придумать альтернативный способ решения проблемы.
[должен быть завершен]
≠
[будет написано]
≠
Если претензия не страдает от этих основных проблем, то отклонение становится более трудным. На первом уровне можно найти неверный шаг в аргументе. Типичный ответ автора заключается в том, что я могу это исправить, и это может продолжаться. Подобно решениям P = NP, часто очень трудно найти фундаментальную проблему с идеей, которая может показать, что она не работает, особенно когда сама идея является неформальной.
≠