Предполагая, что P NP, NP-полные проблемы «трудно решить, но есть ответы, которые легко проверить». Имеет ли смысл рассматривать противоположные, то есть проблемы, для которых легко вычислить правильный ответ, но трудно проверить произвольное предполагаемое решение?
Я думаю, что такая проблема подразумевает либо:
Экспоненциально много «правильных» ответов для любого заданного входа, потому что в противном случае проверка может быть проведена простым вычислением всех правильных ответов.
Некоторые «правильные» ответы легко вычислить, а другие трудно найти.
Ответы:
Если у вас все в порядке с искусственными проблемами, вы можете их решить. Вот несколько из них:
Дать одну выполнимую формулу 3CNF легко, но решить, является ли данная формула 3CNF выполнимой или нет, является 3SAT, хорошо известной NP-полной задачей.
Дать одну такую машину Тьюринга легко, но не решается, останавливается ли данная машина Тьюринга или нет.
Добавлено : Кстати, я не думаю, что то, что вы написали в последнем абзаце, содержит:
Если у проблемы есть одно решение, то действительно проверка ответа не сложнее, чем вычисление правильного решения. Однако, если у проблемы есть одно простое решение и одно трудное решение, вы не сможете эффективно рассчитать все решения. Вот одна из таких проблем (которая очень искусственная):
Дать одно решение легко : вы всегда можете выбрать « М - машина Тьюринга». Однако, является ли данный ответ правильным или нет, невозможно решить. Обратите внимание, что в этой проблеме есть только два решения для каждого экземпляра.
источник
Хотя ответ Цуёси Ито охватывает «основной» ответ, я хотел добавить две тонкие заметки.
Даже когда решение трудно проверить, проверить решение по-прежнему легко с помощью короткой проверочной строки. То есть, немного расширив решение дополнительной информацией, оно становится легко проверяемым; проверка всегда в NP. Один из способов увидеть это состоит в том, что агент, вычисляющий решение, может записать все случайные биты, которые он использует, и затем верификатор может использовать эту же случайную строку для выполнения того же вычисления. (Проверяющий должен использовать случайные биты, в противном случае они всегда выводят один и тот же ответ, и верификатор всегда может легко проверить, вычислив ответ тем же методом.)
Для квантовых компьютеров это очень открытый вопрос. Для классических компьютеров верификатор всегда может сделать что-то вроде имитации проверяющего и проверки того, что он получает один и тот же ответ. Вполне возможно, что для какой-то сложной задачи существует квантовый алгоритм, который дает равномерное распределение по всем (экспоненциально многим) решениям, которые трудно проверить. Вы не можете повторно запустить средство проверки, потому что вы, скорее всего, будете получать разные ответы каждый раз.
Как пример подобного рода проблемы, проблема Дойча-Йоссы немного страдает от этого. Если оракул не является сбалансированной функцией, тогда квантовый компьютер может быстро определить, что это так, но нет коротких доказательств, которые позволили бы классическому компьютеру проверить это. (Это только «похожая» проблема, потому что она все еще может быть проверена другим квантовым компьютером, и проверка также выполняется в классическом BPP, даже если она не в P.)
источник