Для (поисковых версий) NP- неполных задач проверить решение явно проще, чем найти его, поскольку проверка может быть выполнена за полиномиальное время, тогда как поиск свидетеля занимает (вероятно) экспоненциальное время.
Однако в P решение также может быть найдено за полиномиальное время, поэтому не представляется очевидным, когда проверка выполняется быстрее, чем поиск решения. На самом деле, разные проблемы ведут себя по-разному с этой точки зрения. Некоторые примеры:
3SUM: учитывая входных чисел, найдите 3 из них, сумма которых равна 0. Насколько мне известно, самый быстрый из известных алгоритмов выполняется за время O ( n 2 - o ( 1 ) ) , и этот порядок считается оптимальным. С другой стороны, проверка решения происходит намного быстрее, так как все, что нам нужно сделать, это просто проверить, что 3 найденных числа действительно суммируют с 0.
Кратчайшие пути для всех пар: с учетом графа с весами ребер вычисляется его матрица расстояний наименьшего пути. После того, как такая матрица задана, можно ли проверить быстрее, что это действительно правильная матрица расстояний, чем пересчитать ее? Я думаю, что ответ, возможно, да, но это, безусловно, менее очевидно, чем для 3SUM.
Линейное программирование. Если дается заявленное оптимальное решение, проверить его легче, чем пересчитать его, когда также предоставляется вспомогательная информация (оптимальное двойное решение). С другой стороны, если доступно только первичное решение, неясно, можно ли его проверить быстрее, чем на самом деле решение ЛП.
Вопрос: что известно об этом предмете? То есть когда легче проверить решение проблемы в P , чем найти решение?