Quantum Computing per Principianti Assoluti

Quantum Computing per Principianti Assoluti Guida completa

Guida ai principi di base della computazione quantistica senza alcuna conoscenza preliminare richiesta

Una criostato IBM Quantum utilizzata per mantenere freddo il computer quantistico a 50 qubit di IBM nel laboratorio IBM Quantum a Yorktown Heights, New York. Fonte: https://www.flickr.com/photos/ibm_research_zurich/40786969122

Alcuni hanno descritto gli ultimi millenni di dominio umano sulle risorse del pianeta come l’antropocene, derivante dal greco “anthropo” che significa umano, e “cene” che significa recente. Il secolo scorso in particolare è stato soprannominato la quarta rivoluzione industriale, a causa del ritmo di innovazione tecnologica introdotto dalla comparsa dei computer a metà del ventesimo secolo.

Negli ultimi settant’anni, l’informatica ha trasformato ogni aspetto della società, consentendo una produzione efficiente a un ritmo accelerato, spostando il lavoro umano dalla produzione principalmente ai servizi e aumentando in modo esponenziale la memorizzazione, la generazione e la trasmissione delle informazioni attraverso le telecomunicazioni.

Come siamo arrivati qui? Fondamentalmente, l’avanzamento tecnologico si basa sulla scienza esistente. Senza una comprensione della natura dell’elettromagnetismo e della struttura degli atomi, non avremmo l’elettricità e i circuiti integrati che alimentano i computer. Era solo questione di tempo, quindi, prima di pensare di sfruttare la descrizione fisica più accurata e fondamentale della realtà fornita dalla meccanica quantistica per la computazione.

Mi sono interessato alla computazione quantistica sia per un forte interesse per la fisica che per la natura della computazione. Se avesse successo, la computazione quantistica potrebbe aprire un capitolo senza precedenti nell’era dell’informazione, aumentando in modo esponenziale l’efficienza dei computer attuali. Come appassionato di dati, computazione e scienza delle informazioni, comprendere le rudimentali informazioni quantistiche non solo ti fornirà una comprensione molto basilare della fisica quantistica, ma ti preparerà anche per la prossima grande frontiera tecnologica dell’era dell’informazione.

Fenomeni quantistici e informazioni quantistiche

Per capire i concetti fondamentali della computazione, è necessario avere una comprensione di base dei fenomeni fisici che la computazione quantistica sfrutta.

I fenomeni in questione sono lo spin dell’elettrone e la polarizzazione della luce, quest’ultima rappresentando un altro termine per lo spin del fotone. Ricordiamo che gli elettroni sono particelle subatomiche con carica negativa che circondano un nucleo con carica positiva, mentre i fotoni sono equivalenti di particelle di elettromagnetismo o luce. Lo spin dell’elettrone e del fotone sono collegati poiché entrambi si riferiscono a proprietà quantistiche che non hanno un analogo nella meccanica classica, che descrive la scala degli oggetti di tutti i giorni.

Tuttavia, il modo più semplice per introdurre lo spin è stabilire un confronto con una proprietà classica chiamata momento angolare. Il momento angolare si riferisce all’equivalente rotazionale del momento lineare in un sistema classico, dove il momento è calcolato come prodotto di massa e velocità. Pertanto, il momento è una quantità vettoriale in quanto possiede sia magnitudine che direzione. Il momento angolare è rappresentato come il prodotto vettoriale delle posizioni e dei momenti di un particella. Poiché il momento angolare è una proprietà classica, ammette valori continui e può essere espresso come integrale di volume (generalizzato dall’integrale come area sottesa dalla curva in due dimensioni).

Lo spin è spesso definito come il momento angolare intrinseco. Ricordiamo che nella meccanica classica la forza è definita come il cambiamento di momento. Inoltre, l’energia del sistema è definita in termini di movimento o del tasso di cambiamento del movimento, che presuppone la massa. A differenza della meccanica classica, la teoria della relatività ristretta di Einstein attribuisce un’energia intrinseca alla massa a riposo attraverso l’uguaglianza E = mc². Allo stesso modo, il momento angolare intrinseco è strettamente legato allo stato energetico intrinseco di una particella subatomica. Infatti, è una proprietà che le particelle elementari possiedono che siano effettivamente in rotazione o meno, cioè indipendentemente da fattori estrinseci come il momento e la posizione, da qui il termine intrinseco. Come il momento angolare classico, lo spin quantistico cambia con le rotazioni. Tuttavia, a differenza del momento angolare classico, lo spin è quantizzato, il che significa che ammette solo un insieme discreto di valori.

Il massimo spin di una particella elementare è dato dal prodotto di n (qualsiasi intero semi-intero n/2) e la costante di Planck ridotta ℏ (h/2𝜋) . Tutte le particelle ordinarie, chiamate fermioni, hanno uno spin di semi-interno (1/2), mentre le particelle che trasportano la forza, note come bosoni, come il fotone, hanno uno spin intero (1). Sia gli elettroni che i fotoni hanno due possibili stati di spin: “su” o “giù”. In termini matematici, gli elettroni avranno uno spin massimo di 1/2ℏ o -1/2ℏ, cioè lo spin nelle “rotazioni” positive o negative. Il fotone avrà uno spin massimo di 1ℏ e -1ℏ, poiché assume valori di spin interi. Anche se stiamo usando la parola “rotazione”, è meglio non pensarci in termini di trasformazioni spaziali.

