Для каких проблем в P легче проверить результат, чем найти его?


52

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

Однако в P решение также может быть найдено за полиномиальное время, поэтому не представляется очевидным, когда проверка выполняется быстрее, чем поиск решения. На самом деле, разные проблемы ведут себя по-разному с этой точки зрения. Некоторые примеры:

  1. 3SUM: учитывая входных чисел, найдите 3 из них, сумма которых равна 0. Насколько мне известно, самый быстрый из известных алгоритмов выполняется за время O ( n 2 - o ( 1 ) ) , и этот порядок считается оптимальным. С другой стороны, проверка решения происходит намного быстрее, так как все, что нам нужно сделать, это просто проверить, что 3 найденных числа действительно суммируют с 0.nO(n2o(1))

  2. Кратчайшие пути для всех пар: с учетом графа с весами ребер вычисляется его матрица расстояний наименьшего пути. После того, как такая матрица задана, можно ли проверить быстрее, что это действительно правильная матрица расстояний, чем пересчитать ее? Я думаю, что ответ, возможно, да, но это, безусловно, менее очевидно, чем для 3SUM.

  3. Линейное программирование. Если дается заявленное оптимальное решение, проверить его легче, чем пересчитать его, когда также предоставляется вспомогательная информация (оптимальное двойное решение). С другой стороны, если доступно только первичное решение, неясно, можно ли его проверить быстрее, чем на самом деле решение ЛП.

Вопрос: что известно об этом предмете? То есть когда легче проверить решение проблемы в P , чем найти решение?


7
kkk

16
nn1Θ(nlogn)

7
Вы хотите, чтобы было легко проверить как да, так и нет случаев решения проблем? Для 3SUM, хотя легко проверить экземпляры yes в постоянном времени, я не знаю, легко ли проверить отсутствие экземпляров. Или вы думаете о проблемах, где есть небулевы выходные данные, такие как матричное умножение? (Матричное умножение является примером того, что вы хотите, если вы разрешите рандомизированные алгоритмы.)
Робин Котари

3
«С другой стороны, проверка решения происходит намного быстрее, так как все, что нам нужно сделать, это просто проверить, что 3 найденных числа действительно равны нулю». - Нам также нужно проверить, что 3 найденных числа на самом деле являются частью ввода.
HVd

3
Есть ли проблемы, для которых мы знаем, что проверка не проще?
Рафаэль

Ответы:


24

α(n)


4
Может быть, будет справедливо добавить, что существует рандомизированный алгоритм, который работает в ожидаемое линейное время (алгоритм Каргера-Кляйна-Тарьяна).
Сашо Николов

2
Кроме того, если кому-то нужна ссылка, это самый простой алгоритм проверки MST с линейным временем, который мне известен: webhome.cs.uvic.ca/~val/Publications/Algorithmica-MSTverif.ps .
Сашо Николов

20

В данной работе показано , что существует алгоритмы для верификации как YES и экземпляры NO 3 для проблем, в том числе Макс потока, 3SUM и ВПДПА, которые быстрее с помощью многочлена фактора , чем известные границ для вычисления самого решения.

Существует класс проблем, а именно те, которые улучшают время выполнения, это SETH-hard, чье время выполнения для проверки NO экземпляров вряд ли будет значительно быстрее, чем время для вычисления решения, в противном случае гипотеза из этой статьи называется недетерминированной Сильная экспоненциальная гипотеза времени потерпит неудачу.


18

Для некоторых проблем, кажется, нет никакой разницы. В частности, Vassilevska Williams & Williams показывают:

  • для умножения логической матрицы вычисление матричного произведения и проверка субкубического эквивалента матричного произведения, означающего, что у них либо есть алгоритмы субкубического времени, либо ни один из них не имеет.

  • То же самое верно для вычисления и проверки матричного произведения для любой «расширенной (min, +) структуры» (определение см. В статье, но это включает в себя множество естественных проблем).

(Теперь, конечно, возможно, что у всех этих проблем есть субкубические алгоритмы, и тогда между вычислением и проверкой может быть полиномиальная разница, но для этих проблем не может быть кубической разницы. И мне кажется вероятным, что в На самом деле все они требуют кубического времени.)


2
С другой стороны, для умножения матриц в достаточно большом поле существует алгоритм рандомизированного квадратичного времени для проверки, в то время как самое быстрое время вычисления продукта - n ^ omega.
Thatchaphol

2
@ Thatchaphol: Да, хотя многие люди считают, что omega = 2 ... Кроме того, широко признано, что умножение логических матриц (т.е. вычисление матрицы Mult над булевыми и / или полукольцами) имеет несколько иную природу, чем умножение матриц в поле.
Джошуа Грохов

16
  • Ω(n)Ω(logn)

    O(1)

  • Ω(nlogn)O(n)


2
Ω(nlogn)O(1)

O(n)

Θ(n)



3

O(n2ϵ)

PΩ(n1ϵ)

O(n2/logn)

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.