Esiste un'attività risolvibile in un tempo polinomiale ma non verificabile in un tempo polinomiale?


34

Un mio collega e io abbiamo appena preso appunti su uno dei nostri professori. Le note affermano che ci sono attività che è possibile risolvere in tempo polinomiale (sono nella classe di PF) ma che NON sono verificabili in tempo polinomiale (NON sono nella classe di NPF).

Per approfondire queste classi: otteniamo un input X e produciamo un output Y tale che (X, Y) sono in relazione R che rappresenta il nostro compito. Se è possibile ottenere Y per X in tempo polinomiale, l'attività appartiene alla classe di PF. Se è possibile verificare il certificato di lunghezza polinomiale Z che dimostra che una tupla (X, Y) è in relazione R in tempo polinomiale, l'attività appartiene alla classe di NPF.

Non stiamo parlando di problemi di decisione, in cui la risposta è semplicemente SÌ o NO (più formalmente se una stringa appartiene a una lingua). Per problemi di decisione sembra che PF sia un sottoinsieme proprio di NPF. Tuttavia, per altre attività potrebbe essere diverso.

Sei a conoscenza di un'attività che può essere risolta in tempo polinomiale ma non verificata in tempo polinomiale?


8
Forse fraintendo, ma perché il seguente non è un algoritmo di verifica del tempo polinomiale? Dato , calcola tu stesso la funzione , usando l'algoritmo del tempo polinomiale, e restituisce "corretto" se . È possibile che tu abbia letto male o che il professore abbia sbagliato a dire e intendi invece dire che ci sono problemi verificabili in tempo polinomiale ma non risolvibili in tempo polinomiale? f ( x ) f ( x ) = y(x,y)f(x)f(x)=y
Lieuwe Vinkhuijzen,

1
@LieuweVinkhuijzen "per dire che ci sono problemi verificabili in tempo polinomiale ma non risolvibili in tempo polinomiale?" [rif. necessario]
T. Verron l'

@ T.Verron Haha sì, anch'io sarei molto felice di vedere le prove del professore per questa affermazione;)
Lieuwe Vinkhuijzen

Risposte:


44

Questo è possibile solo se ci sono molte uscite ammissibili per un dato input. Cioè, quando la relazione non è una funzione perché viola l'unicità.R

Ad esempio, considera questo problema:

Dato (rappresentato in unario) e una TM M , produce un'altra TM N tale che L ( M ) = L ( N ) e # N > n (dove # N sta per codifica (numero di Gödel) di N in un numero naturale)nNMNL(M)=L(N)#N>n#NN

Risolvere questo è banale: continua ad aggiungere alcuni stati ridondanti a TM , possibilmente con alcune transizioni fittizie tra loro, fino a quando la sua codifica non supera n . Questa è un'applicazione ripetuta di base dell'imbottitura Lemma su TM. Ciò richiederà n padding, ognuno dei quali può aggiungere uno stato, quindi può essere fatto in tempo polinomiale.Mnn

D'altra parte, dato è indecidibile controllare se N è un output corretto per gli ingressi n , M . In effetti, il controllo di L ( M ) = L ( N ) è indecidibile (applica il teorema di Rice) e il vincolo # N > n scarta solo finiti molti N da quelli. Poiché rimuoviamo una quantità finita di elementi da un problema indecidibile, otteniamo ancora un problema indecidibile.n,M,NNn,ML(M)=L(N)#N>nN

È inoltre possibile sostituire la proprietà indecidibile per ottenere variazioni che sono ancora calcolabili ma NP difficile / completo. Ad esempio dato n (in unario) è banale calcolare un grafico G con all'interno un n -clique. Ma dato n , G è difficile verificare se esiste un n -clique.L(M)=L(N)nGnn,Gn


1
Mi aspettavo che non fosse così. Bella risposta!
Filip Haglund,

7
Questo non risponde alla domanda. L'OP ha specificamente richiesto un problema non verificabile nel solito senso, in cui, oltre all'input e alla presunta risposta, otteniamo un certificato che attesta la correttezza della risposta. Nel tuo caso, il certificato sono i bit utilizzati per generare non deterministicamente la nuova equivalente Turing Machine. Dato M , N e Z , è facile verificare se z dà la macchina M . Senza z , la domanda è se è facile generare istanze difficili di linguaggi (NPC), il che è vero solo in Minicrypt e Cryptomania. zM,NzzMz
Lieuwe Vinkhuijzen,

2
@chi Non tutte le coppie possono essere certificate, ma l'insieme di coppie M , N generato dal tuo algoritmo può essere certificato. Il certificato è la trascrizione del tuo algoritmo che produce N da M (ad es. "Inizia con M , quindi aggiungi questo stato e aggiungi questa transizione, quindi ... e voilà, N !"). In generale, se T è un algoritmo non deterministico che, dato x , calcola sempre un y ammissibile , allora una trascrizione di un percorso di calcolo di T ( x ) è un certificato che un dato y è ammissibile.M,NM,NNMMNTxyT(x)y
Lieuwe Vinkhuijzen,

3
@chi C'è una leggera sfumatura nella domanda: Per un arbitrario rapporto , è possibile che non tutti ammissibili y sono certificabili, e vi darò un esempio elegante. Tuttavia, la domanda non chiede se esistano relazioni ammissibili ma non certificate (la risposta è , con il tuo esempio), invece si chiede se possiamo avere un algoritmo che produce un output ammissibile, non certificabile. La risposta, qui, deve essere no , a causa dell'argomento sopra. Ry
Lieuwe Vinkhuijzen,

2
@chi Non so che cosa intendesse chiedere l'OP, ma ho comunque trovato la tua risposta molto illuminante, ho imparato qualcosa! imo la domanda può essere letta come fai tu, o altrettanto plausibilmente come " esistono funzioni a senso unico? " (forse) o " sono facili da generare casi difficili di problemi NP? " (lo spero per RSA), oppure, il modo in cui l'ho letto, come " Is ?NPP " (no).
Lieuwe Vinkhuijzen,

1

Questa è semplicemente un'elaborazione della prima frase della risposta di @ chi, poiché non l'ho trovata ovvia.

L'idea è che se hai un algoritmo che trova la risposta ad un problema in un tempo polinomiale, allora ci sono due possibilità:

  1. In precedenza hai dimostrato (matematicamente) che l'output dell'algoritmo è una soluzione al problema, nel qual caso i passaggi dell'algoritmo stesso costituiscono la prova della correttezza.

  2. Hai un algoritmo diverso per verificare che l'output sia effettivamente una soluzione, nel qual caso devi eseguire questo algoritmo (altrimenti cadrai nel caso n. 1), il che implica che lo stai facendo in tempo polinomiale.

Pertanto, non può esserci questo problema.


Non capisco # 2. Cosa implica che il diverso algoritmo funzioni in tempo polinomiale?
Albert Hendriks,

@AlbertHendriks: se il verificatore non è stato eseguito in tempo polinomiale, il solutore originale non poteva affermare di aver trovato una soluzione corretta in tempo polinomiale, perché deve eseguire il verificatore per assicurarsi che la soluzione sia corretta.
Mehrdad,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.