Ora diamo uno sguardo alle strane proprietà quantistiche che verranno sfruttate per la computazione quantistica. Abbiamo notato in precedenza che l’elettrone può avere due possibili stati di spin, ma in che stato si trova in un dato momento? È qui che è utile fare una distinzione tra lo stato del sistema e la misurazione. Nella meccanica classica, stato e misurazione coincidono perfettamente: lo stato del sistema è ciò che si misura. Non così nella meccanica quantistica. Lo stato del sistema senza misurazione è dato da una sovrapposizione coerente di funzioni d’onda 𝛹i . Dopo la misurazione, lo stato del sistema sarà dato da 𝛹↓ o 𝛹↑, se stiamo misurando una singola particella. Questa disgiunzione tra stato e misurazione consente ai computer quantistici di eseguire operazioni che possono assumere valori infiniti in spazi vettoriali complessi bidimensionali.

Infine, le misurazioni obbediscono a determinate regole relative al modo in cui viene effettuata la misurazione. In particolare, la direzione della misurazione influisce sul risultato. Supponiamo che abbiamo due direzioni: verticale e orizzontale. Se misuriamo lo spin di un elettrone nella direzione verticale, otterremo uno stato di spin su o giù. Se effettuiamo la stessa misurazione esatta, cioè misuriamo nuovamente lo spin nella direzione verticale, otterremo lo stesso risultato. Ciò dimostra che esiste una configurazione sperimentale che produce risultati prevedibili. Tuttavia, se prima misuriamo lo spin dell’elettrone nella direzione verticale e successivamente nella direzione orizzontale e ripetiamo la misurazione, i risultati saranno una sequenza casuale di spin su o giù che si distribuiscono uniformemente tra i due con un numero sufficiente di prove. Ciò significa che, se non siamo attenti, le misurazioni quantistiche possono produrre risultati casuali. Lo scopo degli algoritmi quantistici sarà di controllare le operazioni in modo da ottenere i risultati desiderati.

Anche se qubit, le unità informative della computazione quantistica, possono essere rappresentati sia dallo spin dell’elettrone che dallo spin del fotone, utilizzeremo il primo come analogia fisica della computazione quantistica in futuro.

Dai fenomeni quantistici alla computazione quantistica

L’unità informativa fondamentale di un computer classico è chiamata bit, che ha due stati discreti spesso rappresentati come 0 o 1. Poiché il computer è una macchina fisica, questa astrazione matematica deve essere mappata su qualche fenomeno fisico. I computer classici mappano questi stati discreti su una corrente o tensione in movimento. Quando la tensione è bassa o vicina a zero, la usiamo per rappresentare lo stato 0 e quando la tensione è più alta, la usiamo per rappresentare l’1. In altre parole, le modulazioni delle magnitudini delle tensioni ci consentono di realizzare meccanicamente un sistema binario di rappresentazione. Le sequenze di questi stati a bassa tensione e ad alta tensione vengono successivamente organizzate in circuiti elettrici che simulano operazioni logiche come AND, XOR, ecc., chiamate porte logiche. Le combinazioni di operazioni logiche attraverso circuiti elettrici vengono successivamente strutturate per eseguire qualsiasi algoritmo calcolabile.

Ora che vediamo che i computer classici sfruttano l’elettricità per realizzare calcoli, ci aiuta a capire come potrebbe funzionare un computer quantistico. A differenza di un computer classico, un computer quantistico sfrutta fenomeni su scala quantistica o subatomica per effettuare calcoli. Mentre la tensione nel nostro quotidiano macroscala viene misurata come una variabile continua, la meccanica quantistica ci dice che a scala subatomica questo non è realmente il caso. Piuttosto, da tutti gli account sperimentali, le particelle subatomiche sembrano occupare solo stati energetici discreti. Questo significa che un elettrone e un fotone possono occupare alcuni stati energetici e non altri. Questo contraddice le nostre intuizioni sul fatto che gli oggetti fisici possano occupare qualsiasi stato energetico continuo. Ad esempio, mentre solitamente pensiamo al tempo come una variabile completamente continua che può essere infinitamente divisa, questo non è affatto il caso per gli stati energetici delle particelle subatomiche.

Ciò ha la peculiare conseguenza che le particelle subatomiche non possono essere descritte come possedenti posizioni e momenti fissi. Sebbene possiamo provare a descrivere contemporaneamente queste variabili, esiste una scala fisica in cui la precisione si deteriora in modo tale che conoscere il momento significa perdere traccia della posizione e viceversa. Tale scala fisica è chiamata scala di Planck e indicata da h: 6.626070 · 10⁻³⁴ m²kg/s e rappresenta la soglia fisica tra fenomeni su scala classica e scala quantistica. A questa scala, ancora una volta da tutte le prove sperimentali, le particelle subatomiche occupano contemporaneamente tutti i loro possibili stati. A causa di questa proprietà, possiamo descrivere solo le particelle subatomiche come distribuzioni di probabilità di tutti i loro possibili stati descritti dall’equazione di Schrödinger. Come abbiamo sottolineato in precedenza, esiste tuttavia una seconda descrizione chiamata misurazione. Prima della misurazione, la particella esiste in uno stato di sovrapposizione come descritto dalla funzione d’onda di Schrödinger. Dopo la misurazione, la particella collassa a uno stato discreto di una posizione o un’altra. La computazione quantistica sfrutta questa proprietà peculiare della meccanica quantistica per eseguire calcoli, ovvero sfruttando sia lo stato di sovrapposizione che lo stato di misurazione. (Se vuoi capire chiaramente le basi sperimentali dell’oggettività della sovrapposizione, leggi questo).

