Guida introduttiva alla computazione quantistica con MATLAB
MATLAB Support Package for Quantum Computing consente di creare, simulare ed eseguire algoritmi quantistici.
| Porta a singolo qubit | |||
| Applica una porta a singolo qubit a un circuito quantistico. La quantità tra parentesi () indica l’indice del qubit a cui viene applicata la porta. | |||
| Oggetto quantumCircuit | Grafico | Matrice | |
|---|---|---|---|
| Sintassi | >> qc |
|
>> getMatrix(qc) |
| Output |
|
|
|
| Porta a singolo qubit | Descrizione |
|---|---|
|
xGate = rotazione di π attorno all’asse x applicata al qubit 1 |
|
yGate = rotazione di π attorno all’asse y applicata al qubit 1 |
|
zGate = rotazione di π attorno all’asse z applicata al qubit 1 |
|
sGate = rotazione positiva di π/2 attorno all’asse z |
|
tGate = rotazione positiva di π/4 attorno all’asse z |
|
tiGate = rotazione negativa di π/4 attorno all’asse z |
|
hGate = porta di Hadamard |
|
idGate = porta identità (non esegue alcuna operazione) |
Le porte di rotazione sono porte a singolo qubit con due argomenti. Il primo è l’indice del qubit a cui viene applicata la porta, mentre il secondo è l’angolo di rotazione o la fase (θ) espressa in radianti.
Porta parametrizzata a singolo qubit |
Descrizione |
|
rxGate = porta di rotazione attorno all’asse x |
|
ryGate = porta di rotazione attorno all’asse y |
|
rzGate = porta di rotazione attorno all’asse z |
|
r1Gate = porta di rotazione attorno all’asse z con fase globale |
Porte con un qubit di controllo
Applica una porta con un qubit di controllo a un circuito quantistico. Queste porte hanno due argomenti tra parentesi (); il primo è il qubit di controllo e il secondo è il qubit di destinazione. Se il qubit di controllo si trova nello stato |0>, la porta non esegue alcuna operazione. Se il qubit di controllo si trova nello stato |1>, la porta specificata agisce sul qubit di destinazione. >> cxGate(control,target)
Indice del qubit 1: qubit di controllo
Indice del qubit 2: qubit di destinazione
Le porte di rotazione controllate sono porte a due qubit con tre argomenti. Il primo è il qubit di controllo, il secondo è il qubit di destinazione e il terzo è l’angolo di rotazione o la fase (θ) espressa in radianti.
Porta due qubit |
Descrizione |
|
cxGate o cnotGate = rotazione di π attorno all’asse x sul qubit 2 se il qubit 1 si trova nello stato |1> |
|
cyGate = rotazione di π attorno all’asse y sul qubit 2 se il qubit 1 si trova nello stato |1> |
|
czGate = rotazione di π attorno all’asse z sul qubit 2 se il qubit 1 si trova nello stato |1> |
|
chGate = porta di Hadamard controllata |
Porta parametrizzata a due qubit |
Descrizione |
|
crxGate = porta di rotazione controllata attorno all’asse x |
|
cryGate = porta di rotazione controllata attorno all’asse y |
|
crzGate = porta di rotazione controllata attorno all’asse z |
|
cr1Gate = porta di rotazione controllata attorno all’asse z con fase globale |
Porte speciali
Porta |
Descrizione |
compositeGate (qc, [1,2]) |
Costruisce una porta composta a partire da un circuito quantistico interno e restituisce un oggetto CompositeGate. Nell’esempio, qc rappresenta il circuito quantistico interno. |
|
Porta X controllata da due qubit (porta CCNOT o di Toffoli) |
mcxGate(1:3,4,5) |
Porta X a controllo multiplo Il primo argomento è costituito da tre qubit di controllo (1, 2, 3), il secondo argomento è un qubit di destinazione (4) e il terzo argomento è un qubit ancilla (5). Questa porta agisce su un singolo qubit di destinazione in base agli stati dei qubit di controllo e utilizza un numero di qubit ancilla che determina il numero di porte semplici. |
|
Porta della trasformata di Fourier quantistica (QFT) |
Nelle porte qui sotto, il primo e il secondo argomento sono gli indici dei qubit, mentre il terzo è la fase (θ), eccetto swapGate, che ha due argomenti. La sostituzione dei due qubit di destinazione in tutte le porte riportate di seguito non modifica il funzionamento delle porte stesse.
Porta |
Descrizione |
|
Porta di accoppiamento di Ising XX |
|
Porta di accoppiamento di Ising YY |
|
Porta di accoppiamento di Ising ZZ |
|
Scambia i valori dei qubit |
| Operazioni sui circuiti quantistici | ||
Operazione |
Esempio |
Output |
|
|
|
|
|
|
getMatrix = rappresentazione matriciale di un circuito quantistico o di una porta |
>> getMatrix(bell) |
|
generateQASM = generazione di codice QASM |
>> generateQASM(bell) |
|
simulate(circuit, inputState), simulazione del circuito, definizione dello stato quantistico iniziale del circuito e restituzione di un oggetto QuantumState |
>> simulate(bell) |
|
unpack = scomposizione delle porte composite all’interno di un circuito quantistico |
|
|
Operazioni sui circuiti quantistici simulate |
||
Operazione |
Esempio |
Output |
Inizializzazione dello stato quantistico del circuito in modo che il qubit 1 (il qubit superiore nel grafico del circuito) sia impostato su |1> e il secondo su |0> |
S=simulate(bell,"10") |
|
Visualizzazione degli stati di output di base e le relative ampiezze |
|
|
Visualizzazione dello stato finale del circuito, ad esempio la base in cui rappresentare ciascun qubit |
|
|
Visualizzazione degli stati possibili e della probabilità di misurare ciascuno stato |
|
states = "00" P= |
| Esecuzione di un campionamento casuale dello stato quantistico del circuito con un numero qualsiasi di shot |
|
|
Funzione |
Descrizione |
|
Connessione a un dispositivo Amazon Braket specificando il nome del dispositivo, la regione e il percorso del bucket S3 in cui memorizzare i risultati |
|
Connessione a un dispositivo quantistico IBM specificando il nome del dispositivo e le credenziali dell’account |
|
Acquisizione di ulteriori informazioni sul dispositivo |
|
Creazione di un’attività per eseguire il circuito sul dispositivo |
|
Verifica dello stato di un’attività |
|
Recupero del risultato dell’esecuzione del circuito |
|
>> plot(qftGate(1:3))
|
|
| >> GitHub con esempi | ||