Algoritmo di Shor
Ora ci occuperemo del problema della fattorizzazione dei numeri interi e vedremo come può essere risolto in modo efficiente su un computer quantistico utilizzando la stima di fase. L'algoritmo che otterremo è l' algoritmo di Shor per la fattorizzazione dei numeri interi. Shor non ha descritto il suo algoritmo specificamente in termini di stima di fase, ma è un modo naturale e intuitivo per spiegarne il funzionamento.
Inizieremo discutendo un problema intermedio noto come problema di ricerca dell'ordine e vedremo come la stima di fase fornisca una soluzione a questo problema. Vedremo poi come una soluzione efficiente al problema della ricerca degli ordini ci dia una soluzione efficiente al problema della fattorizzazione degli interi. (Quando la soluzione di un problema fornisce una soluzione a un altro problema di questo tipo, si dice che il secondo problema si riduce al primo, quindi in questo caso stiamo riducendo la fattorizzazione degli interi alla ricerca di ordini) Questa seconda parte dell'algoritmo di Shor non fa affatto uso dell'informatica quantistica, ma è completamente classica. Il calcolo quantistico è necessario solo per risolvere la ricerca di ordini.
Il problema della ricerca degli ordini
Alcuni concetti fondamentali di teoria dei numeri
Per spiegare il problema della ricerca dell'ordine e il modo in cui può essere risolto utilizzando la stima di fase, sarà utile iniziare con un paio di concetti di base della teoria dei numeri e introdurre alcune notazioni utili lungo il percorso.
Per cominciare, per ogni dato intero positivo definiamo l'insieme in questo modo.
Per esempio, e così via.
Si tratta di insiemi di numeri, ma possiamo considerarli più che insiemi. In particolare, possiamo pensare a operazioni aritmetiche su come l'addizione e la moltiplicazione - e se accettiamo di prendere sempre le nostre risposte modulo (cioè dividere per e prendere il resto come risultato), rimarremo sempre all'interno di questo insieme quando eseguiamo queste operazioni. Le due operazioni specifiche di addizione e moltiplicazione, entrambe prese modulo trasformano in un anello, che è un tipo di oggetto di fondamentale importanza in algebra.
Per esempio, e sono elementi di e se li moltiplichiamo tra loro otteniamo che, diviso per , lascia un resto di A volte lo esprimiamo come segue.
Ma possiamo anche scrivere semplicemente , purché sia chiaro che stiamo lavorando in , per mantenere la notazione più semplice possibile.
A titolo di esempio, ecco le tabelle di addizione e moltiplicazione di
Tra gli elementi di sono speciali gli elementi che soddisfano . Spesso l'insieme che contiene questi elementi viene indicato con una stella, come in questo caso.
Se concentriamo la nostra attenzione sull'operazione di moltiplicazione, l'insieme forma un gruppo - in particolare un gruppo abeliano - che è un altro importante tipo di oggetto in algebra. È un fatto fondamentale di questi insiemi (e dei gruppi finiti in generale), che se scegliamo un elemento qualsiasi e moltiplichiamo ripetutamente a se stesso, alla fine otterremo sempre il numero
Per un primo esempio, prendiamo Abbiamo che perché e se moltiplichiamo a se stesso otteniamo come conferma la tabella precedente.
Come secondo esempio, prendiamo Se scorriamo i numeri da a quelli che hanno GCD uguale a con sono i seguenti.
Per ciascuno di questi elementi, è possibile elevare il numero a una potenza intera positiva per ottenere Ecco le potenze più piccole per le quali funziona:
Naturalmente, per tutte queste equazioni lavoriamo all'interno di , che non ci siamo presi la briga di scrivere: lo consideriamo implicito per non appesantire le cose. Continueremo a farlo nel resto della lezione.
Descrizione del problema e collegamento alla stima di fase
Ora possiamo enunciare il problema della ricerca dell'ordine.
Input: numeri interi positivi e soddisfacenti \ Output: il più piccolo intero positivo tale che
In alternativa, in termini di notazione appena introdotta sopra, ci viene dato e stiamo cercando il più piccolo intero positivo tale che Questo numero è chiamato ordine di modulo
Per collegare il problema dell'order-finding alla stima della fase, pensiamo all'operazione definita su un sistema i cui stati classici corrispondono a dove moltiplichiamo per un elemento fisso
Per essere chiari, stiamo facendo la moltiplicazione in , quindi è implicito che stiamo prendendo il prodotto modulo all'interno del ket sul lato destro dell'equazione.
Ad esempio, se prendiamo e , l'azione di sulla base standard è la seguente.
Si tratta di un'operazione unitaria a condizione che rimescoli gli elementi della base standard quindi come matrice è una matrice di permutazione. È evidente dalla sua definizione che questa operazione è deterministica e un modo semplice per vedere che è invertibile è pensare all'ordine di modulo e riconoscere che l'inverso di è
C'è un altro modo di pensare all'inverso che non richiede alcuna conoscenza di (che, dopo tutto, è ciò che stiamo cercando di calcolare). Per ogni elemento c'è sempre un unico elemento che soddisfa Questo elemento viene indicato con e può essere calcolato in modo efficiente; un'estensione dell'algoritmo GCD di Euclide lo fa con un costo quadratico in E quindi
Quindi, l'operazione è sia deterministica che invertibile. Ciò implica che è descritto da una matrice di permutazione e quindi è unitario.
Ora pensiamo agli autovettori e agli autovalori dell'operazione assumendo che Come appena argomentato, questa ipotesi ci dice che è unitario.
Ci sono autovalori di che possono includere lo stesso autovalore ripetuto più volte, e in generale c'è una certa libertà nella selezione degli autovalori corrispondenti - ma non dovremo preoccuparci di tutte le possibilità. Iniziamo in modo semplice e identifichiamo un solo autovettore di
Il numero è l'ordine di modulo qui e nel resto della lezione. L'autovalore associato a questo autovalore è perché non viene modificato quando si moltiplica per
Questo accade perché quindi ogni stato base standard viene spostato a per e viene spostato di nuovo a In termini informali, è come se stessimo mescolando lentamente ma è già completamente mescolato, quindi non cambia nulla.
Ecco un altro esempio di autovettore di Questo è più interessante nel contesto della ricerca dell'ordine e della stima della fase.
In alternativa, possiamo scrivere questo vettore utilizzando una sommatoria come segue.
In questo caso il numero complesso appare naturalmente, grazie al modo in cui la moltiplicazione per funziona modulo Questa volta l'autovalore corrispondente è Per vedere questo, possiamo prima calcolare come segue.
Allora, poiché e vediamo che
così
Utilizzando lo stesso ragionamento, possiamo identificare ulteriori coppie autovettore/autovalore per Per qualsiasi scelta di si ha che
è un autovettore di il cui autovalore corrispondente è
Esistono altri autovettori di , ma non è il caso di occuparsene: ci concentreremo solo sugli autovettori che abbiamo appena identificato.
Ricerca dell'ordine tramite stima di fase
Per risolvere il problema della ricerca dell'ordine per una data scelta di possiamo applicare la procedura di stima della fase all'operazione
Per fare ciò, dobbiamo implementare in modo efficiente con un circuito quantistico non solo , ma anche e così via, spingendoci fino a dove è necessario per ottenere una stima sufficientemente precisa dalla procedura di stima della fase. Qui spiegheremo come si può fare e in seguito capiremo esattamente quanta precisione è necessaria.
Cominciamo con l'operazione da sola. Naturalmente, poiché stiamo lavorando con il modello dei circuiti quantistici, useremo la notazione binaria per codificare i numeri compresi tra e Il numero più grande che dobbiamo codificare è , quindi il numero di bit necessari è
Ad esempio, se abbiamo Ecco come appare la codifica degli elementi di come stringhe binarie di lunghezza .
Ed ecco una definizione precisa di come sia definito come un'operazione -qubit.
Il punto è che, sebbene ci interessi solo il funzionamento di per , dobbiamo specificare come funziona per i restanti stati base standard di - e dobbiamo farlo in modo da ottenere un'operazione unitaria. Definendo in modo che non influisca sugli altri stati base standard, si ottiene questo risultato.
Utilizzando gli algoritmi per la moltiplicazione e la divisione di interi discussi nella lezione precedente, insieme alla metodologia per le loro implementazioni reversibili e prive di spazzatura, possiamo costruire un circuito quantistico che esegua per qualsiasi scelta di al costo Ecco un modo per farlo.
- Costruire un circuito per eseguire l'operazione
Dove
utilizzando il metodo descritto nella lezione precedente. Si ottiene così un circuito di dimensioni
-
Scambiare i due sistemi -qubit utilizzando le porte di scambio per scambiare i qubit individualmente.
-
In modo simile al primo passo, costruite un circuito per l'operazione
dove è l'inverso di in
Inizializzando i qubit del fondo e componendo i tre passaggi, otteniamo questa trasformazione:
Il metodo richiede i qubit dello spazio di lavoro, ma alla fine vengono riportati allo stato inizializzato, il che ci permette di usare questi circuiti per la stima della fase. Il costo totale del circuito che otteniamo è
Per eseguire e così via, possiamo usare esattamente lo stesso metodo, tranne che per il fatto che sostituiamo con e così via, come elementi di Cioè, per qualsiasi potenza che scegliamo, possiamo creare un circuito per non iterando per il circuito per , ma calcolando e poi utilizzando il circuito per
Il calcolo delle potenze è il problema dell' esponenziazione modulare menzionato nella lezione precedente. Questo calcolo può essere eseguito in modo classico, utilizzando l'algoritmo per l'esponenziazione modulare citato nella lezione precedente (spesso chiamato algoritmo della potenza nella teoria dei numeri computazionali). In effetti, è necessario solo power-of-2 potenze di in particolare e possiamo ottenere queste potenze con una quadratura iterativa di volte. Ogni quadratura può essere eseguita da un circuito booleano di dimensione
In sostanza, stiamo scaricando il problema dell'iterazione di fino a volte su un calcolo classico efficiente. Ed è una fortuna che questo sia possibile! Per una scelta arbitraria di un circuito quantistico nel problema della stima di fase, questo non è probabilmente possibile - e in tal caso il costo risultante per la stima di fase cresce esponenzialmente nel numero di qubit di controllo
Soluzione data un vettore proprio conveniente
Per capire come si può risolvere il problema dell'order-finding utilizzando la stima di fase, iniziamo supponendo che eseguiamo la procedura di stima della fase sull'operazione utilizzando l'autovettore Mettere le mani su questo autovettore non è facile, quindi la storia non finisce qui, ma è utile iniziare da qui.
L'autovalore di corrispondente all'autovettore è
Cioè, per Quindi, se eseguiamo la procedura di stima della fase su utilizzando l'autovalore otterremo un'approssimazione a Calcolando il reciproco saremo in grado di imparare - a patto che la nostra approssimazione sia sufficientemente buona.
Più in dettaglio, quando si esegue la procedura di stima della fase utilizzando i qubit di controllo di , si ottiene un numero Prendiamo quindi come ipotesi per , che nel caso in esame è . Per capire qual è da questa approssimazione, la cosa più naturale da fare è calcolare il reciproco della nostra approssimazione e arrotondare al numero intero più vicino.
Ad esempio, supponiamo che ed eseguiamo la stima di fase su con l'autovettore utilizzando i bit di controllo di . La migliore approssimazione -bit a è e abbiamo una buona probabilità (circa in questo caso) di ottenere il risultato dalla stima di fase. Abbiamo
e arrotondando al numero intero più vicino si ottiene , che è la risposta corretta.
D'altra parte, se non usiamo abbastanza precisione, potremmo non ottenere la risposta giusta. Per esempio, se prendiamo qubit di controllo nella stima della fase, potremmo ottenere la migliore approssimazione di -bit a che è Prendendo il reciproco si ottiene
e arrotondando al numero intero più vicino si ottiene una risposta errata di
Di quanta precisione abbiamo bisogno per ottenere la risposta giusta? Sappiamo che l'ordine è un numero intero e, intuitivamente, ciò di cui abbiamo bisogno è una precisione sufficiente per distinguere dalle possibilità vicine, tra cui e Il numero più vicino a di cui dobbiamo preoccuparci è e la distanza tra questi due numeri è
Quindi, se vogliamo essere sicuri di non confondere con , è sufficiente utilizzare una precisione sufficiente a garantire che una migliore approssimazione tra e sia più vicina a di quanto non lo sia a Se usiamo una precisione tale da garantire che
in modo che l'errore sia inferiore alla metà della distanza tra e allora sarà più vicino a che a qualsiasi altra possibilità, comprese e
Possiamo verificarlo come segue. Supponiamo che
per che soddisfa
Prendendo il reciproco si ottiene
Massimizzando al numeratore e minimizzando al denominatore, possiamo stabilire quanto siamo lontani da come segue.
Siamo a meno di da quindi, come previsto, otterremo quando arrotonderemo.
Sfortunatamente, poiché non sappiamo ancora cosa sia , non possiamo usarlo per dirci di quanta precisione abbiamo bisogno. Si può invece utilizzare il fatto che deve essere più piccolo di per assicurarsi di utilizzare una precisione sufficiente. In particolare, se utilizziamo un'accuratezza sufficiente a garantire che la migliore approssimazione a soddisfi
allora avremo una precisione sufficiente per determinare correttamente quando prendiamo il reciproco. L'utilizzo di garantisce un'alta probabilità di ottenere una stima con questa precisione con il metodo descritto in precedenza. (L'assunzione di è sufficiente se ci sentiamo a nostro agio con un limite inferiore del 40% sulla probabilità di successo)
Soluzione generale
Come abbiamo appena visto, se disponiamo dell'autovettore di possiamo imparare attraverso la stima di fase, a patto di utilizzare un numero di qubit di controllo sufficiente per farlo con sufficiente precisione. Purtroppo non è facile mettere le mani sull'autovettore e quindi dobbiamo capire come procedere.
Supponiamo momentaneamente di procedere come sopra, ma con l'autovettore al posto di per qualsiasi scelta di che decidiamo di pensare. Il risultato che si ottiene dalla procedura di stima della fase sarà un'approssimazione
Partendo dal presupposto che non conosciamo né né , questo potrebbe o meno permetterci di identificare Ad esempio, se otteniamo un'approssimazione da a che purtroppo non ci dice nulla. Questo, tuttavia, è un caso insolito; per altri valori di saremo almeno in grado di imparare qualcosa su
Possiamo utilizzare un algoritmo noto come algoritmo della frazione continua per trasformare la nostra approssimazione in frazioni vicine, inclusa se l'approssimazione è sufficientemente buona. Non spiegheremo qui l'algoritmo della frazione continua. Invece, ecco una dichiarazione di un fatto noto su questo algoritmo.
Dato un intero e un numero reale esiste al massimo una scelta di interi con e soddisfacenti Dati e l' algoritmo delle frazioni continue trova e o segnala che non esistono. Questo algoritmo può essere implementato come un circuito booleano di dimensione
Se abbiamo un'approssimazione molto stretta di a ed eseguiamo l'algoritmo della frazione continua per e otterremo e come sono descritti nel fatto. L'analisi del fatto ci permette di concludere che
Si noti in particolare che non impariamo necessariamente e ma solo nei termini più bassi.
Per esempio, come abbiamo già notato, non impareremo nulla da Ma questo è l'unico valore di in cui ciò accade. Quando è non nullo, potrebbe avere fattori comuni con ma il numero che otteniamo dall'algoritmo delle frazioni continue deve almeno dividere
È tutt'altro che ovvio, ma è vero che se abbiamo la capacità di imparare e per per scelti uniformemente a caso, allora è molto probabile che siamo in grado di recuperare dopo pochi campioni. In particolare, se la nostra ipotesi per è il multiplo meno comune di tutti i valori del denominatore che osserviamo, avremo ragione con alta probabilità. Intuitivamente, alcuni valori di non vanno bene perché condividono fattori comuni con e questi fattori comuni ci vengono nascosti quando impariamo a conoscere e Ma le scelte casuali di non possono nascondere a lungo i fattori di e la probabilità di non indovinare correttamente prendendo il minimo comune multiplo dei denominatori osservati diminuisce esponenzialmente con il numero di campioni.
Rimane da affrontare il problema di come mettere le mani su un autovettore di su cui eseguire la procedura di stima della fase. In realtà non abbiamo bisogno di crearli!
Si eseguirà invece la procedura di stima della fase sullo stato , intendendo con questo termine la codifica binaria a bit del numero al posto di un autovettore di Finora abbiamo parlato solo di eseguire la procedura di stima della fase su un particolare autovettore, ma nulla ci impedisce di eseguire la procedura su uno stato di ingresso che non sia un autovettore di ed è quello che stiamo facendo qui con lo stato (Questo non è un autovettore di , a meno che non sia una scelta che ci interessa)
La ragione per cui si sceglie lo stato al posto di un autovettore di è che la seguente equazione è vera.
Un modo per verificare questa equazione è quello di confrontare i prodotti interni dei due lati con ogni stato base standard, utilizzando le formule menzionate in precedenza nella lezione per aiutare a valutare i risultati per il lato destro. Di conseguenza, otterremo esattamente gli stessi risultati di misurazione che avremmo ottenuto se avessimo scelto in modo uniformemente casuale e utilizzato come autovalore.
In dettaglio, immaginiamo di eseguire la procedura di stima della fase con lo stato al posto di uno degli autovettori Dopo aver eseguito la trasformata quantistica inversa di Fourier, si ottiene lo stato
Dove
Il vettore rappresenta lo stato dei qubit top dopo che su di essi è stata eseguita l'inversa della trasformata quantistica di Fourier.
Quindi, in virtù del fatto che è un insieme ortonormale, troviamo che una misura dei qubit superiori produce un'approssimazione al valore dove è scelto in modo uniforme e casuale produce un'approssimazione al valore dove è scelto uniformemente a caso. Come abbiamo già detto, questo ci permette di imparare con un alto grado di confidenza dopo diverse esecuzioni indipendenti, che era il nostro obiettivo.
Costo totale
Il costo per l'implementazione di ogni operazione controllata-unitaria è Ci sono operazioni controllate-unitarie, e abbiamo quindi il costo totale per le operazioni controllate-unitarie è Inoltre, abbiamo porte di Hadamard (che contribuiscono al costo) e la trasformata quantistica di Fourier inversa contribuisce al costo. In questo modo, il costo delle operazioni controllate-unitarie domina il costo dell'intera procedura - che quindi è
Oltre al circuito quantistico stesso, ci sono alcuni calcoli classici che devono essere eseguiti lungo il percorso. Questo include il calcolo delle potenze in per , necessarie per creare le porte unitarie controllate, nonché l'algoritmo della frazione continua che converte le approssimazioni di in frazioni. Queste computazioni possono essere eseguite da circuiti booleani con un costo totale di
Come è tipico, tutti questi limiti possono essere migliorati utilizzando algoritmi asintoticamente veloci; questi limiti presuppongono l'utilizzo di algoritmi standard per le operazioni aritmetiche di base.
Factoring su ordine trovato
L'ultima cosa da discutere è il modo in cui la soluzione del problema della ricerca dell'ordine ci aiuta a fattorizzare. Questa parte è completamente classica e non ha nulla a che fare con l'informatica quantistica.
Ecco l'idea di base. Vogliamo fattorizzare il numero e possiamo farlo in modo ricorsivo. In particolare, possiamo concentrarci sul compito di dividere , che significa trovare due interi per i quali è un numero primo Questo non è possibile se è un numero primo, ma possiamo verificare in modo efficiente se è primo usando prima un algoritmo di verifica della primalità, e se non è primo proveremo a dividerlo. Una volta diviso possiamo semplicemente ricorreggere su e fino a quando tutti i nostri fattori sono primi e otteniamo la fattorizzazione prima di
Dividere i numeri interi pari è facile: basta produrre e
È anche facile dividere le potenze perfette, cioè i numeri della forma per i numeri interi semplicemente approssimando le radici e così via, e controllando i numeri interi vicini come sospetti per le potenze perfette approssimando le radici e così via, e verificando i numeri interi vicini come sospetti per Non abbiamo bisogno di andare oltre passi in questa sequenza, perché a quel punto la radice scende sotto e non rivelerà ulteriori candidati.
È bene poter fare entrambe le cose, perché la ricerca dell'ordine non ci aiuterà a fattorizzare i numeri pari o le potenze prime, dove il numero è un numero primo. Se è dispari e non è una potenza prima, tuttavia, la ricerca dell'ordine ci permette di dividere
-
Scegliere a caso
-
Calcolo
-
Se , allora emette e e si ferma. Altrimenti, proseguire con il passo successivo sapendo che
-
Sia l'ordine di modulo (qui è necessario trovare un ordine)
-
Se è pari:
5.1 Calcolo di modulo \ 5.2 Calcolare \ 5.3 Se , allora produce e e si ferma.
-
Se si raggiunge questo punto, l'algoritmo non è riuscito a trovare un fattore di
Un'esecuzione di questo algoritmo può fallire nel trovare un fattore di In particolare, ciò accade in due situazioni:
- L'ordine di modulo è dispari.
- L'ordine di modulo è pari e
Utilizzando la teoria dei numeri di base si può dimostrare che, per una scelta casuale di con probabilità almeno , nessuno di questi eventi si verifica. Infatti, la probabilità che si verifichi uno dei due eventi è al massimo per che è il numero di fattori primi distinti di ed è per questo che è necessaria l'ipotesi che non sia una potenza prima. (Perché questo fatto sia vero è necessaria anche l'ipotesi che sia dispari)
Ciò significa che ogni esecuzione ha almeno il 50% di probabilità di dividere Pertanto, se eseguiamo l'algoritmo volte, scegliendo casualmente ogni volta, riusciremo a dividere con una probabilità di almeno
L'idea di base dell'algoritmo è la seguente. Se abbiamo una scelta di per la quale l'ordine di modulo è pari, allora è un intero e possiamo considerare i numeri
Utilizzando la formula si conclude che
Ora, sappiamo che per la definizione di ordine - che è un altro modo di dire che divide uniformemente Ciò significa che divide uniformemente il prodotto
Perché questo sia vero, tutti i fattori primi di devono essere anche fattori primi di o (o di entrambi) - e per una selezione casuale di risulta improbabile che tutti i fattori primi di dividano uno dei termini e nessuno divida l'altro. Altrimenti, se alcuni dei fattori primi di dividono il primo termine e alcuni dividono il secondo termine, saremo in grado di trovare un fattore non banale di calcolando il GCD con il primo termine.