Analisi
Ora analizzeremo l'algoritmo di Grover per capire come funziona. Partiremo da quella che potrebbe essere descritta come un'analisi simbolica, in cui calcoliamo come l'operazione di Grover agisce su certi stati, e poi collegheremo questa analisi simbolica a un'immagine geometrica che è utile per visualizzare il funzionamento dell'algoritmo.
Soluzioni e non-soluzioni
Iniziamo definendo due insiemi 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 è conveniente). Questi due insiemi soddisfano e il che significa che questa è una bipartizione di
Definiamo ora due vettori unitari che rappresentano sovrapposizioni uniformi sugli insiemi di soluzioni e non-soluzioni.
Formalmente, ciascuno di questi vettori è definito solo quando il corrispondente insieme è non vuoto, ma d'ora in poi ci concentreremo sul caso in cui né né sia vuoto. I casi in cui e si trattano facilmente separatamente, e lo faremo più avanti.
Come nota a margine, la notazione usata qui è 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 anche come lo stato quantistico uniforme su tutte le stringhe di bit:
Nota che
Abbiamo anche che quindi rappresenta lo stato del registro dopo l'inizializzazione nel passo 1 dell'algoritmo di Grover.
Questo implica che appena prima che le iterazioni di avvengano nel passo 2, lo stato di è contenuto nello spazio vettoriale bidimensionale generato da e e i coefficienti di questi vettori sono numeri reali. Come vedremo, lo stato di avrà sempre queste proprietà — ovvero lo stato sarà una combinazione lineare reale di e — dopo un qualsiasi numero di iterazioni dell'operazione nel passo 2.
Un'osservazione sull'operazione di Grover
Volgiamo ora la nostra attenzione all'operazione di Grover
partendo da un'interessante osservazione su di essa.
Immagina per un momento di sostituire la funzione con la composizione di con la funzione NOT — ovvero la funzione ottenuta invertendo il bit di output di Chiameremo questa nuova funzione e possiamo esprimerla simbolicamente in alcuni modi alternativi.
Nota 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 — perché gli stati ottenuti dall'algoritmo nei due casi sono necessariamente equivalenti a meno di una fase globale.
Questo non è un problema! Intuitivamente, l'algoritmo non si preoccupa di quali stringhe siano soluzioni e quali non lo siano — ha solo bisogno di essere in grado di distinguere soluzioni e non-soluzioni per funzionare correttamente.
Azione dell'operazione di Grover
Consideriamo ora l'azione di sui vettori di stato quantistici e
Prima di tutto, osserviamo che l'operazione ha un'azione molto semplice su e
In secondo luogo, abbiamo l'operazione L'operazione è definita come
sempre per ogni stringa e un modo alternativo comodo per esprimere questa operazione è il seguente:
Un modo semplice per verificare che questa espressione corrisponda alla definizione di è valutarne l'azione sugli stati della base standard.
L'operazione può quindi essere scritta così:
usando la stessa notazione, che abbiamo usato sopra per la sovrapposizione uniforme su tutte le stringhe di bit.
Ora abbiamo tutto il necessario per calcolare l'azione di su e Calcoliamo prima l'azione di su