Algoritmo di Shor
Stima di utilizzo: Tre secondi su un processore Eagle r3 (NOTA: Questa è solo una stima. Il vostro tempo di esecuzione potrebbe variare.)
L'algoritmo di Shor, sviluppato da Peter Shor nel 1994, è un algoritmo quantistico rivoluzionario per la fattorizzazione di interi in tempo polinomiale. La sua importanza risiede nella capacità di fattorizzare grandi interi in modo esponenzialmente più veloce rispetto a qualsiasi algoritmo classico conosciuto, minacciando la sicurezza di sistemi crittografici ampiamente utilizzati come RSA, che si basano sulla difficoltà di fattorizzare numeri grandi. Risolvendo efficacemente questo problema su un computer quantistico sufficientemente potente, l'algoritmo di Shor potrebbe rivoluzionare campi come la crittografia, la sicurezza informatica e la matematica computazionale, sottolineando il potere trasformativo del calcolo quantistico.
Questo tutorial si concentra sulla dimostrazione dell'algoritmo di Shor fattorizzando 15 su un computer quantistico.
Prima definiamo il problema della ricerca dell'ordine e costruiamo i circuiti corrispondenti dal protocollo di stima della fase quantistica. Successivamente, eseguiamo i circuiti di ricerca dell'ordine su hardware reale utilizzando i circuiti di profondità minima che possiamo traspilare. L'ultima sezione completa l'algoritmo di Shor collegando il problema della ricerca dell'ordine alla fattorizzazione di interi.
Concludiamo il tutorial con una discussione su altre dimostrazioni dell'algoritmo di Shor su hardware reale, concentrandoci sia su implementazioni generiche sia su quelle adattate per fattorizzare interi specifici come 15 e 21. Nota: Questo tutorial si concentra maggiormente sull'implementazione e la dimostrazione dei circuiti riguardanti l'algoritmo di Shor. Per una risorsa educativa approfondita sul materiale, si prega di fare riferimento al corso Fundamentals of quantum algorithms del Dr. John Watrous, e agli articoli nella sezione Riferimenti.
Requisiti​
Prima di iniziare questo tutorial, assicuratevi di avere installato quanto segue:
- Qiskit SDK v2.0 o successivo, con supporto per la visualizzazione
- Qiskit Runtime v0.40 o successivo (
pip install qiskit-ibm-runtime)
Configurazione​
# Added by doQumentation — required packages for this notebook
!pip install -q numpy pandas qiskit qiskit-ibm-runtime
import numpy as np
import pandas as pd
from fractions import Fraction
from math import floor, gcd, log
from qiskit import QuantumCircuit, QuantumRegister, ClassicalRegister
from qiskit.circuit.library import QFT, UnitaryGate
from qiskit.transpiler import CouplingMap, generate_preset_pass_manager
from qiskit.visualization import plot_histogram
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import SamplerV2 as Sampler
Passo 1: Mappare gli input classici a un problema quantistico​
Contesto​
L'algoritmo di Shor per la fattorizzazione di interi utilizza un problema intermediario noto come problema della ricerca dell'ordine. In questa sezione, dimostriamo come risolvere il problema della ricerca dell'ordine utilizzando la stima della fase quantistica.
Problema della stima della fase​
Nel problema della stima della fase, ci viene dato uno stato quantistico di qubit, insieme a un circuito quantistico unitario che agisce su qubit. Ci viene promesso che è un autovettore della matrice unitaria che descrive l'azione del circuito, e il nostro obiettivo è calcolare o approssimare l'autovalore a cui corrisponde. In altre parole, il circuito dovrebbe restituire un'approssimazione del numero che soddisfa
L'obiettivo del circuito di stima della fase è approssimare in bit. Matematicamente parlando, vorremmo trovare tale che , dove . L'immagine seguente mostra il circuito quantistico che stima in bit effettuando una misura su qubit.
Nel circuito sopra, i qubit superiori sono inizializzati nello stato , e gli qubit inferiori sono inizializzati in , che è promesso essere un autovettore di . Il primo ingrediente nel circuito di stima della fase sono le operazioni unitarie controllate che sono responsabili di eseguire un phase kickback al loro qubit di controllo corrispondente. Queste unitarie controllate sono esponenziate in accordo alla posizione del qubit di controllo, variando dal bit meno significativo al bit più significativo. Poiché è un autovettore di , lo stato degli qubit inferiori non è influenzato da questa operazione, ma l'informazione di fase dell'autovalore si propaga ai qubit superiori.
Si scopre che dopo l'operazione di phase kickback tramite unitarie controllate, tutti i possibili stati dei qubit superiori sono ortonormali tra loro per ogni autovettore dell'unitaria . Pertanto, questi stati sono perfettamente distinguibili, e possiamo ruotare la base che formano indietro alla base computazionale per effettuare una misura. Un'analisi matematica mostra che questa matrice di rotazione corrisponde alla trasformata di Fourier quantistica (QFT) inversa nello spazio di Hilbert a dimensioni. L'intuizione dietro questo è che la struttura periodica degli operatori di esponenziazione modulare è codificata nello stato quantistico, e la QFT converte questa periodicità in picchi misurabili nel dominio delle frequenze.
Per una comprensione più approfondita del motivo per cui il circuito QFT è impiegato nell'algoritmo di Shor, rimandiamo il lettore al corso Fundamentals of quantum algorithms. Siamo ora pronti a utilizzare il circuito di stima della fase per la ricerca dell'ordine.
Problema della ricerca dell'ordine​
Per definire il problema della ricerca dell'ordine, iniziamo con alcuni concetti di teoria dei numeri. Prima di tutto, per qualsiasi intero positivo dato , definiamo l'insieme come Tutte le operazioni aritmetiche in sono eseguite modulo . In particolare, tutti gli elementi che sono coprimi con sono speciali e costituiscono come Per un elemento , il più piccolo intero positivo tale che è definito come l'ordine di modulo . Come vedremo più avanti, trovare l'ordine di un ci permetterà di fattorizzare . Per costruire il circuito di ricerca dell'ordine dal circuito di stima della fase, abbiamo bisogno di due considerazioni. Prima, dobbiamo definire l'unitaria che ci permetterà di trovare l'ordine , e secondo, dobbiamo definire un autovettore di per preparare lo stato iniziale del circuito di stima della fase.
Per collegare il problema della ricerca dell'ordine alla stima della fase, consideriamo l'operazione definita su un sistema i cui stati classici corrispondono a , dove moltiplichiamo per un elemento fisso . In particolare, definiamo questo operatore di moltiplicazione tale che per ogni . Notate che è implicito che stiamo prendendo il prodotto modulo all'interno del ket sul lato destro dell'equazione. Un'analisi matematica mostra che è un operatore unitario. Inoltre, si scopre che ha coppie autovettore-autovalore che ci permettono di collegare l'ordine di al problema della stima della fase. Specificamente, per qualsiasi scelta di , abbiamo che