Costruiamo il ponte tra la meccanica quantistica e il calcolo quantistico, in altre parole, come le leggi quantistiche possono essere sfruttate negli strumenti di cui abbiamo bisogno, l'informatica, e ciò può essere fatto attraverso un parallelismo con il calcolo classico.
Visitiamo anche un primo snippet Qiskit e terminiamo eseguendo un primo circuito Quantum su un vero processore Quantum, utilizzando IBM Q Experience usando accenni del linguaggio Qasm.
L'area di studi é davvero vasta poiché è il fratello quantistico della tipica scienza dell'informazione. Si occupa di rappresentare, manipolare e mantenere le informazioni negli stati quantistici. Affronta molti problemi che non esistevano, almeno nella stessa forma, nell'informatica classica, come la correzione degli errori quantistici, il teletrasporto quantistico, la comunicazione quantistica.
È l'unità d'informazione più semplice nei sistemi classici, il bit (abbreviazione di unità binaria), può memorizzare un valore 0 o 1, quindi binario.
Esiste una metafora piuttosto interessante per spiegare la differenza tra i bit e il loro equivalente quantistico, ed é basata sul concetto di lancio della moneta.
Quando si lancia una moneta, il risultato sarà croce o testa - 0 o 1. Questo è uno stato binario e deterministico.. L'invito importante é di non pensare ai casi di atterraggio verticale finché non si riesce a farlo.
Il registro classico è un array di n bit indipendenti. Un registro a 1 bit è semplicemente un bit e può essere in uno su 2^1 = 2 stati possibili, mentre un registro a 8 bit può essere in uno su 2^8 = 256 stati.
Supponiamo di avere uno stato quantistico (isolato dall'interferenza) che non è stato misurato. Se ci riferiamo ai 2 stati possibili visti nel primo articolo (Quantum/1), sappiamo che il nostro stato è una combinazione di 0 e 1:
| ψ⟩ = α | 0⟩ + β | 1⟩
Ciò significa esattamente che il sistema non è in uno solo degli stati (assumendo α e β diversi da 0), ma contiene le informazioni di entrambi gli stati possibili allo stesso tempo.
Dal punto di vista della metafora, invece di testa o croce, possiamo confrontare questo stato con una moneta che sta ancora girando. Questa è l'essenza del qubit, uno stato simultaneo di 0 e 1 (descritto secondo la distribuzione di probabilità di α e β). Da notare che lo stato non è nascosto in base alle probabilità, ma piuttosto composto da entrambe le possibilità:
|ψ⟩ = α |0⟩ + β |1⟩
A differenza di un bit, si ha un singolo stato quantistico con due stati simultanei. Ciò é importante perché questa incertezza contiene in sé molto di più di un bit deterministico, cosicché quando eseguiamo le operazioni vengono applicate a tutti gli stati possibili e non solo a uno dei possibili.
Il registro quantistico è un array di n qubit. Un registro quantistico a 1-bit è semplicemente un qubit e può contenere 2^1 = 2 stati possibili, mentre un registro quantico a 8 qubit può contenere 2^8 = 256 stati, non solo uno come i registri classici, ma tutti.
Con una moneta, lo stato può essere 0 o 1:
Con due monete, lo stato può essere 00 o 01 o 10 o 11:
Con tre monete, lo stato può essere 000 o 001 o 010 o 011 o 100 o 101 o 110 o 111:
Essenzialmente se abbiamo "n" monete, possiamo avere uno dei 2^n stati possibili. Per n = 4 (2^4 = 16 stati possibili), 1010 sarebbe rappresentato come:
Con una moneta rotante, lo stato è 0 e 1:
Con due monete rotanti (indipendenti), lo stato è 00 e 01 e 10 e 11:
Con tre monete rotanti (indipendenti), lo stato è 000 e 001 e 010 e 011 e 100 e 101 e 110 e 111:
Essenzialmente se abbiamo "n" monete rotanti (indipendenti), possiamo avere 2^n stati possibili simultaneamente.
Per n = 4 il nostro stato vale 2^4 = 16 possibilità. Le informazioni che si possono avere crescono esponenzialmente con il numero di monete che girano o qubit. Questa è la vera potenza del qubit e questa versione "sovralimentata" del bit aiuta a comprendere perché il Quantum Computing sposta l'ago della bilancia a suo favore.
Dal momento che i bit hanno anche unità di ordine superiore (trit per uno stato ternario, etc...), anche il qubit ha il suo equivalente di ordine d: il qudit o quantum d-git.
Nel caso dell'atomo di idrogeno, si può semplicemente considerarlo come avente 3 orbite possibili, quindi | 0⟩, | 1⟩ e | 2⟩ (un qudit con d = 3 è in realtà un qutrit - quantum trit). Tuttavia, non si considera queste unità poiché il loro utilizzo non è così semplice e una volta che si padroneggiano i qubit, è più facile estrapolare verso altre arità (numero degli argomenti o operandi che richiede la funzione) piuttosto che viceversa.
In python per creare un ClassicalRegister su Qiskit:
Allo stesso modo per QuantumRegister:
Per il nostro scopo, i registri classici serviranno solo per salvare i risultati delle misurazioni sui qubit.
Per collegare i registri classici e quantistici in un circuito quantistico:
Ciò che si può fare oggi è piuttosto limitato, ma questi sono gli elementi costitutivi di cui si necessita per successivamente applicare le operazioni che possono essere fatte prima di misurare un circuito quantistico.
Il codice per visualizzare il circuito complesso :
Si nota che entrambi i qubit (q00 e q01) sono inizialmente nello stato | 0⟩, il che significa che:
α =1 e β = 0 nella | ψ⟩ = α | 0⟩ + β | 1⟩
Questo in base alla progettazione e allo stato iniziale della maggior parte degli esperimenti. Il simbolo che collega il qubit a ciascun bit è il simbolo universale per la misurazione quantistica.
Qasm deriva da "Open Quantum Assembly Language" (si legge "kazm"). È un'invenzione piuttosto recente, proveniente da un documento del 2017:
È un linguaggio descrittivo che mappa un circuito quantistico come istruzioni di testo. Da allora è diventato uno standard ed è utile comprendere la struttura generale di questi documenti. Nell'esempio del circuito sopra q0 è stato cambiato in q e c0 a c dovuto ad alcuni interpreti Qasm:
IBM Q Experience supporta QASM nell'editor in linea e si può letteralmente utilizzare una GUI e controllare l'equivalente Qasm (e viceversa). Per procedere, andare nell'editor e fare quanto segue:
Così facendo sono state appena eseguite le istruzioni su un computer quantistico, e si riceverà un'e-mail con i risultati: potrebbero esserci altri jobs (lavori) in coda davanti a questo.
Il codice sopra è stato scritto in un Jupyter Notebook che é possibile eseguire in locale sulla propria macchina, e aiuterà a capire Qiskit sin dall'inizio.