Quindi, se un computer classico costruisce calcoli da due possibili stati discreti, possiamo pensare a un computer quantistico come costruente calcoli da stati discreti così come sovrapposizioni. Un qubit può essere nello stato 0 o 1 quando lo misuriamo. Tuttavia, prima della misurazione, il qubit è in una sovrapposizione di 0 e 1. Durante la sovrapposizione, il qubit può occupare un numero infinito di stati. Sfruttando le leggi della meccanica quantistica, il calcolo quantistico supera le capacità computazionali del calcolo classico il cui spazio degli stati è confinato a 2^n. Per essere sicuri, la misurazione riduce gli stati quantistici a stati classici, cioè lo stesso spazio degli stati di 2^n. In che modo, quindi, il calcolo quantistico conferisce vantaggi che sfuggono al calcolo classico?

Come vedremo di seguito, gli algoritmi quantistici consentono operazioni controllate nello stato di sovrapposizione che ci permettono di ottenere risposte utili dopo la misurazione. Gli scienziati informatici definiscono la complessità di un algoritmo rispetto ai passaggi temporali necessari per risolverlo. Se n indica la lunghezza di input dell’algoritmo e T(n) il tempo per risolverlo, allora la complessità si riferisce alla funzione che descrive la crescita di T(n). Se T(n) equivale a un polinomio, allora l’algoritmo è detto appartenere a un problema di classe di tempo polinomiale. Se T(n) equivale a una funzione esponenziale, allora appartiene a un problema di classe di tempo esponenziale. Quelli che appartengono al tempo esponenziale, come la fattorizzazione in numeri primi di numeri grandi, sono irrisolvibili per i computer classici, poiché il tempo richiesto per risolvere il problema aumenta in modo esponenziale e può facilmente superare i limiti di tempo umani.

La promessa del calcolo quantistico risiede in parte nella capacità di risolvere problemi di tempo esponenziale in modo sufficientemente veloce.

Rappresentazione dei Qubit: Algebra lineare

Per capire il calcolo quantistico, dobbiamo capire parte della matematica alla base della rappresentazione dei qubit. Gli strumenti matematici devono corrispondere ai fenomeni sottostanti su cui mappiamo i calcoli, principalmente l’algebra lineare.

Rappresentiamo i qubit con vettori unitari bidimensionali.

Cos’è un vettore?

Un vettore è una quantità che viene espressa da almeno due valori: una magnitudine e una direzione. La magnitudine di un vettore è data dalla distanza euclidea, mentre la direzione è data dal punto di partenza. (1,-3) ad esempio rappresenta un vettore bidimensionale, con una lunghezza di 3,162 e una direzione data dal valore x.

Cos’è un vettore unitario?

Un vettore unitario è un vettore con lunghezza o magnitudine uguale a 1. Ad esempio <0,1> è un vettore unitario perché se calcoliamo la distanza euclidea usando il teorema di Pitagora otteniamo il valore 1.

Perché vettori unitari bidimensionali?

Dal momento che ci sono due possibili risultati di misurazione della rotazione dell’elettrone, uno spazio vettoriale bidimensionale rappresentato da ℝ² sarà sufficiente. Utilizziamo vettori unitari perché vogliamo limitare gli esiti della misurazione a due possibili valori: 0 o 1. Come vedremo, le operazioni che eseguiremo sui qubit saranno rotate su un piano unitario. Tuttavia, lo spazio dei possibili risultati dovrebbe includere tutte le possibili rotazioni su una sfera tridimensionale il cui spazio sottostante è ancora bidimensionale, indicando i due possibili risultati della misurazione. Per fare ciò, rappresentiamo i vettori come numeri complessi anziché come numeri reali, indicati dallo spazio vettoriale complesso ℂ². (I numeri complessi sono qualsiasi operazione che coinvolge numeri reali e numeri immaginari, in cui un numero immaginario i è uguale a √-1) Per semplicità, per ora aderiremo a ℝ² e eviteremo i numeri complessi.

Per limitare gli esiti a due possibili valori, abbiamo bisogno di più che solo vettori unitari. Abbiamo bisogno di coppie di vettori unitari che siano ortogonali tra di loro. Due vettori sono ortogonali tra di loro solo se il loro prodotto interno o dot product è uguale a zero. Quando le combinazioni di vettori unitari sono ortogonali tra di loro, le chiamiamo base ortonormale, combinando la parola “normale” che sta per vettori unitari e ortogonale.

Ortogonalità: Due vettori sono ortogonali solo se il loro prodotto è uguale a zero: <a|b> = 0.

Possiamo verificare che qualsiasi ket di n dimensioni sia una base ortonormale se il prodotto della matrice A e della sua trasposta A^T è uguale a una matrice identità In.

Notazione con Parentesi Angolari

Prima di descrivere queste basi, diciamo qualche parola sulla notazione standard utilizzata nell’algebra lineare in modo che tu sia in grado di interpretare correttamente i simboli.

I vettori colonna sono chiamati bras, mentre i vettori riga sono chiamati kets e vengono indicati come segue: <a| & |b>, dove:

