Przejdź do głównej treści

Dyskretyzacja błędów

Do tej pory rozważaliśmy błędy XX i ZZ w kontekście 9-kubitowego kodu Shora, a w tej sekcji zajmiemy się błędami dowolnymi. Przekonamy się, że aby sobie z nimi poradzić, nie musimy robić nic innego niż to, co już omówiliśmy; zdolność do korygowania błędów XX, ZZ lub obu jednocześnie oznacza zdolność do korygowania błędów dowolnych. Zjawisko to bywa nazywane dyskretyzacją błędów.

Unitarne błędy kubitów

Zacznijmy od jednobitowych błędów unitarnych. Na przykład taki błąd może odpowiadać bardzo małemu obrotowi sfery Blocha, reprezentując choćby błąd wynikający z niedoskonałości Gate'u. Może też być dowolną inną operacją unitarną na kubicie — niekoniecznie bliską operacji identycznościowej.

Mogłoby się wydawać, że korygowanie takich błędów jest trudne. W końcu jest nieskończenie wiele możliwych błędów tego rodzaju i trudno sobie wyobrazić, żebyśmy mogli dokładnie zidentyfikować każdy z nich, a następnie go odwrócić. Jednak dopóki potrafimy korygować przerzut bitu, przerzut fazy lub oba, będziemy w stanie skutecznie korygować dowolny jednobitowy błąd unitarny, korzystając z procedur opisanych wcześniej w tej lekcji.

Aby zrozumieć, dlaczego tak jest, zauważmy najpierw, że dowolną macierz unitarną 2×22 \times 2 o nazwie U,U, reprezentującą błąd na pojedynczym kubicie, możemy wyrazić jako kombinację liniową czterech macierzy Pauliego (łącznie z macierzą jednostkową).

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

Jak się przekonamy, gdy zostaną uruchomione układy wykrywania błędów, pomiary dostarczające bity syndromu efektywnie zwijają stan kodowania probabilistycznie do stanu, w którym wystąpił błąd (lub jego brak) opisany przez jedną z czterech macierzy Pauliego. (Z unitarności UU wynika, że liczby α,\alpha, β,\beta, γ,\gamma, i δ\delta muszą spełniać α2+β2+γ2+δ2=1,\vert\alpha\vert^2 + \vert\beta\vert^2 + \vert\gamma\vert^2 + \vert\delta\vert^2 = 1, a wartości α2,\vert\alpha\vert^2, β2,\vert\beta\vert^2, γ2,\vert\gamma\vert^2, i δ2\vert\delta\vert^2 są prawdopodobieństwami, z jakimi stan zakodowany zwija się do stanu z odpowiednim błędem Pauliego.)

Aby dokładniej wyjaśnić, jak to działa, wygodnie będzie używać indeksów dolnych wskazujących, na który kubit działa dana unitarna operacja kubitowa. Na przykład, korzystając z konwencji numeracji kubitów Qiskit (Q8,Q7,,Q0)(\mathsf{Q}_8,\mathsf{Q}_7,\ldots,\mathsf{Q}_0) do ponumerowania 9 kubitów używanych w kodzie Shora, otrzymujemy następujące wyrażenia dla różnych operacji unitarnych na pojedynczych kubitach, gdzie w każdym przypadku bierzemy iloczyn tensorowy macierzy unitarnej z macierzą jednostkową na każdym pozostałym kubicie.

X0=IIIIIIIIXZ4=IIIIZIIIIU7=IUIIIIIII\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}

A zatem, dla danej unitarnej operacji kubitowej U,U, możemy opisać działanie UU zastosowanego do kubitu kk następującym wzorem, podobnym do poprzedniego, przy czym każda macierz reprezentuje operację zastosowaną do kubitu k.k.

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

Załóżmy teraz, że ψ\vert\psi\rangle jest 9-kubitowym kodowaniem pewnego stanu kubitu. Jeśli błąd UU wystąpi na kubicie k,k, otrzymamy stan Ukψ,U_k \vert\psi\rangle, który możemy wyrazić jako kombinację liniową operacji Pauliego działających na ψ\vert\psi\rangle w następujący sposób.

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

W tym miejscu podstawmy 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

Rozważmy teraz kroki wykrywania i korygowania błędów opisane wcześniej. Możemy potraktować wyniki pomiarów trzech wewnętrznych kontroli parzystości kodu wraz z wynikiem dla zewnętrznego kodu łącznie jako jeden syndrom złożony z 8 bitów. Tuż przed faktycznymi pomiarami w standardowej bazie, które generują te bity syndromu, stan ma następującą postać.

αI syndromeψ+βXk syndromeXkψ+iγXkZk syndromeXkZkψ+δZk syndromeZkψ\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}

Dla jasności: mamy tu dwa układy. Układ po lewej stronie to 8 kubitów, które zmierzymy, aby uzyskać syndrom, gdzie I syndrome,\vert \mathbb{I} \text{ syndrome}\rangle, Xk syndrome,\vert X_k \text{ syndrome}\rangle, i tak dalej, oznaczają 8-kubitowy stan bazy standardowej zgodny z odpowiednim błędem (lub jego brakiem). Układ po prawej stronie to 9 kubitów używanych do kodowania.

