
(articolo redatto da Domenico Di Mieri)
SIAMO GIUNTI AL nostro QUINTO approfondimento sul quantum computing.
Nei precedenti articoli, dopo un’introduzione generale, abbiamo visto:
- come installare l’ambiente di sviluppo (Anaconda e Jupyter Notebook);
- come creare un semplice circuito quantico che prende in ingresso due qubit e genera due qubit entangled (tramite l’operatore H di Hadamard);
- come simulare il circuito sul nostro computer (classico).
Alla fine dei vari step abbiamo ottenuto il grafico sotto riportato:

Il grafico riporta il conteggio delle misure dei due qubit che, come ci aspettavamo, si distribuiscono equamente data la casualità (vera) dei vettori di stato (la differenza tra i valori nel grafico è dovuta al numero limitato di “ripetizioni” fatte dal simulatore).
QUI riprenderemo lo stesso circuito, lo invieremo ad un computer quantico e ne valuteremo i risultati.
Segui i passaggi e ricrea il circuito
Per prima cosa apri Jupyter Notebook, crea un nuovo script Python e ricrea il circuito:

A questo punto carica le credenziali per l’accesso al server IBM:


E continua con i comandi come di seguito:

per ottenere il provider dei servizi di esecuzione remota

per ottenere un riferimento al computer che utilizzeremo (in questo caso ‘ibmq_manila’ ma se ne può scegliere uno qualsiasi tra quelli elencati dal comando provider.backends() )

Avvia l’esecuzione del circuito (circuit) sul computer quantico specifico (qcomp).
Si noti che in questo caso conviene utilizzare l’oggetto job che, come dice il nome, rappresenta un lavoro schedulato sulla macchina remota. Questo perché al contrario della nostra macchina fisica il computer remoto potrebbe essere impegnato con lavori inviati da altri utenti e, quindi, potrebbe essere necessario attendere a lungo prima di ottenere i risultati dell’elaborazione.

Importa la funzione job_monitor dalla libreria tools.monitor

Non è necessario chiamare questa funzione: serve solo per visualizzare l’id del job che abbiamo sottomesso al server remoto

Con questa funzione ci mettiamo in attesa del risultato. La funzione visualizza lo stato del job ed in particolare la posizione nella coda di attesa (in questo caso ci sono 114 lavori prima del nostro)

Memorizza nella variabile result il risultato del job

Visualizza il conteggio delle misure effettuate sui due qubit.
Conclusioni
Si noti che su una macchina reale oltre ai vettori <0|0> e <1|1> si misurano anche i vettori <0|1> e <1|0> sebbene la probabilità di questi ultimi sia molto bassa. Ciò accade perché i computer quantici odierni non sono “ideali” ed i qubit possono degradarsi durante l’elaborazione a causa di interferenze con l’ambiente esterno e, di conseguenza, il risultato ottenuto è diverso da quello atteso.
Fortunatamente ci sono diversi gruppi di ricerca che lavorano proprio alla realizzazione di computer quantici più affidabili per cui questo errore sarà sempre più trascurabile.
Negli esempi fatti finora abbiamo utilizzato la porta di Hadamard, ma cosa sono le porte quantiche? Quali porte è possibile usare e se ne possono creare delle altre?
Lo vedremo nel nostro prossimo appuntamento.
Se anche tu vuoi occuparti di progetti di sviluppo software di ultima generazione
dai un’occhiata alle nostre opportunità di lavoro e conosciamoci subito!