i bras sono vettori riga, mentre i kets sono vettori colonna.

Insieme, formano i bra-ket. Dalla regola del prodotto scalare (cioè la moltiplicazione di vettori), possiamo moltiplicare solo bras con kets a condizione che abbiano la stessa dimensionalità.

Il prodotto interno del bra-ket sopra è rappresentato da <a|b> e indica:

prodotto scalare di due vettori unitari.

Tuttavia, i vettori dello stesso tipo (bra o ket) della stessa dimensione possono essere sommati.

Invece di utilizzare valori effettivi, possiamo utilizzare frecce per rappresentare i tipi di coppie ortogonali rilevanti per la misurazione dello spin dell’elettrone.

Ci sono tre basi ortogonali per lo spin:

tre basi ortogonali bidimensionali utilizzate per misurare lo spin (Berhardt, 2019).

Quando moltiplichiamo bras e kets dello stesso spin, otteniamo un valore di 1:

I bra-ket ortogonali uguali hanno un prodotto scalare di 1.

Al contrario, quando moltiplichiamo bras e kets di spin opposto, otteniamo un valore di 0:

I bra-ket ortogonali opposti hanno un prodotto scalare di 0.

Come puoi vedere, i prodotti in parentesi ortogonali ci danno misurazioni che simulano risultati binari.

La prima base, rappresentata dalle frecce su e giù, è chiamata base standard e corrisponde alla misurazione verticale dello spin, cioè la misurazione lungo l’asse y. La seconda base, rappresentata dalle frecce destra e sinistra, corrisponde alla misurazione orizzontale dello spin, cioè la misurazione lungo l’asse x. In generale, basi ortogonali ordinate rappresentano la misurazione dello spin lungo una determinata direzione. Infatti, possiamo misurare lo spin ad un qualsiasi angolo o direzione 𝛳 e l’output si ridurrà a un risultato discreto di spin su o giù in quella direzione, poiché gli stati di spin possono essere solo discreti.

Lo stato quantistico di uno o più qubit sarà dato da una combinazione lineare di queste basi. I vettori di base, quindi, rappresenteranno i possibili risultati di uno stato quantistico. Come abbiamo detto in precedenza, lo stato di un qubit può essere modellato sullo spin di un elettrone o di un fotone. Prima della misurazione, la particella o lo stato quantistico sarà in sovrapposizione, rappresentata da una combinazione lineare delle basi |b1> e |b2> che prende la forma di c1|b1> + c2|b2>, dove c1 e c2 rappresentano le ampiezze di probabilità. Poiché le ampiezze di probabilità possono essere negative, vengono utilizzati solo i valori al quadrato per rappresentare le probabilità dei risultati in cui c1² + c2² = 1. In una sovrapposizione, quindi, c1² e c2² avranno entrambi una probabilità del 0,5.

Dopo la misurazione, lo stato di spin collassa su una delle basi ortogonali |b1> o |b2>. La probabilità di collassare su |b1> è data da c1², mentre la probabilità di collassare su |b2> è data da c2². Se la misurazione collassa su |b1>, c1² sarà uguale a 1 e c2² sarà 0 e viceversa. Per metterla ancora più semplicemente, il vettore di base moltiplicato per il valore di probabilità 1 rappresenterà l’esito della misurazione.

Nel calcolo classico, più bit sono rappresentati dal prodotto tensoriale di quei bit, indicato dal seguente simbolo: ⊗

Abbiamo detto che i ket [1,0] e [0,1] rappresentano le basi standard e quindi costituiscono analoghi di 0 e 1 rispettivamente nei bit classici. Abbiamo anche detto che ogni stato quantistico deve conservare la seguente uguaglianza: c1² + c2² = 1. L’abbiamo chiamata vincolo di misura unitaria (il secondo assioma della teoria delle probabilità), il che significa che tutti i ket devono essere vettori unitari in ℝ². Tuttavia, poiché gli stati reali delle particelle quantistiche sono rappresentati tramite numeri complessi, lo spazio di stato reale è dato da ℂ². Pertanto, il vero vincolo di misura unitaria è dato da: ‖𝛼‖² + ‖β‖² = 1, dove 𝛼 e β sono numeri complessi e rappresentano le ampiezze di probabilità.

Per rappresentare stati a più qubit prendiamo quindi il prodotto tensoriale delle nostre basi standard |0> e |1>. Nota che il prodotto conserverà il vincolo di misura unitaria, indipendentemente da quanti qubit concateniamo.

Il prodotto tensoriale di due qubit restituisce il vettore sopra.
Il prodotto tensoriale di due qubit 0 restituisce il vettore sopra.

Dato che abbiamo lavorato in ℝ², possiamo rappresentare in modo euristico lo spazio di stato di un qubit in due dimensioni (x,y) tramite un cerchio unitario. Ricorda che tutte le operazioni saranno sulle basi ortogonali che abbiamo elencato in precedenza. Inoltre, tutti i gate logici quantistici saranno rappresentati da matrici unitarie e quindi ortogonali. Perché? Perché la moltiplicazione vettoriale per matrici ortogonali produce rotazioni preservando il prodotto interno dei vettori. Questo produce trasformazioni isometriche su uno spazio euclideo.

