Если P = NP, можем ли мы получить доказательства гипотезы Гольдбаха и т. Д.?

35

Это наивный вопрос, из моего опыта; заранее извиняюсь.

Гипотеза Гольдбаха и многие другие нерешенные вопросы математики могут быть записаны в виде кратких формул в исчислении предикатов. Например, статья Кука "Могут ли компьютеры регулярно находить математические доказательства?" формулирует эту гипотезу как

n[(n>22|n)rs(P(r)P(s)n=r+s)]

Если мы ограничим внимание полиномиально длинными доказательствами, то теоремы с такими доказательствами находятся в NP. Поэтому, если P = NP, мы могли бы определить, является ли, например, гипотеза Гольдбаха истинной в полиномиальное время.

Мой вопрос таков: сможем ли мы показать доказательство за полиномиальное время?

Редактировать . Согласно комментариям Питера Шора и Каве, я должен был квалифицировать свое утверждение, что мы могли бы определить, верна ли гипотеза Гольдбаха, если это действительно одна из теорем с коротким доказательством. Что, конечно, мы не знаем!

Джозеф О'Рурк
источник
8
Во-первых, чтобы представить краткое (<1000 страниц?) Доказательство гипотезы Гольдбаха, должно быть краткое доказательство. P = NP не имеет к этому никакого отношения.
Питер Шор
4
@Suresh, @Kaveh: Вы, кажется, ошибаетесь. Здесь у нас есть конкретный пример проблемы поиска NP. Уместным здесь является квантификатор - это существование доказательства (в подходящей формальной системе) теоремы.
Кристофер Арнсфельт Хансен
2
Другое замечание заключается в том, что на самом деле мы можем записать алгоритм, который, если P = NP, найдет доказательство для данного утверждения, если оно существует за многочлен времени по длине оператора и длине кратчайшего доказательства. (этот многочлен является границей, которая выполняется для всех теорем), однако это будет «астрономический» алгоритм.
Кристофер Арнсфельт Хансен
4
@Joe: нет, я могу написать алгоритм прямо сейчас! (Даже не зная, если P = NP). Идея состоит в том, что известно как Универсальный поиск Левина.
Кристоффер Арнсфельт Хансен
4
@Kristoffer: Круто! Не знал о ЛС. Я вижу, что у Маркуса Хаттера есть своего рода улучшение в LS: «Самый быстрый и самый короткий алгоритм для всех четко определенных задач». Международный журнал основ компьютерных наук, 13 (3): 431-443, 2002.
Джозеф О'Рурк

Ответы:

27

Верно!

Если P = NP, мы не только можем решить, существует ли доказательство длины n для гипотезы Гольдбаха (или любого другого математического утверждения), но мы также можем найти его эффективно!

Зачем? Потому что мы можем спросить: есть ли доказательство, обусловленное первым битным существом ..., тогда, есть ли доказательство, обусловленное первым двоичным существом ..., и так далее ...

А как ты узнал? Вы просто попробуете все возможности в порядке возрастания. Когда мы делаем шаг в i-й возможности, мы также пытаемся сделать шаг в каждой из возможностей 1 .. (i-1).

Дана Мошковиц
источник
3
Разве это не универсальный алгоритм поиска Левина?
Мухаммед Аль-Туркистани
2
@turkistany: да, это так!
Дана Мошковиц
25

Дана ответила на вопрос. Но вот некоторые комментарии с практической стороны.

Обратите внимание, что неразрешимо проверить, доказуемо ли данное предложение в ZFC. не имеет для этого никакого значения. P = N P (фактически P = c o N P ) означает, что легко найти доказательства для высказывательных тавтологий , а не предложений первого порядка, таких как GC.P=NPP=NPP=coNP

Это чтобы проверить, есть ли доказательство данного предложения данной длины l (в унарном виде) в фиксированной теории (например, ZFC). Так что, если P = N P , то есть алгоритм polytime, чтобы проверить это. Принятие l как некоторого фиксированного многочлена в длине предложения приведет к алгоритму polytime.NPlP=NPl

Практически (это упоминается Годелем в его знаменитом письме фон Нейману): если , то существует алгоритм с полиномиальным временем, который дает предложение первого порядка и l (в унарном), алгоритм может найти, если предложение имеет размер L доказательство в ZFC. Идея Годеля заключалась в том, что в этом случае, если эквивалентность P = N P действительно выполнима (т. Е. Алгоритм - это не просто P, а, скажем, D T i m e ( n 2 )P=NPllP=NPPDTime(n2)), тогда можно взять этот алгоритм и запустить его, чтобы проверить доказательства возможной, но очень большой длины, которая будет больше, чем любое доказательство, которое когда-либо сможет придумать любой человек, и если алгоритм не находит ответа, то Приговор практически невозможно доказать. Уловка, о которой упоминала Дана, также сработает, чтобы найти доказательство.

Для практических средств:

  1. P=NPDTime(10000n10000)

  2. оно найдет доказательство только в том случае, если оно есть (то есть предложение не является неразрешимым предложением в ZFC), более того, доказательство должно быть практически коротким.

  3. PNPNP=DTime(nlogn)

Кава
источник
Ваш пункт 1. слишком пессимистичен. DTIME(N10)тоже не поможет!
Ануш