Vai al contenuto principale

Discretizzazione degli errori

Finora abbiamo considerato gli errori XX e ZZ nel contesto del codice di Shor a 9 qubit; in questa sezione esamineremo gli errori arbitrari. Scopriremo che, per gestire tali errori, non occorre fare nulla di diverso da quello che abbiamo già discusso: la capacità di correggere errori XX, errori ZZ, o entrambi, implica la capacità di correggere errori arbitrari. Questo fenomeno è talvolta chiamato discretizzazione degli errori.

Errori unitari su un qubit​

Cominciamo con gli errori unitari su un singolo qubit. Per esempio, un tale errore potrebbe corrispondere a una piccola rotazione della sfera di Bloch, che rappresenta magari l'errore introdotto da un gate non perfetto. Oppure potrebbe essere qualsiasi altra operazione unitaria su un qubit, non necessariamente vicina all'identità.

Potrebbe sembrare difficile correggere questo tipo di errori. Dopotutto, le possibilità sono infinite, ed è inconcepibile riuscire a identificare ogni errore esattamente e poi annullarlo. Tuttavia, fintanto che siamo in grado di correggere un bit-flip, un phase-flip, o entrambi, riusciremo a correggere un errore unitario arbitrario su un singolo qubit usando le procedure descritte in precedenza nella lezione.

Per capire perché, osserviamo innanzitutto che qualsiasi matrice unitaria 2×22 \times 2 U,U, che rappresenta un errore su un singolo qubit, può essere espressa come combinazione lineare delle quattro matrici di Pauli (inclusa la matrice identità).

U=αI+βX+γY+δZU = \alpha \mathbb{I} + \beta X + \gamma Y + \delta Z