Nota anche i segni negativi per ogni rotazione di 180⁰. I segni negativi aiutano a distinguere le uscite equivalenti in modo tale che ogni operazione possa in principio essere invertibile o reversibile. Tutti i calcoli quantistici dovranno essere reversibili per sfruttare le capacità computazionali degli stati quantistici, ovvero gli stati di sovrapposizione e intreccio prima della misurazione. Come vedremo in seguito, lo stato di sovrapposizione (così come l’intreccio) dota il calcolo quantistico di vantaggi che sfuggono al calcolo classico. Nello stato di sovrapposizione, un numero arbitrario di qubit N occupa contemporaneamente tutti i propri stati possibili. Se abbiamo 4 qubit, il campione avrà 2⁴ stati possibili, ma in sovrapposizione tutti questi stati si otterranno contemporaneamente. La probabilità di collassare su uno di questi stati al momento della misurazione sarà distribuita in modo uguale lungo la combinazione lineare dei vettori unitari.

Le linee nel cerchio unitario qui sotto rappresentano i cambiamenti di stato dall’input all’output tramite operazioni con il gate di Hadamard, che mette i qubit in sovrapposizione e viceversa. A causa della seguente uguaglianza ‖𝛼‖² + ‖β‖² = 1, la misurazione farà sempre collassare il sistema in uno stato classico distinto, che nel nostro caso mappa lo spin dell’elettrone o del fotone. Tuttavia, le operazioni con i gate quantistici cambiano lo stato di uno o più qubit senza far collassare la funzione d’onda.

Rappresentazione del cerchio unitario del qubit. Immagine da Wikimedia Commons.

Se applichiamo l’operatore di inversione di bit, equivalente al gate NOT nella computazione classica, invertirà il valore dello stato di input. Ad esempio, il ket |1> si inverte nel ket |0> indicato di seguito dalla transizione di stato da (0,1) a (1,0).

Il gate di Hadamard, nel frattempo, prende in input (0,1) e produce in output (1/√2,-1/√2) moltiplicando l’input con la seguente matrice ortogonale o unitaria:

In caso tu ti stia chiedendo come esattamente cambia lo stato, ecco un’illustrazione esplicita della moltiplicazione di matrici con il gate di Hadamard dall’input del ket |1>:

Operazione del gate di Hadamard con vettore di stato di input |1>.

Come funziona il gate di Hadamard e cosa c’è di così speciale?

Osservando il cerchio unitario, si può notare che l’operazione di inversione di bit corrisponde a una rotazione di 90⁰ sul cerchio unitario, mentre il gate di Hadamard corrisponde a una rotazione di 180⁰. Ciò che devi tenere a mente è che tutti i gate quantistici vengono eseguiti tramite matrici ortogonali o unitarie, che producono rotazioni intorno all’origine. Il gate di Hadamard, nello specifico, produce mezze-rotazioni tra gli assi x e y, che corrispondono alle ampiezze di probabilità del 0.5.

Notare anche che l’output del vettore è un vettore unitario in quanto (1/√2, -1/√2) osserva l’identità seguente ‖𝛼‖² + ‖β‖² = 1. Prova a fare il calcolo da solo sostituendo i valori di output al posto di 𝛼 e β.

Pensa allo stato del qubit in un punto del cerchio unitario come alla distribuzione delle ampiezze di probabilità da analoghi del 0 e 1 a un insieme di valori intermedi che conservano la somma unitaria. Il gate di Hadamard imposta esattamente questa distribuzione a un risultato del 50/50. In altre parole, c’è una probabilità del 50/50 che la misurazione collassi il qubit ai vettori di stato |0> o |1>. Questo è l’analogia matematica a uno stato di sovrapposizione. Vedremo in seguito come la sovrapposizione può essere sfruttata dal punto di vista computazionale.

Infine, le nostre dimostrazioni finora hanno utilizzato il cerchio unitario come spazio di stati possibili di un qubit in ℝ². Dal momento che gli stati effettivi dei qubit sono rappresentati da numeri complessi in ℂ², una rappresentazione più accurata dello spazio di stato del qubit è data da ciò che viene chiamata la sfera di Bloch, che cerca di catturare i possibili stati di numeri a valori complessi mostrati di seguito come una sfera tridimensionale.

Rappresentazione della sfera di Bloch del qubit. Immagine da Wikimedia commons.

Gate di Logica Quantistica

Come nella computazione tradizionale, i gate logici nella computazione quantistica consistono in circuiti che eseguono un’operazione su un qubit o insiemi di qubit. In precedenza abbiamo visto che i gate quantistici corrispondono matematicamente a moltiplicazioni di matrici su qubit. Abbiamo anche detto che i qubit sono rappresentati da vettori unitari, mentre i gate logici quantistici da matrici ortogonali o unitarie. Come abbiamo visto, queste producono rotazioni su una sfera unitaria, o cerchio, per ridurre lo spazio complesso a uno bidimensionale per semplificazione.

Tuttavia, per eseguire operazioni sui qubit, i gate quantistici devono essere reversibili. La reversibilità significa che ogni operazione dall’input all’output deve anche essere reversibile dall’output all’input. Il motivo di ciò è che gli stati quantistici sono reversibili, invarianti alla inversione temporale e conservano informazioni nello stato di sovrapposizione. Quello che abbiamo chiamato misurazione, tuttavia, riduce lo stato quantistico in uno stato classico. La misurazione o il collasso è irreversibile e non conserva quindi le informazioni di input. In altre parole, non possiamo invertire il collasso nello stato di sovrapposizione precedente. Pertanto, i gate quantistici costituiscono operazioni controllate che manipolano lo stato quantistico mentre lo conservano. La tecnologia necessaria per ottenere questi risultati si avvale di particelle semiconduttrici di pochi nanometri di dimensione chiamate punti quantistici che devono essere mantenuti a temperature vicine allo zero assoluto. Tuttavia, è fondamentale notare che gli output desiderati della computazione quantistica possono essere ricavati solo attraverso la misurazione.

