Computer quantistico: che cosa è esattamente?
IBM e Google hanno presentato varie versioni di computer quantistici
Per capire il funzionamento di un computer quantistico si deve necessariamente cominciare dalle basi capendo come funzionano i computer classici e di cosa si occupa la meccanica quantistica. I computer ormai sono ovunque nella nostra vita, il loro effettivo funzionamento non è noto a tutti ed è importante conoscere in che modo operano per capire in cosa il computer quantistico è diverso e in quali particolari ambiti potrebbe essere rivoluzionario.
Computer Classico
I computer di oggi sono stati realizzati grazie a un cambiamento epocale: l’invenzione dei transistor, l’unità fondamentale per tutta la nostra tecnologia moderna. Il numero dei transistor raddoppia circa ogni 18 mesi, secondo la legge di Moore, ma si arriverà a un momento in cui questo aumento del numero di transistor arriverà a un limite, non si può fare un transistor più piccolo di un atomo.
Ogni computer ragiona in termini di bit, la quantità minima di informazione che il computer è in grado di elaborare. Il termine bit deriva dall’inglese “binary digit” e può rappresentare solamente due stati distinti: zero (0) e uno (1).
Nel corso della storia dei computer i bit hanno assunto forme fisiche molto diverse e sono rappresentati/esistono grazie a: voltaggi applicati ai connettori di un transistor, buchi eseguiti in una scheda perforata, le righe bianche o nere di un codice a barre e settori di un disco rigido magnetizzati. Tuttavia, indipendentemente dalla loro forma fisica i bit possono assumere soltanto due valori/forme: il connettore del transistor può essere o non essere alimentato, la scheda può essere o non essere perforata, la riga del codice a barre bianca o nera, il settore di disco rigido può essere magnetizzata in un determinato modo o in un altro. In qualunque modo si vuole conservare un’informazione si deve sempre ricorrere al codice binario (0 e 1).
Il singolo bit non è molto utile, contiene pochissime informazioni e per questo motivo i bit vengono raggruppati in “elementi più grandi” (chiamati registri) originariamente costituiti da 8 bit (1 byte) contenendo una quantità di informazione maggiore. L’ampiezza di un registro dipende dall’architettura del computer (dalla CPU in particolare). Un byte può assumere 256 (2^8) valori distinti.
Un computer può eseguire una enorme varietà di operazioni e si potrebbe essere portati a credere che il processore (il cervello del PC) debba elaborare i bit e i registri utilizzando una altrettanto grande varietà di operazioni fondamentali. Tutte le operazioni che un computer può eseguire si riducono a soltanto sette operazioni fondamentali (not, and, or, nand, nor, xor, xnor) opportunamente combinate tra loro ed eventualmente ripetute in modo da portare a termine il “compito che viene richiesto” al particolare algoritmo. Queste operazioni fanno parte della cosiddetta logica Booleana, introdotta da George Boole (matematico britannico) nel 1800, ben prima della nascita dei computer.
Pillole di meccanica quantistica
Il computer quantistico abbandona il concetto di transistor, e come strumenti per rappresentare i dati utilizza delle particelle subatomiche come gli elettroni. Gli elettroni sono particelle subatomiche con carica negativa e compiono un moto di rivoluzione attorno al nucleo dell’atomo e un moto di rotazione attorno al proprio asse, quest’ultimo noto come spin. Lo spin è la proprietà intrinseca degli elettroni che si manifesta nel momento in cui questi ultimi sono sottoposti all’azione di un campo magnetico esterno disomogeneo, e in base a come vengono influenzati, gli elettroni possono assumere due diversi stati energetici, spin up (1) e spin down (0).
La meccanica quantistica non è in grado di “conoscere” simultaneamente tutte le proprietà (es. velocità e posizione) di un singolo oggetto, consente soltanto di determinare la probabilità che, in un certo istante, si verifichi un particolare evento riguardante quell’oggetto. Questi fenomeni sono descritti nel principio di indeterminazione di Heisenberg, che afferma:
La precisione con cui si può misurare la posizione di una particella in un dato istante è inversamente proporzionale alla precisione con cui si può misurare contemporaneamente la quantità di moto.
Il precedente enunciato afferma che nella meccanica quantistica è necessario abbandonare i concetti di orbita e traiettoria degli elettroni, si passa a un modello basato sul movimento degli oggetti microscopici a un modello basato sulla probabilità di trovare una particella in un determinato spazio.
Gli elettroni possiedono un comportamento ambivalente, sono contemporaneamente particelle e onde. Tutti i tipi di onde (come le onde elettromagnetiche) possono essere descritte da un’equazione, quindi anche le onde che si propagano con l’elettrone possono essere descritte da una funzione matematica.
Nel 1926 Schrödinger formulò un equazione nota come equazione d’onda. L’equazione d’onda presenta come soluzioni delle funzioni d’onda (molto importanti per il computer quantistico) indicata con la lettera Ψ (psi). Una funzione d’onda è una funzione delle tre coordinate spaziali (x, y e z) e del tempo t.
Il quadrato della funzione d’onda Ψ^2 fornisce la probabilità che un elettrone si trovi, durante l’intervallo di tempo Δt, in un volume Δv il cui centro ha coordinate x, y e z. Se Ψ^2 è elevato, grande sarà la possibilità di trovare l’elettrone (vicino al nucleo) e viceversa, se Ψ^2 è piccolo l’elettrone si trova raramente. La funzione d’onda può collassare nel momento in cui un osservatore esterno “misura”, per esempio, la posizione di un elettrone; la funzione d’onda collassa in uno dei tanti risultati possibili e si ha un ottiene un risultato certo.
COME FUNZIONA UN COMPUTER QUANTISTICO?
Il quantum bit (qubit) è l’equivalente quantistico del bit classico. La prima grande differenza tra i bit classici e i qubit è la possibilità per questi ultimi di trovarsi in una condizione particolare nota come: sovrapposizione coerente di stati. Nella sovrapposizione coerente di stati, il sistema prima della osservazione, contiene contemporaneamente tutte le possibili manifestazioni di uno stato non osservabile direttamente, in parole povere il qubit può assumere contemporaneamente il valore 0 e 1.
Questo aspetto che la fisica quantistica ci obbliga ad accettare è ovviamente paradossale seconda una logica classica, in quanto la logica comune gli stati osservabili sovrapposti non possono coesistere contemporaneamente. In meccanica quantistica tutti gli stati “potenzialmente” possibili offerti da un sistema coesistono prima dell’osservazione. L’atto di “misurare” un sistema fa si che quest’ultimo colassi con una certa probabilità in uno tra i possibili stati definiti per quel sistema. Il qubit, prima della misurazione, si trova contemporaneamente in tutti gli stati possibili del sistema (in questo caso 0 e 1) e l’atto stesso di osservare farà collassare il qubit nello stato 0 o nello stato 1 con un certa probabilità.
Per evitare equivoci la sovrapposizione coerente di stati non è un ulteriore stato ben definito in cui si può trovare il qubit.
Una sovrapposizione coerente di stati può essere scritta in una maniera relativamente semplice matematicamente:
α|0> + ß|1> = |Ψ>
Le parentesi (>) sono notazioni che indicano che vi è la presenza di stati quanto-meccanici, lo stato 0 e 1 sono moltiplicati con opportuni coefficienti complessi e sommati tra loro costituiscono la descrizione dello stato quanto meccanico Ψ del qubit. Questa scrittura altro non è che la combinazione lineare di due vettori che sono la base di un sistema di riferimento con coordinate α e ß; Ψ alla fine è un vettore generico in un determinato spazio in cui α e ß sono numeri complessi (per cui |α|^2 + |ß|^2 =1) e per questo motivo tale scrittura non può essere “disegnata” su un grafico (a causa dei coefficienti complessi per coloro i quali non avessero capito). In un computer quantistico il registro dopo ogni calcolo si può trovare in tutte (almeno che non si voglia manualmente limitare il numero di combinazioni per varie ragioni) le 2^n possibili combinazioni contemporaneamente, mentre nei computer classici si può trovare in una sola delle 2^n combinazioni.
I qubit possono rappresentare tutte le informazioni contemporaneamente, quindi come facciamo a sapere qual è il dato reale in esse “immagazzinate” in quel preciso momento? Come si fa a leggere quel dato? Questi qubit possiedono una particolare proprietà chiamata entanglement quantistico, definito da Einstein come: “spooky action at distance” (oscura e misteriosa azione a distanza). L’entanglement quantistico si manifesta nel momento in cui due particelle (in questo caso due qubit) sono intrinsecamente collegate tra loro e tale unione ha effetti sul sistema fisico: qualsiasi azione o osservazione compiuta sulla prima particella (qubit 1) influenzerà istantaneamente (questo avvenimento sconvolse Einstein) l’altra particella (qubit 2) e non importa quanto siano lontani tra loro.
In stato entanglement, nel momento in cui si misura il primo qubit vi sarà una certa possibilità di trovarlo nello stato 0 o nello stato 1 e l’altro qubit sarà vincolato quindi dalla prima osservazione.
Algoritmi quantistici
Un algoritmo è una sequenza di azioni le quali devono essere eseguite in un preciso ordine per svolgere un compito oppure per risolvere un problema. Possono esistere più algoritmi per risolvere la stessa operazione e naturalmente daranno lo stesso risultato, ma dal punto di vista computazionale c’è differenza? La risposta è sì, c’è differenza; si deve sempre ricordare che ogni singola operazione svolta dal computer richiede del tempo (magari poco, ma non zero) e quindi richiede dell’energia (magari poca ma non zero).
Nel momento in cui un programmatore decide quale algoritmo implementare, per economia si dovrà puntare all’algoritmo che richiede il minor numero di calcoli.
Per ogni algoritmo si può calcolare (o quanto meno stimare) un parametro che identifica il numero di calcoli da compiere e prende il nome di complessità, altro non è che numero di operazioni da eseguire in un determinato lasso di tempo, che aumenta all’aumentare della lunghezza del registro. Gli algoritmi quindi non sono tutti uguali e si possono distinguere in più gruppi: algoritmi efficienti e non efficienti.
Gli algoritmi efficienti hanno una complessità che aumenta in modo al più polinomiale con il numero di bit, significa che il numero di operazioni da eseguire è una qualche potenza del numero di bit (per es. n^2), mentre gli algoritmi non efficienti crescono in maniera esponenziale (es. 2^n).
Il computer quantistico (come li computer classico) ha bisogno di algoritmi per funzionare, in particolar modo di algoritmi quantistici, che sono in grado di sfruttare il fatto che un registro di qubit può trovarsi in una sovrapposizione coerente di stati e questo significa che il computer quantistico può cercare più soluzioni contemporaneamente; per questo motivo i quantum computer sono molto efficienti nel cercare qualcosa in una marea di dati inutili.
Gli algoritmi quantistici più famosi sono: l’algoritmo di Groover e di Shor. L’algoritmo di Grover cerca di risolvere questo tipo problema: si immagina di possedere un enorme numero di elementi da analizzare, come tutte le parole di 50 milioni di volumi, tra tutte queste c’è ne solo una che si ripete una sola volta che si vuol trovare. I migliori algoritmi classici hanno un grado di complessità pari al numero di elementi da analizzare, come se si sfogliasse ogni pagina di ogni libro finché non si trova la parola, che sfortunatamente può essere l’ultima dell’ultimo libro da analizzare.
L’algoritmo di Grover potendo cercare le cose in altro modo ha un grado di complessità pari alla radice quadrata del numero di elementi da analizzare (nel video qui sotto vi è la dimostrazione completa).
L’algoritmo di Shor, sviluppato negli anni 1990, si dedica alla fattorizzazione di numeri con più di 100 cifre. Fattorizzare un numero significa cercare i numeri primi per cui quel numero è divisibile (i fattori primi di 15 sono 3 e 5, 3*5=15) e la complessità di questa operazione cresce a dismisura nel momento in cui si vuole cercare di fattorizzare numeri con molte cifre.
Il migliore algoritmo classico per fattorizzare numeri di oltre 100 cifre è noto come crivello generale del campo numerico (un gruppo di ricercatori sta lavorando per estendere il numero di cifre da fattorizzare fino a 250 attraverso il calcolo distribuito) e ha un grado di complessità di e^n (e è il numero di Nepero che vale più o meno 2,71 e n il numero di bit contenuti nel registro). La fattorizzazione di grandi numeri è a tutti gli effetti un problema intrattabile (vi sono gli strumenti a disposizione ma non il tempo) classicamente.
L’algoritmo di Shor è incredibile, la sua complessità è soltanto n^3 (n al cubo), quindi in un registro di 64 bit con un algoritmo classico vi sono ben 6 miliardi di miliardi di miliardi di operazioni da eseguire (all’incirca) mentre con l’algoritmo di Shor solamente poco più di 260000.
Applicazioni dei computer quantistici
I computer quantistici rivoluzioneranno vari ambiti come il “Learing Machine“, in quanto sono in grado di calcolare una grande mole di dati in brevissimo tempo e riformeranno lo sviluppo degli algoritmi di apprendimento automatico e di conseguenza dell’intelligenza artificiale.
Nel campo medico i computer quantistici saranno di grande aiuto per gli scienziati nello studio delle milioni interazioni tra molecole, proteine e agenti chimici e aiuterà a creare farmici più efficaci contro malattie di ogni tipo. I geni e il DNA di ogni essere umano potranno essere sequenziati molto più velocemente in modo tale da sviluppare cure personalizzate.
Nel campo meteorologico le numerosissime equazioni per le previsioni meteo sono ostiche per qualsiasi computer classico. I computer quantistici garantiranno previsioni meteo più accurate e a lungo termine.
La vera rivoluzione sarà nel campo della crittografia. La sicurezza dell’algoritmo RSA (di crittografia) è garantita dalla difficoltà computazionale di scomporre un numero con molte cifre nei suoi fattori primi. Facciamo un esempio pratico: dati i numeri primi 35747 e 59123 il loro prodotto è 2113469881, un operazione abbastanza semplice dal punto di vista computazionale.
L’operazione inversa che consiste nel partire dal numero 2113469881 e ottenere i suoi fattori primi non è affatto semplice poiché l’unico modo per la ricerca di fattori primi è dividerlo per tutti i numeri primi compresi tra 2 e la radice del numero da esaminare, fino a che se ne trova eventualmente uno.
I computer quantistici, attraverso l’algoritmo di Shor, renderanno tutte le attuali tattiche di protezione e crittografia obsolete e per questo motivo già si stanno sviluppando nuovi algoritmi di crittografia quantistici. Una delle cose interessanti della crittografia quantistica è il modo con cui ci si potrà scambiare una chiave. Il mittente X potrà inviare al destinatario Y una chiave con la consapevolezza di sapere se quest’ultima è stata intercettata o meno.
Se la chiave viene scritta come un registro di qubit in una sovrapposizione coerente di stati, nel momento in cui il mittente X spedirà questa chiave al destinatario Y e un hacker la dovesse intercettare e osservala, l’atto stesso di osservare farebbe collassare il registro di qubit in uno dei due stati (0 o 1) e il destinatario Y se ne accorgerebbe. Questi particolari trasferimenti di chiavi è noto come “quantum key distribution” (QKD)
I problemi dei computer quantistici
Quali sono i “nemici” da combattere per la costruzione di un computer quantistico, in particolare modo per renderlo stabile?
La decoerenza quantistica è il “principale nemico da combattere”, “distrugge” lo stato di sovrapposizione coerente di stati e lo stato entanglement dei qubit. Ci sono tanti laboratori nel mondo che cercano di risolvere questo grattacapo. La teoria della decoerenza quantistica, o desincronizzazione delle funzioni d’onda, descrive un fenomeno che simula il collasso della funzione d’onda come conseguenza dell’interazione irreversibile fra i sistemi quantistici e l’ambiente esterno.
Il problema degli oggetti quantistici è che sono estremamente sensibili, basta un campo magnetico piccolissimo per interferire con il loro stato. I qubit posso essere paragonate a una moneta da 1 euro. La moneta una volta lanciata, nella fisica quantistica, potrà ruotare su stessa su un tavolo (sovrapposizione coerente di stati). Immagina ora di lanciare 100 monete, la capacità di combinazioni testa-croce aumenterebbe esponenzialmente (2^100) ma basta una piccola interferenza (spostare di 1 mm il tavolo) affinché le monete “collassano” nello stato testa o croce.
L’obiettivo dell’informatica quantistica è quello di far ruotare perennemente queste monete.
Un altro problema non da poco è il trasferimento di informazioni da un qubit all’altro. In un computer classico il trasferimento di informazioni è molto semplice, i bit e i transistor sono collegati tra loro come una grande rete autostradale, si può andare dal transistor n. 12434 al transistor n. 1332432 senza nessun problema.
Nei computer quantistici non si può fare una cosa così banale; IBM nel suo computer a 5 qubit è riuscita in misura limitata a risolvere questo problema poiché solo uno dei qubit è effettivamente collegato agli altri quattro.
Il problema degli algoritmi quantistici è la casualità dei risultati. Gli algoritmi quantistici non restituiscono sempre il risultato coretto e vi è una certa probabilità che un algoritmo quantistico restituisca un risultato esatto e tale probabilità cresce nel momento in cui il numero di elementi da analizzare aumenta ma non supera mai il 50%.
COMPUTER QUANTISTICI IN CIRCOLAZIONE
L’11 maggio 2011, D-Wave ha annunciato il D-Wave One, un computer quantistico integrato dotato di un processore da 128 qubit, avente nome in codice “Rainier”, e proposto al prezzo approssimativo di 10.000.000$. Un team dell’Università di Harvard ha presentato il risultato del più grande problema di ripiegamento proteico svolto utilizzando un computer quantistico, eseguendo il modello di ripiegamento proteico Miyazawa-Jernigan su un D-Wave One.
Agli inizi del 2013 la D-Wave Systems ha presentato un computer quantico a 512-qubit, con nome in codice Vesuvius. A maggio 2013, Catherine McGeoch, una consulente della D-Wave, ha pubblicato la prima comparazione della tecnologia quantistica contro dei personal computer di fascia alta, eseguendo degli algoritmi di ottimizzazione.
Utilizzando una configurazione a 439 qubits, il sistema è risultato 3600 volte più veloce di un computer classico, risolvendo problemi con più di cento variabili in mezzo secondo, invece che in mezz’ora.
Svelato nel gennaio 2017 il D-Wave 2000Q, un “computer” quantistico dotato di un chip con oltre 2000 qubit per svolgere calcoli complessi.
Ma come funziona effettivamente questa macchina?Il D-Wave 2000Q effettua i calcoli tramite un processo chiamato quantum annealing, che trasforma un problema (ad esempio trovare la strada più veloce per arrivare a casa passando da alcuni punti) in una mappa topografica fatta di picchi e avvallamenti (chi conosce i grafi nella programmazione capirà immediatamente), con la risposta ottimale alla domanda definita dal punto più basso sulla mappa.
I computer quantistici della D-Wave non sono computer nel senso in cui intende Turing, non sono programmabili. I D-Wave sono specializzati a risolvere determinate categorie di problemi e in questo sono formidabili.
IBM, nel corso di questi anni ha presentato tre versioni di computer quantistici. A maggio 2016 IBM ha presentato il suo primo computer quantistico a 5 qubit, la seconda versione dopo 18 mesi a 16 qubit e la terza rilasciata a gennaio 2019 a 20 qubit.
Dalla prima all’ultima versione vi sono stati miglioramenti tra cui la qualità dei qubit, la connettività dei circuiti e la percentuale di errori da parte del sistema e degli algoritmi. Il primo algoritmo implementato e testato è stato quello di Shor e si è riusciti a fattorizzare il numero 15. Nonostante la sua semplicità, l’algoritmo di Shor ha funzionato e questo lascia ben sperare.
IBM offre a chiunque l’accesso a un computer quantistico con un processore a 5 qubit. È possibile usufruire via cloud, di un servizio web chiamato Composer, così chiamato perché l’interfaccia assomiglia a una spartito musicale (clicca qui).
Come funzionano effettivamente questi computer IBM? I qubit sono costruiti su diversi effetti quanto-meccanici e in questo caso specifico i computer di IBM utilizzano dei qubit basati sull’effetto Josephson.
Questi tipo di qubit hanno il vantaggio di essere costruiti direttamente su dei chip di silicio (usufruendo di una tecnologia molto ben conosciuta) sui quali vengono deposti le giunzioni di Josephson (composta da due strisce di superconduttori separate da un isolante).
I metalli deposti sul silicio per essere portati allo stato superconduttivo richiedo temperature bassissime (questo vale anche sui D-Wave) e con l’ausilio di un criostato a diluizione si raggiungono temperature di circa 15 mK (- 272 °C).
PROTOTIPI DI PROCESSORI O COMPUTER QUANTISTICI
Nella metà di luglio 2018, in occasione della Conferenza Internazionale sulle Tecnologie Quantistiche (ICTQ) di Mosca, Google ha annunciato un prototipo di processore quantistico dotato di ben 49 qubit. John Martins, fisico responsabile del laboratorio di ricerca quantistica di Google, per quanto riguarda questo prototipo ha affermato che si è in grado di raggiungere la “quantum supremacy” con “soli” 49 qubit. L’idea di “quantum supremacy” consiste nel fatto che un computer quantistico, sarà in grado di eseguire alcuni procedimenti di calcolo matematico che i supercomputer classici non possono eseguire.
Tra febbraio e marzo 2018 Google ha annunciato Bristlecone, il processore quantistico da 72 qubit. La creazione di questo prototipo ha come obiettivo di fornire ai suoi ricercatori un banco di prova per la diminuzione sui tassi di errore del sistema.
D-Wave Systems ha annunciato l’arrivo nel corso del 2020 del D-Wave four , un “computer” quantistico con oltre 5000 qubit che sarà completamente operativo e accessibile via cloud o in locale da metà 2020.
PORTE LOGICHE QUANTISTICHE
Una porta logica, in elettronica digitale e informatica, è un circuito digitale in grado di implementare (cioè di realizzare, simulandone la “logica matematica” mediante opportuni controlli su segnali elettrici) una particolare operazione logica di una o più variabili booleane.
Le porte logiche quantistiche operano su bit quantici (qubit), ciò significa che le porte quantistiche possono sfruttare i due aspetti chiave della meccanica quantistica che sono completamente fuori portata per le porte logiche classiche (sovrapposizione e entanglement). Le porte quantistiche sono reversibili . Che cosa è effettivamente la reversibilità? Tutte le porte logiche quantistiche “sono dotate del pulsante “undo” (mente le porte logiche classiche non possiedono tale proprietà), e vuol significare almeno in linea di principio che le porte logiche quantistiche non perdono mai informazioni .
Non possiamo parlare di porte quantistiche senza parlare di matrici e non possiamo parlare di matrici senza parlare di array. La dimensione della matrice aumenta esponenzialmente all’aumentare del numero dei qubit (4^n).
Ci sono numerosi esempi di porte logiche quantistiche a singolo o doppio qubit, per maggiori informazioni su tutte le porte logiche quantistiche presenti cliccare qui.
LINGUAGGIO DI PROGRAMMAZIONE QUANTISTICA
Nell’informatica un linguaggio di programmazione è usato per programmare un computer a eseguire una serie di operazioni ( algoritmo ) tramite una sequenza di istruzioni detta programma informatico. Ogni linguaggio di programmazione informatica è caratterizzato da proprie regole di sintassi, lessico e semantica. Tuttavia, in molti casi ci sono anche aspetti in comune. Ad esempio, quasi tutti i linguaggi si basano sull’utilizzo delle variabili e delle istruzioni.
Sinora gli ingegneri avevano programmato i computer quantistici manualmente, aprendo o chiudendo le porte logiche dei processori a seconda delle necessità del caso e dunque si è reso necessario creare un nuovo linguaggio di programmazione che permetta di sfruttare appieno le potenzialità del computer quantistico. Con il passare del tempo sono state create le basi per lo sviluppo di linguaggi di programmazione di alto livello per i computer quantistici, come ad esempio:
- Q-gol (Greg Baker, 1996)
- qGCL (paolo Zuliani, 2000)
- Quantum C Language (Stephen Blaha, 2002)
L’obiettivo della programmazione quantistica è di creare un formalismo simile ai linguaggi di programmazione esistenti (ad esempio con una sintassi simile al C). Nella seguente tabella sono mostrate le principali differenze tra un linguaggio di programmazione classico ed un linguaggio di programmazione quantistico.
Il linguaggio di programmazione quantistica “più evoluto” si è dimostrato quello di Zuliani e utilizza una sintassi molto simile al linguaggio C. Qui sotto è illustrato un esempio applicativo del linguaggio qlc.
In questo modo sono stati effettuati i seguenti passi:
● sono stati utilizzati 5 qubits;
● lo stato della macchina è inizializzato a zero (|00000>);
● qureg a[1] alloca un bit per a.
● Il comando dump “a” ci da informazioni su “a”, in particolare:
- SPECTRUM ci dice dove i qubits per la variabile “a” sono stati allocati
- si dovrà misurare il valore 0 con probabilità 1
Nell’immagine sottostante è stato applicato l’operatore Not (Si è trovato così il negato di “a” da 0 a 1):
Il comportamento dell’operatore CNot (x,y) è cosi descritto: se il valore di y è 1 verrà modificato lo stato di x.
Sono state effettuate le seguenti operazioni:
- è stato allocato lo spazio per la variabile b
- è stato utilizzato l’operatore Not
- è stato applicato l’operatore CNot
- è stato verificato lo stato di b attraverso il comando dump.
Un altro prototipo di linguaggio di programmazione quantistico è Q#, realizzato da Microsoft. La società di Redmond, infatti, è tra quelle che stanno investendo con maggiore determinazione in questo settore, sperando di recuperare un po’ del divario che al momento, in questo campo, la separa da altri colossi come Google, Intel e IBM. Programmare con Q#, comunque, è meno complesso di quello che si possa credere. Per facilitare la vita degli sviluppatori, Microsoft ha tentato di renderlo quanto più possibile simile a Visual Studio, la suite dedicata alla programmazione informatica comprendente diversi tipi di linguaggio, come C, C++, C#, F#, Visual Basic .Net, Htmle JavaScript, e che permette la realizzazione di programmi, siti web, applicazioni web e servizi web.
In fase embrionale vi sono altri linguaggi di programmazione quantistici come: Quipper (Google), Q lambda calculus ( Alonzo Church e Stephen Cole Kleene) e Cirq (linguaggio open source di Google).
COME COSTRUIRE UN QUBIT
Una condizione importantissima per realizzare un computer quantistico è che il qubit mantenga la coerenza (stati di entanglament e sovrapposizione coerente di stati) durante tutto il tempo necessario per effettuare un’operazione logica e tale condizione si può esprimere dalla seguente disuguaglianza: t(coh) >> t(porta), in cui t(coh) è il tempo di coerenza del qubit e t(porta) è il tempo impiegato per effettuare l’operazione.
Alla condizione di coerenza si aggiungono altri criteri per la scelta di un sistema fisico adatto per implementare un computer quantistico, elencati nel 2000 da Davide Di Vincenzo:
- Identificazione di qubit ben definiti.
- Preparazione affidabile dello stato iniziale del computer quantistico, ossia la possibilità di inizializzare il computer in uno stato ben noto.
- Controllare lo stato dei qubit, campi magnetici e impulsi laser in maniera accurata, in tal modo da implementare le varie porte logiche quantistiche.
- Possibilità di misurare in maniera accurata lo stato quantistico dei qubit. Al termine dell’algoritmo è necessario “leggere” lo stato del sistema per conoscere l’esito della computazione.
Vi sono vari stati (ioni intrappolati, la trappola di Paul, atomi neutri in reticoli ottici, giunzioni Josephson, NMR, fotoni, elettroni in quantum dots) realizzati in laboratorio che soddisfano i criteri di Di Vicenzo. Tali sistemi si possono suddividere in due classi: sistemi naturali e sistemi artificiali.
Per molti anni il metodo degli ioni intrappolati è stato considerato il miglior candidato per realizzare un computer quantistico. La ricerca sta continuando a pieno ritmo, anche se le aspettative sono state leggermente ridimensionate. Gli ioni intrappolati conferiscono eccellenti proprietà di coerenza quantistica e attraverso apposite interazioni fra gli ioni è possibile “realizzare” stati entanglament e corrispettive porte logiche. Lo stato iniziale è preparato tramite pompaggio ottico e la “misurazione” viene effettuata tramite la fluorescenza ottica. L’hardware è costituito da una stringa di ioni confinati da campi elettrici, o da un array di atomi neutri confinati nello spazio da un reticolo di raggi laser incrociati. L’aspetto critico di tale tecnologia è la scalabilità dell’hardware che richiede un’architettura complessa, in particolar modo per preservare il controllo dei qubit per sistemi atomici sempre più elevati. Un approccio studiato negli ultimi anni risolve in parte questo problema e la soluzione è rappresentata da trappole suddivise in segmenti ciascuno dei quali contiene circa dieci ioni.
Gli ioni possono essere tenuti “fermi” e manipolati da campi elettrici e fasci laser. Gli ioni vengono intrappolati dentro una trappola di Paul. Una trappola di Paul è basata sul principio della sella ruotante che può essere spiegato con un semplice esempio: una pallina posata su una sella è intrappolata nella direzione longitudinale, nella quale la sella è rialzata, ma può facilmente fuggire lateralmente ma se la sella viene montata su di un palo ruotante, invece, nel momento in cui la palla “tenta di fuggire lateralmente” la posizione della sella cambierà e vedrà davanti a sé la parte rialzata della sella. La pallina è effettivamente intrappolata e bloccata in tutte le direzioni. Grazie alla tecnica degli ioni intrappolati è stato possibile realizzare una porta CNOT con un singolo ione intrappolato e si è riusciti anche a implementare dei semplici algoritmi quantistici.
La limitazione della scalabilità negli ioni intrappolati può essere risolta in parte utilizzando atomi neutri intrappolati dentro dei “cristalli di luce” creati da fasci laser sovrapposti che creano interferenza. Tali reticoli ottici intrappolano degli atomi sfruttando la forza dipolare (“la forza della luce”) e attraverso l’ausilio dei fasci laser è possibile creare strutture geometriche tridimensionali che fungono da trappole. In queste strutture possono essere intrappolati milioni di atomi che possono essere utilizzati come qubit. Il problema principale sta nel realizzare porte logiche quantistiche con due o più qubit, che nel caso degli ioni è data dell’interazione elettrostatica, quest’ultima assente per gli atomi neutri. Un approccio studiato negli ultimi anni usa stati altamente eccitati (stati di Rydeberg) per indurre un’interazione tra atomi neutri adiacenti.
Ciò che rende la giunzione Josepershon interessante per la costruzione di un qubit è il fatto che quest’ultimo è regolato da due fenomeni quanto-meccanici molto importanti: la superconduttività e l’effetto tunnel.
Un materiale è un superconduttore se al di sotto di una certa temperatura critica la resistenza elettrica è pari a zero. In un superconduttore la corrente elettrica può scorrere senza incappare in nessuna dissipazione di calore.
La definizione di effetto tunnel è la seguente:
Nella meccanica classica, la legge di conservazione dell’energia impone che una particella non possa superare un ostacolo (barriera di potenziale) se non si ha un’energia sufficiente per farlo. Nella meccanica quantistica, invece, prevede che una particella abbia una probabilità diversa da zero di attraversare spontaneamente una barriera di potenziale arbitrariamente alta.
Che cos’è una barriera di potenziale? Nel mondo che ci circonda altro non è che un semplice “muro”. Si immagina di lanciare una pallina in cima al muro, se l’energia cinetica è maggiore o uguale all’energia potenziale (l’energia della pallina se fosse posta in cima al muro)p la pallina riuscirà a superare il muro.
Nel mondo microscopico non vi sono palline ma particelle, e la barriera di potenziale non è più il semplice muro ma può presentarsi in diverse varianti come una barriera di potenziale elettrostatico o la superficie di un metallo. Il moto dell’elettrone non può essere descritto attraverso le leggi della meccanica classica (come risultato si ha una traiettoria ben nota in certo instante t) ma si dovrà utilizzare l equazione di Schoenberg o di Dirac (il risultato è probabilistico).
Se l’elettrone “incontra” una barriera di potenziale, e risolvendo alcune equazioni il risultato è sorprendente. Se l’energia dell’elettrone è inferiore all’energia della barriera di potenziale vi è una probabilità non nulla che la funzione d’onda (quindi l’elettrone) può sconfinare dall’altra parte della barriera. A livello matematico la funzione d’onda è una funzione continua e derivabile, “non può improvvisamente crollare a zero”.
Tali teorie matematiche sono state poi conformate dal fisico ucraino George Gamow nel 1928 per spiegare il decadimento alfa. L’effetto tunnel è utilizzato in vari ambiti, i dischi a stato solido si basano sulla memoria flash di tipo NAND per l’immagazzinamento dei dati, queste ultime sfruttano l’effetto tunnel per la programmazione e cancellazione delle celle delle memorie non volatili.
Dal punto di vista strutturale una giunzione Josepershon è costituita da due superconduttori uniti tra loro da un isolante (o conduttore normale). In un superconduttore gli elettroni possono muoversi liberamente de destra verso sinistra o viceversa (non c’è resistenza elettrica) , e prima o poi urteranno lo strato isolante e per effetto tunnel potrebbero passare al superconduttore successivo. In uno dei due superconduttori potrebbe accadere di avere un eccesso o carenza di elettroni che si muovono da destra verso sinistra e tutto ciò è dovuto all’effetto tunnel, e grazie a tale fenomeno nei due superconduttori si instaurano dei moti ordinati (corrente elettrica) di elettroni dalla giunzione verso l’esterno.
La giunzione Josepershon può essere utilizzata per costruire un apparato chiamato SQUID (Superconducting QUantum Interference Device), questi ultimi sono degli anelli in cui sono presenti una o più giunzioni Josepershon . Per quanto riguarda il flusso di elettroni gli SQUID presentano dei livelli quantizzati. Per costruire un qubit con degli SQUID si utilizza lo stato quantizzato fondamentale (livello 0) e lo stato quantizzato eccitato (livello 1).
Nell’ambito della computazione quantistica la risonanza magnetica NMR utilizza dei campi elettromagnetici per invertire la direzione dello spin del nucleo di un atomo dentro una molecola. Nel 2001 è stato implementato l’algoritmo di Shor per fattorizzare il numero 15 usando molecole in cui i spin nucleari di 5 atomi di fluoro (F) e 2 atomi di carbonio (C) fungevano da qubit. La NMR non viene più considerata una tecnica adatta per la realizzazione di computer quantistici poiché per fattorizzare numeri più grandi bisognerebbe aumentare notevolmente in numero di spin contenuti in una molecola, il che richiederebbe la sintesi controllata di molecole contenenti migliaia di atomi.
Uno dei metodi più interessante per realizzare un qubit è l’utilizzo della polarizzazione del fotone. In linea di principio questo è vero, ma l’assenza di interazione tra uno o più fotoni rende complicata la realizzazione di porte logiche quantistiche a più qubit.
CURIOSITÀ
L’esistenza di futuri computer quantistici stabili sarà tale grazie al fisico teorico italiano Ettore Majorana. Da poco è stata confermata l’esistenza della particella di Majorana, che è estremamente stabile ed è contemporaneamente particella e antiparticella di se stessa e ha delle proprietà eccezionali che la rendono idonea per la costruzione di qubit più stabili.
Grazie a questo comportamento ambivalente la sovrapposizione coerente di stati potrà durare più a lungo e permetterà di conservare l’informazioni in modo molto più sicuro.
La strada per la costruzione di computer quantistici è ancora lunga e vi è la presenza di grandi limiti da superare, come afferma Carl Sagan: “Da qualche parte, qualcosa di incredibile è in attesa di essere scoperto”.