Come vedremo, quando vengono eseguiti i circuiti di rilevamento degli errori, le misurazioni che forniscono i bit della sindrome collassano effettivamente lo stato della codifica in modo probabilistico verso uno stato in cui si è verificato un errore (o l'assenza di errore) descritto da una delle quattro matrici di Pauli. (Dal fatto che UU è unitaria segue che i numeri α,\alpha, β,\beta, γ\gamma e δ\delta devono soddisfare ∣α∣2+∣β∣2+∣γ∣2+∣δ∣2=1,\vert\alpha\vert^2 + \vert\beta\vert^2 + \vert\gamma\vert^2 + \vert\delta\vert^2 = 1, e in effetti i valori ∣α∣2,\vert\alpha\vert^2, ∣β∣2,\vert\beta\vert^2, ∣γ∣2\vert\gamma\vert^2 e ∣δ∣2\vert\delta\vert^2 sono le probabilità con cui lo stato codificato collassa verso uno stato in cui si è verificato il corrispondente errore di Pauli.)

Per spiegare il funzionamento in maggiore dettaglio, è conveniente usare pedici per indicare su quale qubit agisce una data operazione unitaria. Per esempio, usando la convenzione di numerazione dei qubit di Qiskit (Q8,Q7,…,Q0)(\mathsf{Q}_8,\mathsf{Q}_7,\ldots,\mathsf{Q}_0) per i 9 qubit del codice di Shor, abbiamo le seguenti espressioni per varie operazioni unitarie su singoli qubit, dove in ciascun caso si esegue il prodotto tensoriale della matrice unitaria con la matrice identità su tutti gli altri qubit.

X0=I⊗I⊗I⊗I⊗I⊗I⊗I⊗I⊗XZ4=I⊗I⊗I⊗I⊗Z⊗I⊗I⊗I⊗IU7=I⊗U⊗I⊗I⊗I⊗I⊗I⊗I⊗I\begin{aligned} X_0 & = \mathbb{I} \otimes \mathbb{I} \otimes \mathbb{I} \otimes \mathbb{I} \otimes \mathbb{I} \otimes \mathbb{I} \otimes \mathbb{I} \otimes \mathbb{I} \otimes X \\[1.5mm] Z_4 & = \mathbb{I} \otimes \mathbb{I} \otimes \mathbb{I} \otimes \mathbb{I} \otimes Z \otimes \mathbb{I} \otimes \mathbb{I} \otimes \mathbb{I} \otimes \mathbb{I} \\[1.5mm] U_7 & = \mathbb{I} \otimes U \otimes \mathbb{I} \otimes \mathbb{I} \otimes \mathbb{I} \otimes \mathbb{I} \otimes \mathbb{I} \otimes \mathbb{I} \otimes \mathbb{I} \end{aligned}

In particolare, per una data operazione unitaria su un qubit U,U, possiamo specificare l'azione di UU applicata al qubit kk con la formula seguente, simile alla precedente ma in cui ogni matrice rappresenta un'operazione applicata al qubit k.k.

Uk=αIk+βXk+γYk+δZkU_k = \alpha \mathbb{I}_k + \beta X_k + \gamma Y_k + \delta Z_k

Supponiamo ora che ∣ψ⟩\vert\psi\rangle sia la codifica a 9 qubit di uno stato di qubit. Se l'errore UU si verifica sul qubit k,k, otteniamo lo stato Uk∣ψ⟩,U_k \vert\psi\rangle, che può essere espresso come combinazione lineare di operazioni di Pauli applicate a ∣ψ⟩\vert\psi\rangle nel modo seguente.

Uk∣ψ⟩=α∣ψ⟩+βXk∣ψ⟩+γYk∣ψ⟩+δZk∣ψ⟩U_k \vert\psi\rangle = \alpha \vert\psi\rangle + \beta X_k\vert\psi\rangle + \gamma Y_k\vert\psi\rangle + \delta Z_k\vert\psi\rangle

A questo punto effettuiamo la sostituzione Y=iXZ.Y = iXZ.

Uk∣ψ⟩=α∣ψ⟩+βXk∣ψ⟩+iγXkZk∣ψ⟩+δZk∣ψ⟩U_k \vert\psi\rangle = \alpha \vert\psi\rangle + \beta X_k\vert\psi\rangle + i \gamma X_kZ_k\vert\psi\rangle + \delta Z_k\vert\psi\rangle

Consideriamo ora i passi di rilevamento e correzione degli errori descritti in precedenza. Possiamo pensare ai risultati delle misurazioni dei tre controlli di parità del codice interno insieme a quello del codice esterno come a una singola sindrome composta da 8 bit. Subito prima delle misurazioni effettive nella base standard che producono questi bit di sindrome, lo stato ha la forma seguente.

α ∣I syndrome⟩⊗∣ψ⟩+β ∣Xk syndrome⟩⊗Xk∣ψ⟩+iγ ∣XkZk syndrome⟩⊗XkZk∣ψ⟩+δ ∣Zk syndrome⟩⊗Zk∣ψ⟩\begin{gathered} \alpha\,\vert \mathbb{I} \text{ syndrome}\rangle \otimes \vert\psi\rangle \\ + \beta\,\vert X_k \text{ syndrome}\rangle \otimes X_k\vert\psi\rangle \\ + i \gamma\,\vert X_k Z_k \text{ syndrome}\rangle \otimes X_k Z_k\vert\psi\rangle \\ + \delta\,\vert Z_k \text{ syndrome}\rangle \otimes Z_k\vert\psi\rangle \end{gathered}

Per essere precisi, a questo punto abbiamo due sistemi. Il sistema a sinistra è formato dagli 8 qubit che misureremo per ottenere la sindrome, dove ∣I syndrome⟩,\vert \mathbb{I} \text{ syndrome}\rangle, ∣Xk syndrome⟩,\vert X_k \text{ syndrome}\rangle, e così via, indicano qualsiasi stato della base standard a 8 qubit coerente con il corrispondente errore (o assenza di errore). Il sistema a destra è composto dai 9 qubit utilizzati per la codifica.

Si noti che questi due sistemi sono ora correlati (in generale), e questo è il motivo fondamentale per cui il meccanismo funziona. Misurando la sindrome, lo stato dei 9 qubit a destra collassa effettivamente verso uno stato in cui è stato applicato a uno dei qubit un errore di Pauli coerente con la sindrome misurata. Inoltre, la sindrome stessa fornisce informazioni sufficienti per annullare l'errore e recuperare la codifica originale ∣ψ⟩.\vert\psi\rangle.

In particolare, se i qubit della sindrome vengono misurati e vengono apportate le opportune correzioni, otteniamo uno stato esprimibile come matrice densità,

ξ⊗∣ψ⟩⟨ψ∣,\xi \otimes \vert\psi\rangle\langle\psi\vert,

dove

ξ=∣α∣2∣I syndrome⟩⟨I syndrome∣+∣β∣2∣Xk syndrome⟩⟨Xk syndrome∣+∣γ∣2∣XkZk syndrome⟩⟨XkZk syndrome∣+∣δ∣2∣Zk syndrome⟩⟨Zk syndrome∣.\begin{aligned} \xi = & \vert\alpha\vert^2 \vert \mathbb{I} \text{ syndrome}\rangle\langle \mathbb{I} \text{ syndrome}\vert \\[1mm] & + \vert\beta\vert^2 \vert X_k \text{ syndrome}\rangle\langle X_k \text{ syndrome}\vert\\[1mm] & + \vert\gamma\vert^2 \vert X_k Z_k \text{ syndrome}\rangle\langle X_k Z_k \text{ syndrome}\vert\\[1mm] & + \vert\delta\vert^2 \vert Z_k \text{ syndrome}\rangle\langle Z_k \text{ syndrome}\vert. \end{aligned}

La cosa fondamentale è che si tratta di uno stato prodotto: abbiamo la nostra codifica originale non corrotta come fattore tensoriale di destra, mentre a sinistra abbiamo una matrice densità ξ\xi che descrive una sindrome di errore casuale. Non esiste più alcuna correlazione con il sistema a destra, che è quello di nostro interesse, perché gli errori sono stati corretti. A questo punto possiamo scartare i qubit della sindrome oppure reimpostarli per riutilizzarli. Questo è il modo in cui la casualità — ovvero l'entropia — prodotta dagli errori viene rimossa dal sistema.

Questa è la discretizzazione degli errori per il caso speciale degli errori unitari. In sostanza, misurando la sindrome, proiettiamo effettivamente l'errore su un errore descritto da una matrice di Pauli.

A prima vista potrebbe sembrare troppo bello per essere vero poter correggere errori unitari arbitrari in questo modo, persino errori minuscoli e quasi impercettibili di per sé. Ma ciò che è importante capire è che si tratta di un errore unitario su un singolo qubit, e per la struttura del codice un'operazione su un singolo qubit non può modificare lo stato del qubit logico codificato. Tutto ciò che può fare è spostare lo stato fuori dal sottospazio delle codifiche valide, ma poi i rilevamenti degli errori collassano lo stato e le correzioni lo riportano al punto di partenza.

Errori arbitrari su un qubit​

Infine, consideriamo errori arbitrari che non sono necessariamente unitari. Per essere precisi, considereremo un errore descritto da un canale quantistico arbitrario Φ\Phi su un qubit. Per esempio, potrebbe trattarsi di un canale di dephasing o depolarizzante, di un canale di reset, oppure di un canale strano che non abbiamo mai preso in considerazione prima.

Il primo passo consiste nel considerare una qualsiasi rappresentazione di Kraus di Φ.\Phi.

Φ(σ)=∑jAjσAj†\Phi(\sigma) = \sum_j A_j \sigma A_j^{\dagger}

Si tratta di un canale su un qubit, quindi ogni AjA_j è una matrice 2×2,2\times 2, che possiamo esprimere come combinazione lineare di matrici di Pauli.

Aj=αjI+βjX+γjY+δjZA_j = \alpha_j \mathbb{I} + \beta_j X + \gamma_j Y + \delta_j Z

Questo ci permette di esprimere l'azione dell'errore Φ\Phi su un qubit scelto kk in termini di matrici di Pauli come segue.

Φk(∣ψ⟩⟨ψ∣)=∑j(αjIk+βjXk+γjYk+δjZk)∣ψ⟩⟨ψ∣(αjIk+βjXk+γjYk+δjZk)†\Phi_k \bigl( \vert\psi\rangle\langle\psi\vert\bigr) = \sum_j (\alpha_j \mathbb{I}_k + \beta_j X_k + \gamma_j Y_k + \delta_j Z_k) \vert\psi\rangle\langle\psi\vert (\alpha_j \mathbb{I}_k + \beta_j X_k + \gamma_j Y_k + \delta_j Z_k)^{\dagger}

In breve, abbiamo semplicemente espanso tutte le nostre matrici di Kraus come combinazioni lineari di matrici di Pauli.

Se ora calcoliamo e misuriamo la sindrome degli errori, e correggiamo gli eventuali errori rilevati, otterremo uno stato simile a quello del caso unitario:

ξ⊗∣ψ⟩⟨ψ∣,\xi \otimes \vert\psi\rangle\langle\psi\vert,

dove questa volta abbiamo

ξ=∑j(∣αj∣2∣I syndrome⟩⟨I syndrome∣+∣βj∣2∣Xk syndrome⟩⟨Xk syndrome∣+∣γj∣2∣XkZk syndrome⟩⟨XkZk syndrome∣+∣δj∣2∣Zk syndrome⟩⟨Zk syndrome∣).\begin{aligned} \xi = & \sum_j \Bigl(\vert\alpha_j\vert^2 \vert \mathbb{I} \text{ syndrome}\rangle\langle \mathbb{I} \text{ syndrome}\vert \\[-3mm] & \qquad + \vert\beta_j\vert^2 \vert X_k \text{ syndrome}\rangle\langle X_k \text{ syndrome}\vert\\[2mm] & \qquad + \vert\gamma_j\vert^2 \vert X_k Z_k \text{ syndrome}\rangle\langle X_k Z_k \text{ syndrome}\vert\\[2mm] & \qquad + \vert\delta_j\vert^2 \vert Z_k \text{ syndrome}\rangle\langle Z_k \text{ syndrome}\vert \Bigr). \end{aligned}

I dettagli sono un po' più elaborati e non sono mostrati qui. Concettualmente, l'idea è identica al caso unitario.

Generalizzazione​

La discretizzazione degli errori si generalizza ad altri codici di correzione degli errori quantistici, inclusi quelli in grado di rilevare e correggere errori su più qubit. In questi casi, gli errori su più qubit possono essere espressi come prodotti tensoriali di matrici di Pauli, e di conseguenza le diverse sindromi specificano correzioni tramite operazioni di Pauli che potrebbero essere eseguite su più qubit, anziché su uno solo.

Ancora una volta, misurando la sindrome, gli errori vengono effettivamente proiettati o collassati su un insieme discreto di possibilità rappresentate da prodotti tensoriali di matrici di Pauli, e correggendo quegli errori di Pauli possiamo recuperare lo stato codificato originale. Nel frattempo, qualsiasi casualità generata nel processo viene trasferita nei qubit della sindrome, che vengono scartati o reimpostati, rimuovendo così dal sistema la casualità prodotta in questo processo.