Ci sono, quindi, due proprietà che sono fondamentali quando si tratta di porte logiche quantistiche: a) reversibilità e b) universalità. L’universalità si riferisce a un tipo di porta logica in grado di eseguire tutte le possibili operazioni sui bit. La porta universale più conosciuta nel calcolo classico è NAND (NOT AND) rappresentata nella tabella qui sotto:

Si noti che NAND è il complemento funzionale di AND. Al massimo, solo due operatori logici sono sufficienti per esprimere tutte le possibili dichiarazioni logiche, inclusi i teoremi di logica. Questo è noto come completezza funzionale. Poiché NAND combina sia NOT che AND in un’unica operazione, per corollario si qualifica come operatore logico e porta universalmente completa dal punto di vista funzionale. Per fare un confronto, vediamo la tabella verità per AND:

Nel calcolo classico, la maggior parte delle operazioni sono irreversibili. Ad esempio, se inseriamo una sequenza 010011110 nella maggior parte delle porte logiche e otteniamo un’altra sequenza binaria in output, non saremmo in grado di recuperare la sequenza di input solo dall’output. XOR e NAND sono entrambi irreversibili. Tuttavia, ci sono alcune porte che ci consentono di recuperare l’input solo dall’output, come le porte CNOT (equivalenti a XOR ma reversibili), Hadamard e TOFFOLI. Tra queste, Hadamard e TOFFOLI si qualificano sia come reversibili che universali. Tuttavia, ci sono altre porte che soddisfano queste qualifiche, come la porta FRIEDKIN. Ci concentreremo sul primo gruppo.

Diamo ora un’occhiata a due porte essenziali per la maggior parte dei calcoli quantistici: CNOT e Hadamard. CNOT opera su due o più qubit connettendoli. La porta Hadamard opera su uno o più qubit mettendoli in sovrapposizione. Guarderemo anche a una terza porta, la porta TOFFOLI, anche nota come porta NOT controllata-controllata, che è una versione universale della porta CNOT.

Qual è lo scopo della porta CNOT? Ci consente di connettere due qubit di input eseguendo operazioni di inversione del bit che sono reversibili. La porta CNOT è composta da due input: un controllo e un input target. Quando il bit di controllo è uguale a 1, la porta CNOT inverte il bit di input target. Quando il bit di controllo è uguale a 0, la porta CNOT non fa nulla. In questo modo, ogni combinazione di output può essere collegata a una sola combinazione di input.

Porta CNOT classica con bit e output prodotto tensore
Porta CNOT quantistica su basi standard e output prodotto tensore

In che senso la porta CNOT è equivalente all’entanglement?

Guardiamo un’operazione della porta CNOT sui qubit |1> e |0>. Prendiamo il prodotto tensore dei due qubit e lo moltiplichiamo per la matrice unitaria della porta CNOT, che converte il prodotto tensore di input da |10> a |11>. Perché? Perché la porta CNOT inverte il valore del qubit target solo se il qubit di controllo è uguale a |1>.

Per corollario, se il nostro qubit target è |1> invece di |0>, la porta CNOT inverte prevedibilmente il valore tornando a |0> come possiamo vedere qui sotto:

In altre parole, CNOT è l’equivalente classico-computazionale reversibile del XOR (o esclusivo).

Come abbiamo già detto, il gate di Hadamard produce una perfetta sovrapposizione. Come fa? Date un’occhiata alla matrice ortogonale qui sotto:

Il gate di Hadamard è una matrice ortogonale che mette i qubit di input in sovrapposizione e viceversa.

Se moltiplichiamo la matrice per una base standard |0>, otteniamo lo stato seguente: (1/√2, 1/√2) che è equivalente a (|0>+|1>)/√2. Al contrario, se la moltiplichiamo per |1>, otteniamo (1/√2,−1/√2), che è equivalente a (|0>−|1>)/√2. Anche se ogni input converte l’output in una distribuzione equa delle ampiezze di probabilità, il segno negativo ci permette di distinguere l’input (se è |0> o |1>) e garantisce quindi che l’operazione sia reversibile.

Ogni valore ha una possibilità del 50/50 di risultato nel mondo classico. Notate che nel nostro esempio abbiamo eseguito l’operazione su un singolo qubit. Come mettiamo in sovrapposizione più qubit?

Dobbiamo far passare ogni qubit separatamente attraverso un gate di Hadamard, e poi prendere il loro prodotto tensoriale. Come abbiamo detto prima, gli stati dei qubit multipli sono rappresentati come prodotti tensoriali degli stati di qubit singoli.

Qui sotto potete vedere l’operazione su un singolo qubit moltiplicando la base standard |1> con la matrice di Hadamard:

