
(articolo redatto da Domenico Di Mieri)
Eccoci al nostro sesto approfondimento sul quantum computing. In questo articolo vedremo come, sfruttando l’entanglement, sia possibile “trasferire” l’informazione contenuta in un quantum bit senza distruggerlo e come siano sufficienti poche gate per formare un circuito molto simile ad un circuito elettronico classico di tipo fan-out.
La clonazione di un qubit è impossibile?
Nei circuiti elettronici classici un bit può essere copiato da un registro ad un altro o, più semplicemente, duplicato utilizzando un circuito detto fan-out:

Lo stesso principio non è valido, in generale, per i circuiti quantici. Si dimostra, infatti, che non è possibile clonare un qubit.
La dimostrazione si basa sull’assurdo che esista una gate che “cloni” il qubit e sfruttando la linearità degli operatori matriciali arriva alla contraddizione che il clone di un qubit composto dalla composizione di due stati è diverso dalla composizione dei due qubit clonati.
Il fatto che non sia possibile copiare il qubit si intuisce anche se pensiamo che per “copiarlo” è necessario prima misurarlo e la misura fa collassare lo stato del qubit in uno dei valori della base scelta eliminando, di fatto, la sovrapposizione degli stati.
Esiste, però, un modo che, sfruttando l’entanglement, consente di “trasferire” l’informazione contenuta nel qubit senza distruggerlo e a tale scopo sono sufficienti poche gate utilizzate per formare un circuito molto simile a quello visto in precedenza.
1. Creazione circuito a 3 Qubit
Per cominciare creiamo un circuito composto da tre qubit e tre bit classici.

Nota che qui abbiamo utilizzato una forma più compatta del comando QuantumCircuit: passando due interi come argomento. Il comando, in questo caso, crea automaticamente un quantum register ed un classical register contenenti rispettivamente il numero di qubit ed il numero di bit classici desiderati.
Quello che vogliamo fare è “teletrasportare” l’informazione contenuta nel qubit 0 nel qubit 2 e per fare questo abbiamo bisogno di un qubit ausiliario (qubit 1).
Per prima cosa settiamo il qubit 0 a |1> utilizzando la gate di Pauli X:

In questo caso abbiamo utilizzato il comando barrier per creare una sorta di separazione tra una prima sezione del circuito, in cui settiamo i valori di input, e la sezione successiva, in cui creeremo il circuito che effettua il teletrasporto dell’informazione da q0 a q2. Nota che l’utilizzo di una barrier è spesso necessario perché Qiskit trasforma, attraverso un componente chiamato “transpiler”, il circuito da noi composto usando comandi Python in un insieme di segnali fisici utilizzabili su un computer quantico. Nel fare ciò il transpiler esegue delle ottimizzazioni e, quindi, se trova delle condizioni per cui due gate, ad esempio, messe in sequenza si “annullano”, allora le rimuove semplicemente. Ovviamente questo non è vero nella realtà dove, a causa degli errori dovuti ai problemi di coerenza del qubit ogni gate cioè ogni livello di elaborazione introduce un errore casuale.
2. Inserire circuito in stato “entangled”
A questo punto inseriamo un circuito che metta i qubit 1 e 2 in uno stato entangled (a tale scopo ricordiamo che si usa il circuito composto da una gate di Hadamard ed una CNOT)

A questo punto è sufficiente applicare l’operazione inversa al qubit che non è in stato entangled per far sì che l’informazione contenuta nel qubit 0 venga “trasportata” nel qubit 2:

A questo punto possiamo “misurare” i qubit.
In questo caso aggiungiamo una “barrier” solo per separare logicamente i circuiti:

Da notare che anche qui abbiamo utilizzato la forma compatta del comando measure per copiare il valore dei qubit 0 e 1 nei bit classici 0 e 1.
3. Completare protocollo di teletrasporto
Inseriamo una ulteriore barrier e aggiungiamo due ultime gate per completare il protocollo di teletrasporto:

A questo punto effettuiamo la misurazione del qubit 2 ed effettuare la simulazione:

Come si vede dalle etichette sull’asse x il qubit 2 (quello più in basso) assume sempre valore 1 esattamente come il qubit 0 in ingresso. Gli altri 2 qubit assumono valori casuali e, di conseguenza, i 4 stati possibili (una volta fissato 1 dei 3 bit) sono equiprobabili.
Qiskit è una potente libreria che mette a disposizione molti strumenti utili per lavorare con i circuiti quantici e con la rappresentazione dei qubit.
Se, ad esempio, vogliamo rappresentare i qubit sulla sfera di Bloch possiamo utilizzare il simulatore “statevector_simulator”:

Con questo circuito si possono “teletrasportare” in maniera quasi istantanea le informazioni anche a grande distanza.
Conclusioni
Con questo circuito si possono “teletrasportare” in maniera quasi istantanea le informazioni anche a grande distanza.
Se anche tu vuoi occuparti di progetti di sviluppo software di ultima generazione
dai un’occhiata alle nostre opportunità di lavoro e conosciamoci subito!