Algoritmo di Grover: cosa inserire in Oracle?


9

Sono confuso su cosa inserire in Oracle nell'algoritmo di Grover.

Non abbiamo bisogno di inserire ciò che stiamo cercando e dove trovare ciò che stiamo cercando in Oracle, oltre agli stati quantistici sovrapposti?

Ad esempio, supponiamo di avere un elenco di nomi di persone {"Alice", "Bob", "Corey", "Dio"} e vogliamo scoprire se "Dio" è nell'elenco. Quindi, Oracle dovrebbe prendere come input e output . Lo capisco.1/2(|00+|01+|10+|11)1/2(|00+|01+|10|11)

Ma non dobbiamo anche inserire la parola "Dio" e l'elenco {"Alice", "Bob", "Corey", "Dio"} in Oracle? Altrimenti, come può Oracle restituire l'output? Non è esplicitamente menzionato poiché Oracle è una scatola nera e non dobbiamo pensare a come implementarla?

La mia comprensione di Oracle è:

  • Oracle ha la capacità di riconoscere se la parola "Dio" è nell'elenco.
  • Per fare ciò, Oracle prende gli stati quantistici sovrapposti come input, in cui ogni stato quantico rappresenta l'indice dell'elenco.
  • Quindi, inserisci in Oracle significa, controlla se la parola "Dio" è nell'indice 0 della lista e ritorna caso affermativo e ritorna contrario.|00|00|00
  • Nel nostro caso, Oracle restituisce .1/2(|00+|01+|10|11)
  • Ma per quanto riguarda l'elenco e la parola?

1
Pur non essendo formulato nello stesso modo, credo che la tua domanda sia più o meno la stessa di questa: algoritmo di Grover: dov'è la lista?
DaftWullie,

Risposte:


4

Sebbene le spiegazioni popolari dell'algoritmo di Grover parlino della ricerca in un elenco, in realtà lo si utilizza per cercare possibili input 0..N-1 in una funzione. Il costo dell'algoritmo è dove è il numero di input su cui si desidera cercare e è il costo della valutazione della funzione. Se si desidera che quella funzione cerchi in un elenco, è necessario codificare l'elenco nella funzione.O(NF)NF

La codifica forzata della funzione per utilizzare un elenco di elementi è di solito una pessima idea, perché tende a far sì che sia uguale a . Ciò comporterebbe il costo totale dell'algoritmo di Grover . Quale sorta di sconfitte l'intero scopo, dal momento che .NFO(N)O(NF)=O(NN)=O(N1.5)N1.5>N


Non inseriresti un elenco ordinato , rendendo la ricerca molto più veloce? Ovviamente, potresti voler includere il costo per ordinare l'elenco, ma immagino che sia ancora complessivamente . O(Nlog(N))
DaftWullie,

@DaftWullie Il problema è che Grover deve effettuare una ricerca in sovrapposizione e ciò richiede un circuito multiplexer con porte N AND (o altre operazioni non Clifford). Un gate AND quantico (cioè un Toffoli) ha un costo non trascurabile quando si esegue la correzione degli errori. Questo costo è tecnicamente presente anche nella macchina classica (cioè la RAM ha porte O (N) AND), sembra essere trascurabile e persino evitabile in quel contesto.
Craig Gidney,

Non capisco cosa stai dicendo. Saresti in grado di esprimere una domanda e rispondere, per mostrare i dettagli? (Non credo di poter
esprimere

@DaftWullie Penso che la domanda potrebbe essere qualcosa del tipo "come posso dare a un computer quantistico l'accesso in lettura a un database classico e quanto costa".
Craig Gidney,
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.