Infine, diamo un’occhiata al gate di TOFFOLI, anche conosciuto come gate di controlled-controlled-not (CCNOT). Il gate di TOFFOLI è identico al CNOT a parte che ha una variabile di controllo aggiuntiva. Con due variabili di controllo, il gate di TOFFOLI utilizza una matrice ortogonale 8×8 per operazioni su tre qubit di input. Come il CNOT, il TOFFOLI produce un’intrecciatura quantistica e può essere usato per intrecciare e disintrecciare qubit.

Le tabelle di input-output del gate di TOFFOLI:

Input e output del gate di Toffoli classico.
Input e output del gate di Toffoli quantistico.

Perché abbiamo bisogno del gate di TOFFOLI quando abbiamo CNOT?

Perché come NAND, TOFFOLI è universale per la computazione classica e può quindi essere usato da un computer quantistico per simulare computazioni classiche reversibili. Tuttavia, TOFFOLI non è universalmente computazionale quantisticamente poiché non può produrre sovrapposizioni.

Ora che abbiamo una certa comprensione dei gate logici quantistici e delle operazioni che eseguono, come li combiniamo per ottenere algoritmi quantistici?

Dato che i gate quantistici conservano lo stato di sovrapposizione, li possiamo usare per eseguire calcoli unitari che sono reversibili. Dal punto di vista fisico, l’evoluzione del sistema nel tempo è descritta dalla funzione d’onda di Schrödinger. Tuttavia, per ottenere informazioni dal computer quantistico, dobbiamo far collassare la funzione d’onda.

Tipicamente, combiniamo operazioni di inversione dei bit e gate di Hadamard per ottenere i risultati desiderati. Tuttavia, l’inversione dei bit non è reversibile. La sfida dell’informatica quantistica sta nel trovare modi per scrivere funzioni non reversibili in un modo reversibile. Vedremo come fare questo con l’algoritmo di Deutsch.

I bit classici sono casi speciali dei qbit

In teoria, un computer quantistico può istanziare tutti i calcoli classici in quanto questi sono un sottoinsieme corretto dei calcoli quantistici.

Per poter realizzare calcoli classici attraverso un computer quantistico, dobbiamo limitare i calcoli ai qubit espressi da basi normali (come analoghi ai bit classici) che abbiamo usato finora come esempi e progettare circuiti che utilizzino porte reversibili classicamente universali come la porta TOFFOLI. Poiché la porta TOFFOLI è una porta universale per il calcolo classico, può essere utilizzata per istanziare calcoli classici.

Tuttavia, finora non abbiamo detto nulla sugli algoritmi quantistici. Come costruirne uno?

Algoritmi quantistici: l’oracolo di Deutsch

Tutto ciò che abbiamo spiegato finora sarebbe frivolo dal punto di vista computazionale se non potessimo costruire algoritmi quantistici che conferiscono vantaggi computazionali rispetto agli algoritmi classici.

Il primo algoritmo che ha dimostrato questo è stato ideato da David Deutsch nel 1985, noto come oracolo di Deutsch.

Supponiamo di avere quattro funzioni f₀-f₃. Per ogni input 0 o 1, f₀ restituisce 0. Per ogni input 0 o 1, f₁ restituisce 0 se l’input è 0 e 1 se l’input è 1. Per ogni input 0 o 1, f₂ restituisce 1 se l’input è 0 e 0 se l’input è 1. Per ogni input 0 o 1, f₃ restituisce 1.

Possiamo definire le funzioni f₀ e f₃ costanti, poiché producono lo stesso output indipendentemente dall’input. E chiamiamo le funzioni f₁-f₂ bilanciate, poiché distribuiscono gli output in modo reciproco.

La domanda che ci poniamo è: se ci viene fornita una di queste funzioni casualmente, quante volte dovremmo interrogare l’algoritmo per determinare se la funzione è costante o bilanciata?

La risposta è che la computazione classica non può determinare la risposta corretta con meno di due interrogazioni. Vediamo come funziona. Abbiamo la scelta tra 0 o 1 come input. Se inseriamo 0, potremmo ottenere 0 o 1 come output. Allo stesso modo, se l’input è 1, potremmo ottenere 0 o 1 come output. In entrambi i casi, non sapremo se l’output è stato prodotto da una funzione costante o bilanciata. Pertanto, dobbiamo interrogare l’algoritmo una seconda volta per fare la determinazione corretta.

Con un algoritmo quantistico, Deutsch ha dimostrato che possiamo conoscere la risposta corretta con una singola interrogazione. Per raggiungere questo obiettivo, facciamo uso della porta di Hadamard e un qubit di controllo oltre al qubit di input. Inviiamo i nostri input attraverso la porta di Hadamard. Ricorda che H mette un qubit in uno stato di sovrapposizione. Quindi se inseriamo la coppia |0> e |1>, otteniamo i seguenti stati rispettivi: (1/√2, 1/√2) , (1/√2, −1/√2). Passiamo quindi il gate target attraverso fₓ casuale.

Poiché Hadamard è reversibile, fₓ dovrebbe mettere il nostro qubit in uno dei seguenti stati:

(1/√2) (|0>+|1>); (1/√2) (|0>−|1>); (−1/√2) (|0>−|1>); (−1/√2) (|0>+|1>)

Passiamo il qubit di controllo di nuovo attraverso Hadamard per invertire la sovrapposizione. Poiché le operazioni sono reversibili, otteniamo i seguenti possibili risultati:

f₀ →|0>; f₁ →|1>; f₂ → −|1>; f₃ →−|0>