Zauważmy, że te dwa układy są teraz skorelowane (ogólnie), i to jest kluczem do działania tej metody. Mierząc syndrom, stan 9 kubitów po prawej stronie efektywnie zwija się do stanu, w którym na jednym z kubitów zastosowano błąd Pauliego zgodny z zmierzonym syndromem. Co więcej, sam syndrom dostarcza wystarczająco dużo informacji, abyśmy mogli cofnąć błąd i odzyskać oryginalne kodowanie ψ.\vert\psi\rangle.

W szczególności, jeśli kubity syndromu zostaną zmierzone i zostaną wprowadzone odpowiednie korekty, otrzymamy stan, który można wyrazić jako macierz gęstości,

ξψψ,\xi \otimes \vert\psi\rangle\langle\psi\vert,

gdzie

ξ=α2I syndromeI syndrome+β2Xk syndromeXk syndrome+γ2XkZk syndromeXkZk syndrome+δ2Zk syndromeZk 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}

Co kluczowe, jest to stan produktowy: po prawej stronie iloczynu tensorowego mamy oryginalne, nieuszkodzone kodowanie, a po lewej — macierz gęstości ξ\xi opisującą losowy syndrom błędu. Nie ma już żadnej korelacji z układem po prawej stronie, którym się interesujemy, ponieważ błędy zostały skorygowane. W tym momencie możemy odrzucić kubity syndromu lub zresetować je, żeby móc ich ponownie użyć. W ten sposób losowość — czyli entropia — wytworzona przez błędy jest usuwana z systemu.

To właśnie jest dyskretyzacja błędów dla szczególnego przypadku błędów unitarnych. W istocie, mierząc syndrom, efektywnie rzutujemy błąd na błąd opisywany przez macierz Pauliego.

Na pierwszy rzut oka może się wydawać zbyt piękne, że możemy w ten sposób korygować dowolne błędy unitarne — nawet błędy niewielkie i same w sobie ledwo zauważalne. Jednak ważne jest, żeby zdać sobie sprawę, że jest to błąd unitarny na pojedynczym kubicie, a dzięki konstrukcji kodu operacja jednobitowa nie może zmienić stanu zakodowanego kubitu logicznego. Jedyne, co może zrobić, to wypchnąć stan poza podprzestrzeń prawidłowych kodowań; wtedy jednak wykrywanie błędów zwija stan, a korekty przywracają go do punktu wyjścia.

Dowolne błędy kubitów

Na koniec rozważmy dowolne błędy, które niekoniecznie są unitarne. Ściślej mówiąc, zajmiemy się błędem opisanym przez dowolny kanał kubitowy Φ.\Phi. Może to być na przykład kanał depfazowania lub depolaryzacji, kanał resetowania albo jakiś osobliwy kanał, o którym nigdy wcześniej nie myśleliśmy.

Pierwszym krokiem jest wzięcie pod uwagę dowolnej reprezentacji Krausa dla Φ.\Phi.

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

Jest to kanał kubitowy, więc każde AjA_j jest macierzą 2×2,2\times 2, którą możemy wyrazić jako kombinację liniową macierzy Pauliego.

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

Pozwala nam to wyrazić działanie błędu Φ\Phi na wybranym kubicie kk za pomocą macierzy Pauliego w następujący sposób.

Φ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}

Krótko mówiąc, po prostu rozwinęliśmy wszystkie macierze Krausa jako kombinacje liniowe macierzy Pauliego.

Jeśli teraz obliczymy i zmierzymy syndrom błędu, a następnie skorygujemy wszelkie ujawnione błędy, otrzymamy stan podobny do tego, który mieliśmy w przypadku błędu unitarnego:

ξψψ,\xi \otimes \vert\psi\rangle\langle\psi\vert,

gdzie tym razem mamy

ξ=j(αj2I syndromeI syndrome+βj2Xk syndromeXk syndrome+γj2XkZk syndromeXkZk syndrome+δj2Zk syndromeZk 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}

Szczegóły są nieco bardziej złożone i nie zostały tu pokazane. Koncepcyjnie idea jest identyczna jak w przypadku unitarnym.

Uogólnienie

Dyskretyzacja błędów uogólnia się na inne kody korekcji błędów kwantowych, w tym takie, które potrafią wykrywać i korygować błędy na wielu kubitach. W takich przypadkach błędy na wielu kubitach można wyrazić jako iloczyny tensorowe macierzy Pauliego, a odpowiednie syndromy wskazują korekty operacjami Pauliego, które mogą być wykonywane na wielu kubitach jednocześnie, a nie tylko na jednym.

Ponownie, mierząc syndrom, błędy są efektywnie rzutowane lub zwijane na dyskretny zestaw możliwości reprezentowanych przez iloczyny tensorowe macierzy Pauliego; korygując te błędy Pauliego, możemy odzyskać oryginalny stan zakodowany. Tymczasem wszelka losowość wygenerowana w tym procesie jest przenoszona do kubitów syndromu, które są odrzucane lub resetowane, usuwając tym samym wytworzoną losowość z systemu przechowującego kodowanie.