Oracle Construction per l'algoritmo di Grover


16

In "Quantum Computation and Quantum Information" di Mike e Ike, l'algoritmo di Grover è spiegato in dettaglio. Tuttavia, nel libro, e in tutte le spiegazioni che ho trovato online per l'algoritmo di Grover, sembra non esserci alcuna menzione di come sia costruita l'Oracolo di Grover, a meno che non sappiamo già quale stato stiamo cercando, sconfiggendo lo scopo del algoritmo. In particolare, la mia domanda è questa: dato un po 'di f (x) tale che per un valore di x, f (x) = 1, ma per tutti gli altri, f (x) = 0, come si costruisce un oracolo che ci porterà da il nostro stato iniziale e arbitrario | x> | y> a | x> | y + f (x)>? Il maggior numero possibile di dettagli espliciti (forse un esempio?) Sarebbe molto apprezzato. Se una tale costruzione per qualsiasi funzione arbitraria è possibile con Hadamard, Pauli o altre porte quantistiche standard,


"qui sembra non menzionare il modo in cui è costruito l'Oracolo di Grover, a meno che non sappiamo già quale stato stiamo cercando, sconfiggendo lo scopo dell'algoritmo." ... "L'Oracolo di Grover" è il problema da risolvere. Non lo costruisci. Ti viene dato (accesso a Oracle) e ti viene chiesto di eseguire il calcolo per scoprire il valore. Se aiuta, fai finta che io costruisca l'oracolo e poi ti chiedo di risolvere il problema. (Si noti inoltre che la lettura / scrittura / preparazione di un database di elementi richiede più tempo rispetto all'esecuzione di Grover NAlgoritmo N- time.)N
Daniel Apon,

2
Ma cosa succede se invece di ricevere l'oracolo, ci viene data una f (x)? Immagina di risolvere un problema 3-SAT e di voler utilizzare Grover's per fornire una soluzione rapida alla soluzione. Conosciamo la f (x) in questione (le clausole di verità 3-SAT), ma non sappiamo necessariamente quale stringa di bit x produrrà un risultato vero quando collegata al 3-SAT. Non deve esserci un modo per costruire un oracolo dalla funzione 3-SAT per trovare la stringa di bit corretta? Se non c'è, ed è come suggerisci, qualcosa che deve essere fornito da qualcun altro, l'algoritmo di Grover sembra piuttosto artificiale, semplicemente un esercizio che ti è stato dato.
Sarà il

Risposte:


20

L'oracolo è fondamentalmente solo un'implementazione del predicato in cui si desidera cercare una soluzione soddisfacente.

Ad esempio, supponiamo di avere un problema di 3-sat:

(¬x1 ∨ ¬x3 ∨ ¬x4) ∧
    (x2 ∨ x3 ∨ ¬x4) ∧
    (x1 ∨ ¬x2 ∨ x4) ∧
    (x1 ∨ x3 ∨ x4) ∧
    (¬x1 ∨ x2 ∨ ¬x3)

Oppure, sotto forma di tabella, ogni riga è una clausola 3, x significa "questa variabile falsa", o significa "questa variabile vera" e lo spazio significa "non nella clausola":

1 2 3 4
-------
x   x x
  o o x
o x   o
x o x

Ora crea un circuito che calcola se l'ingresso è una soluzione, in questo modo:

correttore di soluzioni

Ora, per trasformare il tuo circuito in un oracolo, colpisci il bit di uscita con un gate Z e decomponi qualsiasi immondizia che hai fatto (cioè esegui il circuito di calcolo in ordine inverso):

circuito dell'oracolo

Questo è tutto quello che c'è da fare. Calcola il predicato, colpisci il risultato con una Z, non calcola il predicato. Questo è un oracolo.

Iterate i passi di diffusione con i passi degli oracoli e avrete una ricerca più approfondita :

ricerca di Grover

... anche se probabilmente dovresti scegliere un esempio con un minor numero di soluzioni, quindi il progresso è graduale (invece di ruotare lungo il piano iniziale-stato-soluzione-stato di oltre 90 gradi per passo come il mio esempio).


Grazie, è stato estremamente utile. Incredibilmente chiaro, ha risposto a tutto ciò che ho chiesto (e persino usato porte quantistiche comuni!) C'è qualche ragione per cui decidi di cambiare tutti i tuoi qubit iniziali nello stato | 1> prima di metterli in sovrapposizione con le porte Hadamard invece di mettere semplicemente | 0 > qubit di stato attraverso Hadamards (cioè c'è un vantaggio in questo)? Inoltre, quale operazione è quella per i tuoi passi di diffusione? Sembra X controllato, ma stai usando | 1> o | 0> come controlli?
Will

(12|012|1)n

Risposta fantastica e grazie per il link a algassert.com/quirk !
Frédéric Grosshans,
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.