Ciò significa che quando misuriamo il qubit alla fine, se l’output è |0>, la funzione è costante, e se l’output è |1>, la funzione è bilanciata. Anche se l’oracolo di Deutsch non ha usi pratici, fornisce un potente esempio dei vantaggi della computazione quantistica rispetto a quella classica.

Algoritmo Deutsch-Jozsa

L’oracolo di Deutsch generalizzato a variabili multiple è chiamato algoritmo Deutsch-Jozsa. Il diagramma qui sotto fornisce il circuito quantistico schematico dell’algoritmo.

Circuito dell'algoritmo Deutsch-Jozsa, dove H sta per Hadamard, U per una funzione costante o bit-flip, con basi standard come input. Viene misurato solo l'output in alto a destra. Fonte dell'immagine: Wikipedia.

L’algoritmo di Shor

L’algoritmo di Shor è un algoritmo quantistico utilizzato per fattorizzare numeri grandi. L’algoritmo è composto da due parti, la prima delle quali viene eseguita su un computer classico e la seconda viene eseguita su uno quantistico che fa uso della trasformata di Fourier quantistica. Non entreremo nei dettagli matematici di questo algoritmo in quanto sono complessi e al di là dell’ambito di questo articolo.

L’algoritmo di Shor richiede due registri di 1024 e 2048 qubit rispettivamente per fattorizzare un numero di 1024 bit con 309 cifre. Il numero più grande che è stato fattorizzato fino ad oggi ha una lunghezza di 48 bit, che non raggiunge lo standard RSA con una semiprima di 100 cifre. Finora nessun computer quantistico ha superato le sfide dei numeri RSA, che consistono in una lista di grandi numeri che hanno solo due fattori primi. I numeri RSA sono utilizzati nella crittografia a chiave pubblica per la trasmissione sicura dei dati da parte di governi e istituzioni finanziarie.

Con un computer quantistico sufficientemente potente, l’algoritmo di Shor può essere utilizzato per decodificare la crittografia a chiave pubblica, che utilizza numeri primi molto grandi ritenuti computazionalmente inaccessibili dai computer classici.

Supremazia quantistica e il futuro

Come abbiamo detto all’inizio, il concetto di supremazia quantistica si riferisce alla capacità dei computer quantistici di risolvere problemi classicamente intrattabili in un periodo di tempo ragionevole. In teoria, i computer classici possono risolvere qualsiasi algoritmo teoricamente calcolabile. Il problema sta nella pratica: la limitata potenza di elaborazione impedisce loro di risolvere determinati problemi in un periodo di tempo utile. Qui entrano in gioco i computer quantistici, promettendo di colmare questa lacuna. Nel 2019, Google ha annunciato di aver raggiunto la supremazia quantistica con il loro computer quantistico Sycamore da 53 qubit. Nel loro articolo pubblicato su Nature intitolato Supremazia quantistica utilizzando un processore superconduttivo programmabile, sostengono che Sycamore abbia impiegato 200 secondi per eseguire un’istanza di un circuito quantistico un milione di volte, un compito che, affermano inoltre, richiederebbe 10000 anni a un supercomputer classico. IBM ha contrastato quest’ultima affermazione affermando che uno dei loro supercomputer potrebbe eseguire tale compito in 2,5 giorni, sminuendo la pretesa di Google di aver raggiunto il traguardo.

Il computer quantistico più grande ad oggi, l’Osprey di IBM, ha un processore da 433 qubit. I tentativi attuali di costruire computer quantistici con processori sufficientemente grandi sono ostacolati dal rumore che si insinua, ovvero dal potenziale dello stato quantistico di decoerire o collassare in uno stato classico attraverso l’interazione con l’ambiente circostante, come i cambiamenti di temperatura e i campi magnetici.

Il problema del rumore costituisce una delle principali sfide per scalare i computer quantistici verso il potenziale computazionale, come la fattorizzazione di numeri enormemente grandi. I qubit che annullano il rumore potrebbero compensare alcune di queste sfide, ma attualmente l’avvento dei computer quantistici è ancora agli inizi.

Riferimenti

Bernhardt, Chris. Quantum Computing for Everyone. The MIT Press, 2020.

IBM unveils 400 qubit-plus quantum processor and next-generation IBM Quantum System Two. IBM Newsroom. (n.d.). https://newsroom.ibm.com/2022-11-09-IBM-Unveils-400-Qubit-Plus-Quantum-Processor-and-Next-Generation-IBM-Quantum-System-Two

Kaye, P., Laflamme, R., & Mosca, M. (2020). Introduzione alla computazione quantistica. Oxford University Press.

“Qubits di cancellazione del rumore” possono ridurre gli errori nei computer quantistici. University of Chicago News. (n.d.). https://news.uchicago.edu/story/noise-cancelling-qubits-can-minimize-errors-quantum-computers#:~:text=As%20existing%20quantum%20computers%20are,to%20high%20rates%20of%20error.

Roush, W. (2020, 13 luglio). La disputa tra Google e IBM sulla “supremazia quantistica”. MIT Technology Review. https://www.technologyreview.com/2020/02/26/905777/google-ibm-quantum-supremacy-computing-feud/

Zubairy, Muhammad Suhail. Meccanica quantistica per principianti: con applicazioni alla comunicazione quantistica e alla computazione quantistica. Oxford University Press, 2020.