Algoritmo di Simon
L'algoritmo di Simon è un algoritmo di query quantistico per un problema noto come problema di Simon. Si tratta di un problema con promessa, dal sapore simile ai problemi di Deutsch-Jozsa e Bernstein-Vazirani, ma con caratteristiche diverse.
L'algoritmo di Simon è significativo perché fornisce un vantaggio esponenziale del quantum rispetto agli algoritmi classici (inclusi quelli probabilistici), e la tecnica che utilizza ha ispirato Peter Shor nella scoperta di un efficiente algoritmo quantistico per la fattorizzazione di interi.
Problema di Simon
La funzione di input per il problema di Simon ha la forma
per interi positivi e Potremmo limitarci al caso per semplicità, ma c'è poco da guadagnare facendo questa assunzione — l'algoritmo di Simon e la sua analisi sono sostanzialmente gli stessi in entrambi i casi.
Analizzeremo la promessa tra poco per capire meglio cosa afferma, ma prima è importante chiarire che essa richiede che abbia una struttura molto speciale — quindi la maggior parte delle funzioni non la soddisferà. È anche opportuno riconoscere che questo problema non è pensato per avere importanza pratica. Piuttosto, è un problema in qualche modo artificiale, costruito appositamente per essere facile per i computer quantistici e difficile per quelli classici.
Esistono due casi principali: il primo caso è che sia la stringa tutta-zero e il secondo caso è che non sia la stringa tutta-zero.
-
Caso 1: Se è la stringa tutta-zero, possiamo semplificare l'affermazione di "se e solo se" nella promessa in modo che reciti Questo è equivalente a dire che è una funzione iniettiva.
-
Caso 2: Se non è la stringa tutta-zero, allora il soddisfacimento della promessa per questa stringa implica che sia due-a-uno, cioè per ogni possibile stringa di output di esistono esattamente due stringhe di input che portano a produrre quella stringa. Inoltre, queste due stringhe di input devono avere la forma e per qualche stringa
È importante riconoscere che può esserci una sola stringa che funziona se la promessa è soddisfatta, quindi c'è sempre una risposta corretta univoca per le funzioni che soddisfano la promessa.
Ecco un esempio di funzione nella forma che soddisfa la promessa per la stringa
Ci sono stringhe di input diverse e stringhe di output diverse, ognuna delle quali appare due volte — quindi questa è una funzione due-a-uno. Inoltre, per qualsiasi coppia di stringhe di input diverse che producono la stessa stringa di output, vediamo che lo XOR bit a bit di queste due stringhe di input è uguale a il che equivale a dire che ognuna di esse è uguale all'altra messa in XOR con
Nota che l'unica cosa che conta delle stringhe di output effettive è se sono uguali o diverse per diverse scelte di stringhe di input. Ad esempio, nell'esempio precedente, ci sono quattro stringhe e che appaiono come output di Potremmo sostituire queste quattro stringhe con stringhe diverse, purché siano tutte distinte, e la soluzione corretta non cambierebbe.
Descrizione dell'algoritmo
Ecco un diagramma di circuito quantistico che rappresenta l'algoritmo di Simon.
Per essere precisi, ci sono qubit in alto su cui agiscono i gate di Hadamard e qubit in basso che entrano direttamente nel gate di query. Somiglia molto agli algoritmi già discussi nella lezione, ma questa volta non c'è phase kickback; gli qubit in basso entrano tutti nel gate di query nello stato
Per risolvere il problema di Simon usando questo circuito saranno necessarie diverse esecuzioni indipendenti seguite da un passaggio di post-elaborazione classica, che verrà descritto in seguito dopo aver analizzato il comportamento del circuito.
Analisi
L'analisi dell'algoritmo di Simon inizia in modo simile all'algoritmo di Deutsch-Jozsa. Dopo che il primo strato di gate di Hadamard viene applicato agli qubit in alto, lo stato diventa
Quando viene applicato l'output della funzione viene messo in XOR sullo stato tutta-zero degli qubit in basso, quindi lo stato diventa
Quando viene applicato il secondo strato di gate di Hadamard, si ottiene il seguente stato usando la stessa formula per l'azione di uno strato di gate di Hadamard vista in precedenza.
A questo punto, l'analisi diverge da quelle degli algoritmi precedenti di questa lezione.
Siamo interessati alla probabilità che le misurazioni producano ogni possibile stringa Attraverso le regole per l'analisi delle misurazioni descritte nella lezione Sistemi multipli del corso Nozioni di base dell'informazione quantistica, troviamo che la probabilità di ottenere la stringa è uguale a
Per capire meglio queste probabilità, abbiamo bisogno di un po' più di notazione e terminologia. Prima di tutto, il range della funzione è l'insieme contenente tutte le sue stringhe di output.
Poi, per ogni stringa possiamo esprimere l'insieme di tutte le stringhe di input che fanno valutare la funzione a questa stringa di output come
L'insieme è noto come la preimmagine di sotto Possiamo definire la preimmagine sotto di qualsiasi insieme al posto di in modo analogo — è l'insieme di tutti gli elementi che mappa in quell'insieme. (Questa notazione non va confusa con l'inversa della funzione che potrebbe non esistere. Il fatto che l'argomento sul lato sinistro sia l'insieme piuttosto che l'elemento è il segnale che ci permette di evitare questa confusione.)
Usando questa notazione, possiamo spezzare la somma nella nostra espressione per le probabilità precedenti per ottenere
Ogni stringa è rappresentata esattamente una volta dalle due sommatorie — stiamo fondamentalmente mettendo queste stringhe in secchi separati a seconda della stringa di output che producono quando valutiamo la funzione e poi sommando separatamente su tutti i secchi.
Ora possiamo calcolare il quadrato della norma euclidea per ottenere
Per semplificare ulteriormente queste probabilità, diamo un'occhiata al valore
per una scelta arbitraria di
Se allora è una funzione iniettiva e c'è sempre un solo elemento per ogni Il valore dell'espressione è in questo caso.
Se invece allora ci sono esattamente due stringhe nell'insieme Per essere precisi, se scegliamo come una qualsiasi di queste due stringhe, allora l'altra stringa deve essere per la promessa nel problema di Simon. Usando questa osservazione possiamo semplificare come segue.