Circuiti
In informatica, i circuiti sono modelli di computazione in cui l'informazione viene trasportata da fili attraverso una rete di gate, che rappresentano operazioni sull'informazione portata dai fili. I circuiti quantistici sono un modello di computazione specifico basato su questo concetto più generale.
Sebbene la parola "circuito" spesso evochi un percorso circolare, i percorsi circolari non sono in realtà consentiti nei modelli di computazione a circuito più comunemente studiati. In altre parole, di solito consideriamo circuiti aciclici quando pensiamo ai circuiti come modelli computazionali. I circuiti quantistici seguono questo schema: un circuito quantistico rappresenta una sequenza finita di operazioni che non può contenere cicli di retroazione.
Circuiti booleani​
Ecco un esempio di circuito booleano (classico), in cui i fili trasportano valori binari e i gate rappresentano operazioni di logica booleana:
Il flusso di informazioni lungo i fili va da sinistra a destra: i fili sul lato sinistro della figura, etichettati e , sono i bit di input, che possono essere impostati a qualsiasi valore binario si desideri, mentre il filo sul lato destro è l'output. I fili intermedi assumono i valori determinati dai gate, che vengono valutati da sinistra a destra.
I gate sono gate AND (etichettati ), gate OR (etichettati ) e gate NOT (etichettati ). Le funzioni calcolate da questi gate saranno probabilmente familiari a molti lettori, ma qui sono rappresentate tramite tabelle di valori:
I due piccoli cerchi pieni sui fili appena a destra dei nomi e rappresentano operazioni di fan-out, che creano semplicemente una copia del valore trasportato dal filo su cui compaiono, permettendo a questo valore di essere inviato come input a più gate. Le operazioni di fan-out non sono sempre considerate gate nel contesto classico; a volte vengono trattate come se fossero "gratuite" in un certo senso. Quando i circuiti booleani vengono convertiti in circuiti quantistici equivalenti, tuttavia, è necessario classificare esplicitamente le operazioni di fan-out come gate per gestirle e contabilizzarle correttamente.
Ecco lo stesso circuito illustrato in uno stile più comune in ingegneria elettrica, che utilizza simboli convenzionali per i gate AND, OR e NOT:
Non utilizzeremo ulteriormente questo stile né questi particolari simboli di gate, ma useremo simboli diversi per rappresentare i gate nei circuiti quantistici, che spiegheremo man mano che li incontreremo.
Il circuito particolare in questo esempio calcola l'OR esclusivo (o XOR in breve), denotato dal simbolo :
Nel diagramma successivo consideriamo una sola scelta degli input: e Ogni filo è etichettato con il valore che trasporta, così puoi seguire le operazioni. Il valore di output è in questo caso, che è il valore corretto per lo XOR:
Le altre tre possibili configurazioni di input possono essere verificate in modo analogo.
Altri tipi di circuiti​
Come suggerito sopra, la nozione di circuito in informatica è molto generale. Ad esempio, vengono talvolta analizzati circuiti i cui fili trasportano valori diversi da e , così come gate che rappresentano scelte diverse di operazioni.
Nei circuiti aritmetici, ad esempio, i fili possono trasportare valori interi mentre i gate rappresentano operazioni aritmetiche, come addizione e moltiplicazione. La figura seguente mostra un circuito aritmetico che prende due valori di input variabili ( e ) più un terzo input impostato al valore I valori trasportati dai fili, come funzioni dei valori e sono mostrati nella figura.
Possiamo anche considerare circuiti che incorporano casualità , come quelli in cui i gate rappresentano operazioni probabilistiche.
Circuiti quantistici​
Nel modello a circuito quantistico, i fili rappresentano qubit e i gate rappresentano operazioni su questi qubit. Ci concentreremo per ora sulle operazioni incontrate finora, ovvero le operazioni unitarie e le misurazioni nella base standard. Man mano che apprenderemo altri tipi di operazioni e misurazioni quantistiche, potremo arricchire il modello di conseguenza.
Ecco un semplice esempio di circuito quantistico:
In questo circuito abbiamo un singolo qubit chiamato rappresentato dalla linea orizzontale, e una sequenza di gate che rappresentano operazioni unitarie su questo qubit. Proprio come negli esempi precedenti, il flusso di informazioni va da sinistra a destra — quindi la prima operazione eseguita è un'operazione di Hadamard, la seconda è un'operazione , la terza è un'altra operazione di Hadamard e l'ultima è un'operazione . Applicare l'intero circuito equivale quindi ad applicare la composizione di queste operazioni, al qubit
A volte potremmo voler indicare esplicitamente gli stati di input o di output dei circuiti. Ad esempio, se applichiamo l'operazione allo stato otteniamo lo stato Questo può essere indicato come segue:
I circuiti quantistici spesso iniziano con tutti i qubit inizializzati a come in questo caso, ma ci sono anche situazioni in cui i qubit di input sono impostati inizialmente su stati diversi. Ecco un altro esempio di circuito quantistico, questa volta con due qubit:
Come sempre, il gate etichettato si riferisce a un'operazione di Hadamard, mentre il secondo gate è un'operazione controlled-NOT: il cerchio pieno rappresenta il qubit di controllo e il cerchio che ricorda il simbolo indica il qubit target.
Prima di esaminare questo circuito in maggiore dettaglio e spiegare cosa fa, è fondamentale chiarire come vengono ordinati i qubit nei circuiti quantistici. Questo si collega alla convenzione che Qiskit usa per nominare e ordinare i sistemi, menzionata brevemente nella lezione precedente.
In Qiskit, il qubit più in alto in un diagramma di circuito ha indice e corrisponde alla posizione più a destra in una tupla di qubit (o in una stringa, prodotto cartesiano o prodotto tensore corrispondente a questa tupla), il qubit secondo dall'alto ha indice e corrisponde alla posizione seconda da destra in una tupla, e così via. Il qubit più in basso, che ha l'indice più alto, corrisponde quindi alla posizione più a sinistra in una tupla. In particolare, i nomi predefiniti di Qiskit per i qubit in un circuito a qubit sono rappresentati dalla -tupla con come qubit in cima e in fondo nei diagrammi di circuito quantistico.
Nota che questa è un'inversione rispetto a una convenzione più comune per l'ordinamento dei qubit nei circuiti, ed è una fonte frequente di confusione. Ulteriori informazioni su questa convenzione di ordinamento sono disponibili nella pagina di documentazione Bit-ordering in Qiskit.
Sebbene a volte ci discostiamo dai nomi predefiniti specifici usati da Qiskit per i qubit, seguiremo sempre la convenzione di ordinamento descritta sopra nell'interpretare i diagrammi di circuito nel corso. Pertanto, la nostra interpretazione del circuito sopra è che descrive un'operazione su una coppia di qubit Se l'input del circuito è uno stato quantistico ad esempio, ciò significa che il qubit inferiore inizia nello stato e il qubit superiore inizia nello stato
Per capire cosa fa il circuito, possiamo scorrere le sue operazioni da sinistra a destra.
-
La prima operazione è un'operazione di Hadamard su :
Quando si applica un gate a un singolo qubit in questo modo, agli altri qubit non succede nulla (in questo caso è solo un altro qubit). Il fatto che non succeda nulla è equivalente all'esecuzione dell'operazione identità . Il rettangolo tratteggiato nella figura sopra rappresenta quindi questa operazione:
Nota che la matrice identità è a sinistra del prodotto tensoriale e è a destra, il che è coerente con la convenzione di ordinamento di Qiskit.
-
La seconda operazione è l'operazione controlled-NOT, dove è il controllo e è il target:
L'azione del gate controlled-NOT sugli stati della base standard è la seguente:
Dato che ordiniamo i qubit come con in basso e in cima nel nostro circuito, la rappresentazione matriciale del gate controlled-NOT è questa:
L'operazione unitaria implementata dall'intero circuito, che chiameremo è la composizione delle operazioni:
In particolare, ricordando la nostra notazione per gli stati di Bell,
troviamo che
Questo circuito ci fornisce quindi un modo per creare lo stato se lo eseguiamo su due qubit inizializzati a Più in generale, ci offre un modo per convertire la base standard nella base di Bell. (Nota che, sebbene non sia importante per questo esempio, il fattore di fase sull'ultimo stato, potrebbe essere eliminato se lo volessimo aggiungendo una piccola modifica al circuito. Ad esempio, potremmo aggiungere un gate controlled- all'inizio, che è simile a un gate controlled-NOT tranne per il fatto che un'operazione viene applicata al qubit target anziché un'operazione NOT quando il controllo è impostato a In alternativa, potremmo aggiungere un gate di swap alla fine. Entrambe le scelte eliminano il segno meno senza influenzare l'azione del circuito sugli altri tre stati della base standard.)
In generale, i circuiti quantistici possono contenere un numero qualsiasi di fili qubit. Possiamo anche includere fili per bit classici, indicati da doppie linee, come in questo esempio:
Qui abbiamo un gate di Hadamard e un gate controlled-NOT su due qubit e proprio come nell'esempio precedente. Abbiamo anche due bit classici, e e due gate di misurazione. I gate di misurazione rappresentano misurazioni nella base standard: i qubit vengono modificati nei loro stati post-misurazione, mentre i risultati della misurazione vengono sovrascritti sui bit classici a cui puntano le frecce.
Spesso è conveniente rappresentare una misurazione come un gate che prende un qubit come input e restituisce un bit classico (invece di restituire il qubit nel suo stato post-misurazione e scrivere il risultato su un bit classico separato). Ciò significa che il qubit misurato è stato scartato e può essere tranquillamente ignorato in seguito, poiché il suo stato è diventato o a seconda del risultato della misurazione.
Ad esempio, il seguente diagramma di circuito rappresenta lo stesso processo di quello nel diagramma precedente, ma in cui ignoriamo e dopo averli misurati:
Man mano che il corso prosegue, vedremo altri esempi di circuiti quantistici, generalmente più complicati dei semplici esempi sopra. Ecco alcuni esempi di simboli usati per denotare gate che compaiono comunemente nei diagrammi di circuito:
-
I gate a singolo qubit sono generalmente mostrati come quadrati con una lettera che indica di quale operazione si tratta, come questo:
I gate NOT (o equivalentemente gate ) sono talvolta denotati anche da un cerchio attorno a un segno più:
-
I gate di swap sono denotati come segue:
-
I gate controllati, ovvero gate che descrivono operazioni unitarie controllate, sono denotati da un cerchio pieno (che indica il controllo) collegato da una linea verticale all'operazione controllata. Ad esempio, i gate controlled-NOT, i gate controlled-controlled-NOT (o Toffoli) e i gate controlled-swap (Fredkin) sono denotati in questo modo:
-
Le operazioni unitarie arbitrarie su più qubit possono essere viste come gate. Sono rappresentate da rettangoli etichettati con il nome dell'operazione unitaria. Ad esempio, ecco una rappresentazione di un'operazione unitaria (non specificata) come gate, insieme a una versione controllata di questo gate: