W przypadku (wyszukiwania wersji) problemów z NP zakończonych weryfikacja rozwiązania jest wyraźnie łatwiejsza niż znalezienie, ponieważ weryfikacja może być przeprowadzona w czasie wielomianowym, podczas gdy znalezienie świadka zajmuje (prawdopodobnie) wykładniczy czas.
Jednak w P rozwiązanie można znaleźć również w czasie wielomianowym, więc nie wydaje się oczywiste, kiedy weryfikacja jest szybsza niż znalezienie rozwiązania. W rzeczywistości różne problemy wydają się zachowywać inaczej z tego punktu widzenia. Kilka przykładów:
3SUMA: biorąc pod uwagę liczb wejściowych, znajdź 3 spośród nich, które sumują się do 0. O ile mi wiadomo, najszybszy znany algorytm działa w czasie , a ta kolejność jest przypuszczalna optymalna. Z drugiej strony weryfikacja rozwiązania jest znacznie szybsza, ponieważ wszystko, co musimy zrobić, to po prostu sprawdzić, czy 3 znalezione liczby rzeczywiście sumują się do zera.
Najkrótsze ścieżki wszystkich par: biorąc pod uwagę wykres z wagami krawędzi, oblicz jego macierz odległości najkrótszych ścieżek. Czy po otrzymaniu takiej macierzy można szybciej sprawdzić, czy rzeczywiście jest to właściwa macierz odległości, niż ją ponownie obliczyć? Domyślam się, że odpowiedź może być tak, ale z pewnością jest mniej oczywista niż w przypadku 3SUM.
Programowanie liniowe. Jeśli podano deklarowane optymalne rozwiązanie, sprawdzenie jest łatwiejsze niż ponowne obliczenie, gdy podane są również informacje pomocnicze (optymalne podwójne rozwiązanie). Z drugiej strony, jeśli dostępne jest tylko pierwotne rozwiązanie, nie jest jasne, czy można to sprawdzić szybciej, niż faktyczne rozwiązanie LP.
Pytanie: co wiadomo na ten temat? To znaczy, kiedy łatwiej jest zweryfikować rozwiązanie problemu w P , niż znaleźć rozwiązanie?