Sommario
- Esiste una teoria della complessità dei problemi di ricerca (nota anche come problemi di relazione). Questa teoria include classi chiamate FP , FNP e FBQP che si occupano effettivamente di risolvere i problemi di ricerca con diversi tipi di risorse.
- Da problemi di ricerca, è anche possibile definire problemi di decisione, che consente di mettere in relazione i problemi di ricerca con le normali classi P , NP e BQP .
- Indipendentemente dal fatto che si consideri la versione di ricerca della versione decisionale del problema, il modo in cui si considera l'input per il problema di Ricerca non strutturata determinerà quali limiti superiori è possibile applicare alla sua complessità.
La complessità dei problemi relazionali
Come notate, il problema di Grover risolve un problema di ricerca , che nella letteratura sulla complessità è talvolta noto anche come problema di relazione . Cioè, è un problema del seguente tipo:
La struttura di un problema di ricerca generale.
Dato un input e una relazione binaria R , trova una y tale che R ( x , y ) vale.XRyR(x,y)
Le classi di complessità FP e FNP sono definite in termini di tali problemi, dove in particolare uno è interessato al caso in cui ha una lunghezza al massimo di una funzione polinomiale della lunghezza di x , e dove la relazione R ( x , y ) può essa stessa essere calcolato in un periodo di tempo limitato da un polinomio nella lunghezza di ( x , y ) .yxR(x,y)(x,y)
In particolare: l'esempio del problema di "ricerca nel database" per il quale viene generalmente applicata la ricerca di Grover può essere descritto come segue.
Ricerca non strutturata.
Dato un oracolo di input tale che O | un ⟩ | b ⟩ = | un ⟩ | b ⊕ f ( a ) ⟩ per alcune funzioni f : { 0 , 1 } m → { 0 , 1 } , trova una y tale che O | y ⟩ | 0 ⟩ = | y ⟩ | 1O:H⊗m+12→H⊗m+12O|a⟩|b⟩=|a⟩|b⊕f(a)⟩f:{0,1}m→{0,1}y .O|y⟩|0⟩=|y⟩|1⟩
Qui, l'oracolo stesso è l'input al problema: gioca il ruolo di , e la relazione che stiamo calcolando è
R ( O , y )x
R(O,y)≡[O|y⟩|0⟩=|y⟩|1⟩]≡[f(y)=1].
Supponiamo che, anziché un oracolo, ci venga fornito un input specifico che descriva come calcolare la funzione f , possiamo quindi considerare a quale classe di complessità appartiene questo problema. Come indicato , la classe di complessità appropriata che otteniamo dipende da come viene fornito l'input.xfpyramids
Supponiamo che la funzione di input sia fornita come database (poiché il problema è talvolta descritto), in cui ciascuna voce del database ha una certa lunghezza . Se n è la lunghezza della stringa x utilizzata per descrivere l'intero database , il database ha voci N = n / ℓ . È quindi possibile effettuare una ricerca esaustiva dell'intero database interrogando ciascuna delle N voci in sequenza e fermarsi se troviamo una voce y tale che f ( y ) = 1 . Supponendo che ogni query nel database richieda qualcosa come O (ℓnxN=n/ℓNyf(y)=1 time, questa procedura si interrompe nel tempo O ( N log N ) ⊆ O ( n log n ) , quindi il problema è inFP.O(logN)⊆O(logn)O(NlogN)⊆O(nlogn)
Supponendo che la ricerca del database possa essere eseguita in una sovrapposizione coerente, l'algoritmo di Grover consente che questo problema si trovi in FBQP . Tuttavia, come FP ⊆ FBQP , la classica ricerca esaustiva dimostra anche che questo problema si trova in FBQP . Tutto ciò che otteniamo (fino a registrare i fattori) è un quadratico accelerato a causa di un risparmio nel numero di query del database.
Supponiamo che la funzione di input sia descritta in modo succinto, da un algoritmo del tempo polinomiale che prende una specifica e un argomento y ∈ { 0 , 1 } me calcola O : H m + 1 2x∈{0,1}ny∈{0,1}mO:Hm+12→Hm+12su base standard , dove m può essere molto più grande di Ω ( log n ) . Un esempio potrebbe essere dove x specifica la forma CNF di una funzione booleana f : { 0 , 1 } m → { 0 , 1 } per m ∈ O ( n ) , nel qual caso possiamo valutare in modo efficiente f ( y ) su un input y ∈|y⟩|b⟩mΩ(logn)xf:{0,1}m→{0,1}m∈O(n)f(y) quindi valutare in modo efficiente O su stati di base standard. Questo pone il problema inFNP.y∈{0,1}mO
Data una procedura per valutare da ( x , y ) nel tempo O ( p ( n ) ) per n = | x | , L'algoritmo di Grover risolve il problema della ricerca non strutturata di O nel tempo O ( p ( n ) √f(y)(x,y)O(p(n))n=|x|O⊆O(p(n)√O(p(n)2m−−−√) . Questo non è polinomiale inn, e quindi non è sufficiente per mettere questo problema inFBQP: otteniamo solo unquadruplo divelocità - anche se questo è ancora un potenziale risparmio enorme di tempo di calcolo, supponendo che il vantaggio fornito dall'algoritmo di Grover non sia perso a l'overhead richiesto per il calcolo quantico a tolleranza d'errore.⊆O(p(n)2n−−√)n
nxOxN=n/ℓNnxON∈O(2n/2)O(N−−√)
Complessità decisionale da problemi di relazione
Esiste un modo semplice per ottenere problemi di decisione da problemi di relazione, che è ben noto dalla teoria dei problemi NP completi : trasformare il problema di ricerca in una domanda sull'esistenza di una soluzione valida.
xR∃y:R(x,y)
R
xx una soluzione per la ricerca non strutturata che lo fa senza trovare effettivamente una soluzione, sebbene non sia chiaro in generale come farlo in un modo che fornirebbe un vantaggio rispetto alla ricerca effettiva di una soluzione.
Complessità Oracle
OxO
OnOnx
O
x=11⋯1n
y∈{0,1}n
y∈{0,1}n
O|y⟩|0⟩=|y⟩|1⟩
NPOFNPOBQPOFBQPO
O
Come possiamo vedere da quest'ultimo caso, se trattiamo l'input solo come un oracolo, la situazione sembra un po 'non intuitiva e certamente rende impossibile parlare dei modi in cui il "database" può essere realizzato. Ma una virtù di considerare la versione relativizzata del problema, con un vero oracolo, è che possiamo provare cose che altrimenti non abbiamo idea di come provare. Se potessimo provare che la versione decisionale del problema di ricerca non strutturato conciso era in BQP , allora potremmo realizzare un enorme passo avanti nel calcolo pratico; e se potessimo dimostrare che il problema decisionale non era effettivamente in BQP , allora avremmo dimostrato che P ≠ PSPACEOONPOBQPO
\text{}
per scrivere nomi di classi di complessità. Ad esempio\text{NP}
o\text{BQP}