Analisi
Ora analizzeremo l'algoritmo di Grover per capire come funziona. Inizieremo con quella che potremmo definire un'analisi simbolica, in cui calcoliamo come l'operazione di Grover agisce su determinati stati, e poi legheremo questa analisi simbolica a un'immagine geometrica utile per visualizzare il funzionamento dell'algoritmo.
Soluzioni e non soluzioni
Iniziamo definendo due serie di stringhe.
L'insieme contiene tutte le soluzioni al nostro problema di ricerca, mentre contiene le stringhe che non sono soluzioni (che possiamo chiamare “non-soluzioni” quando è opportuno). Questi due insiemi soddisfano le condizioni e , il che significa che si tratta di una bipartizione di .
Successivamente definiremo due vettori unitari che rappresentano le sovrapposizioni uniformi sugli insiemi di soluzioni e non soluzioni.
Dal punto di vista formale, ognuno di questi vettori è definito solo quando l'insieme corrispondente è non vuoto, ma di seguito ci concentreremo sul caso in cui né né siano vuoti. I casi di e possono essere trattati separatamente e lo faremo più avanti.
Per inciso, la notazione qui utilizzata è comune: ogni volta che abbiamo un insieme finito e non vuoto , possiamo scrivere per indicare il vettore di stato quantistico che è uniforme sugli elementi di .
Definiamo inoltre che è uno stato quantistico uniforme su tutte le stringhe di bit:
Si noti che
Abbiamo anche che , quindi rappresenta lo stato del registro dopo l'inizializzazione al passo 1 dell'algoritmo di Grover.
Ciò implica che, immediatamente prima che avvengano le iterazioni di nella fase 2, lo stato di sia contenuto nello spazio vettoriale bidimensionale generato da e , e che inoltre i coefficienti di questi vettori siano numeri reali. Come vedremo, lo stato avrà sempre queste proprietà — il che significa che lo stato è una combinazione lineare reale di e — dopo un numero qualsiasi di iterazioni dell’operazione nel passaggio 2.
Un'osservazione sull'operazione Grover
Passiamo ora all'operazione di Grover
iniziando con un'interessante osservazione al riguardo.
Immaginiamo per un momento di sostituire la funzione con la composizione di e della funzione NOT — ovvero, la funzione che si ottiene invertendo il bit di uscita di . Chiameremo questa nuova funzione e potremo esprimerla utilizzando i simboli in diversi modi alternativi.
Si noti che
per ogni stringa , e quindi
Ciò significa che se sostituissimo la funzione con la funzione , l'algoritmo di Grover non funzionerebbe in modo diverso, poiché gli stati ottenuti dall'algoritmo nei due casi sono necessariamente equivalenti, a parte una fase globale.
Non è un problema! Intuitivamente, l'algoritmo non si preoccupa di quali stringhe siano soluzioni e quali non soluzioni: deve solo essere in grado di distinguere le soluzioni e le non soluzioni per funzionare correttamente.
Azione dell'operazione Grover
Consideriamo ora l'azione di sui vettori di stato quantistico e .
Innanzitutto, notiamo che l'operazione ha un effetto molto semplice su e .
In secondo luogo, abbiamo l’operazione . L’operazione è definita come
ancora una volta per ogni stringa , e un modo alternativo e pratico per esprimere questa operazione è il seguente:
Un modo semplice per verificare che questa espressione sia in accordo con la definizione di è quello di valutare la sua azione sugli stati base standard.
L'operazione può quindi essere scritta in questo modo:
utilizzando la stessa notazione, , che abbiamo usato in precedenza per la sovrapposizione uniforme su tutte le stringhe di bit .
E ora abbiamo ciò che ci serve per calcolare l'azione di su e . Per prima cosa calcoliamo l'azione di su .
In secondo luogo, calcoliamo l’azione di su .
In entrambi i casi si utilizza l'equazione
insieme alle espressioni
che seguono.
In sintesi, abbiamo
Come abbiamo già osservato, lo stato di immediatamente prima della fase 2 è contenuto nello spazio bidimensionale generato da e , e abbiamo appena dimostrato che mappa qualsiasi vettore in questo spazio su un altro vettore nello stesso spazio. Ciò significa che, ai fini dell'analisi, possiamo concentrare la nostra attenzione esclusivamente su questo sottospazio.
Per comprendere meglio ciò che accade in questo spazio bidimensionale, esprimiamo l'azione di su questo spazio come una matrice,
le cui prima e seconda riga/colonna corrispondono rispettivamente a e . Finora, in questa serie, abbiamo sempre associato le righe e le colonne delle matrici agli stati classici di un sistema, ma le matrici possono anche essere utilizzate per descrivere le azioni delle applicazioni lineari su basi diverse, come nel caso che ci occupa.
Anche se non è affatto ovvio a prima vista, la matrice è ciò che si ottiene squadrando una matrice di aspetto più semplice.
La matrice
è una matrice di rotazione, che possiamo esprimere alternativamente come
per
Questo angolo avrà un ruolo molto importante nell'analisi che segue, quindi vale la pena di sottolinearne l'importanza in questa sede, visto che lo vediamo per la prima volta.
Alla luce di questa espressione della matrice, osserviamo che
Questo perché ruotare di due volte di un angolo pari a equivale a ruotare di un angolo pari a . Un altro modo per renderlo evidente è quello di ricorrere all'espressione alternativa
insieme alle formule degli angoli doppi della trigonometria:
In sintesi, lo stato del registro all'inizio del passo 2 è
e l'effetto dell'applicazione di a questo stato è quello di ruotarlo di un angolo all'interno dello spazio generato da e . Quindi, ad esempio, abbiamo
e in generale
Immagine geometrica
Ora colleghiamo l'analisi che abbiamo appena svolto a un'immagine geometrica. L'idea è che l'operazione sia il prodotto di due riflessioni, e . E l'effetto complessivo dell'esecuzione di due riflessioni è quello di eseguire una rotazione.
Cominciamo con . Come abbiamo già osservato in precedenza, abbiamo
All'interno dello spazio vettoriale bidimensionale generato da e , si tratta di una riflessione rispetto alla retta parallela a , che chiameremo . Ecco una figura che illustra l'azione di questa riflessione su un ipotetico vettore unitario , che supponiamo sia una combinazione lineare reale di e .
In secondo luogo abbiamo l'operazione , che, come abbiamo già visto, può essere scritta come
Anche questa è una riflessione, questa volta riguardante la retta parallela al vettore . Ecco una figura che illustra l'effetto di questa riflessione su un vettore unitario .
Quando componiamo queste due riflessioni, otteniamo una rotazione - di due volte l'angolo tra le linee di riflessione - come illustra questa figura.
Questo spiega, in termini geometrici, perché l’effetto dell’operazione di Grover consiste nel ruotare le combinazioni lineari di e di un angolo pari a .