Descrizione dell'algoritmo di Grover
In questa sezione descriveremo l'algoritmo di Grover. Inizieremo parlando dei gate di query di fase e di come costruirli, per poi passare alla descrizione dell'algoritmo di Grover vero e proprio. Infine, discuteremo brevemente come questo algoritmo si applichi naturalmente al problema della ricerca.
gate di query di fase
L'algoritmo di Grover si avvale di operazioni note come gate di query di fase. A differenza di un gate di query ordinario definito per una data funzione nel modo consueto descritto in precedenza, un gate di query di fase per la funzione è definito come
per ogni stringa
L'operazione può essere implementata usando un solo gate di query , come suggerisce questo diagramma:
Questa implementazione sfrutta il fenomeno del phase kickback e richiede la disponibilità di un qubit di workspace aggiuntivo, inizializzato nello stato Questo qubit rimane nello stato al termine dell'implementazione e può essere riutilizzato (ad esempio per implementare successivi gate ) oppure semplicemente scartato.
Oltre all'operazione faremo uso anche di un gate di query di fase per la funzione OR a bit, definita come segue per ogni stringa
In modo esplicito, il gate di query di fase per la funzione OR a bit si comporta così:
Per essere chiari, questo è il comportamento di sugli stati della base standard; il suo comportamento su stati arbitrari si ricava da questa espressione per linearità.
L'operazione può essere implementata come circuito quantistico partendo da un circuito booleano per la funzione OR, costruendo poi un'operazione (ossia un gate di query standard per la funzione OR a bit) seguendo la procedura descritta nella lezione Fondamenti di algoritmica quantistica, e infine ottenendo un'operazione tramite il fenomeno del phase kickback come descritto sopra. Da notare che l'operazione non dipende dalla funzione e può quindi essere implementata da un circuito quantistico privo di gate di query.
Descrizione dell'algoritmo
Ora che disponiamo delle due operazioni e possiamo descrivere l'algoritmo di Grover.
L'algoritmo fa riferimento a un numero che rappresenta il numero di iterazioni eseguite (e quindi il numero di query alla funzione richieste). Questo numero non è specificato dall'algoritmo di Grover così come lo stiamo descrivendo, e discuteremo più avanti nella lezione come sceglierlo.
L'operazione iterata nel passo 2 sarà chiamata operazione di Grover nel resto di questa lezione. Ecco una rappresentazione come circuito quantistico dell'operazione di Grover per
In questo diagramma, l'operazione è raffigurata più grande di come indicazione visiva informale per suggerire che è probabilmente l'operazione più costosa. In particolare, quando lavoriamo all'interno del modello delle query, richiede una query mentre non ne richiede nessuna. Se invece disponiamo di un circuito booleano per la funzione e lo convertiamo in un circuito quantistico per ci si può ragionevolmente aspettare che il circuito quantistico risultante sia più grande e complesso di quello per
Ecco il diagramma di un circuito quantistico per l'intero algoritmo con e Per valori più grandi di è sufficiente inserire ulteriori istanze dell'operazione di Grover immediatamente prima delle misurazioni.
Applicazione alla ricerca
L'algoritmo di Grover può essere applicato al problema della Ricerca nel modo seguente:
- Scegli il numero nel passo 2. (Questo aspetto viene discusso più avanti nella lezione.)
- Esegui l'algoritmo di Grover sulla funzione usando la scelta effettuata per per ottenere una stringa
- Interroga la funzione sulla stringa per verificare se è una soluzione valida:
- Se allora abbiamo trovato una soluzione, quindi possiamo fermarci e restituire
- Altrimenti, se possiamo eseguire nuovamente la procedura, eventualmente con una scelta diversa per oppure decidere di rinunciare e restituire "nessuna soluzione."
Una volta analizzato il funzionamento dell'algoritmo di Grover, vedremo che scegliendo si ottiene una soluzione al problema di ricerca (se esiste) con alta probabilità.