Per (versioni di ricerca) di problemi NP completi, verificare una soluzione è chiaramente più facile che trovarla, poiché la verifica può essere effettuata in tempo polinomiale, mentre la ricerca di un testimone richiede (probabilmente) tempo esponenziale.
In P , tuttavia, la soluzione può essere trovata anche in tempi polinomiali, quindi non sembra ovvio quando la verifica è più veloce della ricerca della soluzione. In effetti, diversi problemi sembrano comportarsi diversamente da questo punto di vista. Qualche esempio:
3SUM: dati numeri di input, trova 3 tra loro che sommano a 0. Per quanto ne so, l'algoritmo più veloce conosciuto viene eseguito nel tempo e questo ordine è ipotizzato ottimale. D'altra parte, la verifica di una soluzione è molto più veloce, poiché tutto ciò che dobbiamo fare è solo verificare che i 3 numeri trovati siano effettivamente pari a 0.
Percorsi più brevi per tutte le coppie: dato un grafico con i pesi dei bordi, calcola la matrice della distanza del percorso più breve. Una volta che una tale matrice è stata data, si può verificare più velocemente che sia effettivamente la matrice della distanza corretta, piuttosto che ripeterla? La mia ipotesi è che la risposta sia forse sì, ma è certamente meno ovvia rispetto a 3SUM.
Programmazione lineare. Se viene fornita una soluzione ottimale rivendicata, verificarla è più semplice che ripeterla, quando vengono fornite anche informazioni ausiliarie (una soluzione doppia ottimale). D'altra parte, se è disponibile solo la soluzione primaria, non è chiaro se si può controllare più velocemente, piuttosto che risolvere effettivamente l'LP.
Domanda: cosa si sa su questo argomento? Cioè, quando è più facile verificare una soluzione per un problema in P , che trovare la soluzione?