Przejdź do głównej treści

9-kubitowy kod Shora

Teraz przejdziemy do 9-kubitowego kodu Shora, który jest kwantowym kodem korekcji błędów uzyskanym przez połączenie dwóch kodów omawianych w poprzedniej sekcji: 3-bitowego kodu repetycyjnego dla qubitów, umożliwiającego korektę pojedynczego błędu bitowego, oraz zmodyfikowanej wersji tego kodu, umożliwiającej korektę pojedynczego błędu fazowego.

Opis kodu

9-kubitowy kod Shora to kod uzyskany przez konkatenację dwóch kodów z poprzedniej sekcji. Oznacza to, że najpierw stosujemy jedno kodowanie, które koduje jeden qubit w trzech, a następnie stosujemy drugie kodowanie do każdego z trzech qubitów użytych w pierwszym kodowaniu, co daje łącznie dziewięć qubitów.

Mówiąc dokładniej, choć w tym konkretnym przypadku moglibyśmy zastosować oba kody w dowolnej kolejności, wybierzemy następujące podejście: najpierw zastosujemy zmodyfikowaną wersję 3-bitowego kodu repetycyjnego (wykrywającego błędy fazowe), a następnie każdy z trzech wynikowych qubitów zakodujemy niezależnie przy użyciu oryginalnego 3-bitowego kodu repetycyjnego (wykrywającego błędy bitowe). Poniżej przedstawiono schemat obwodu tego kodowania.

Encoding circuit for the 9-qubit Shor code showing three blocks

Jak sugeruje rysunek, będziemy myśleć o dziewięciu qubitach kodu Shora jako o trzech blokach po trzy qubity, gdzie każdy blok pochodzi z drugiego etapu kodowania (czyli zwykłego 3-bitowego kodu repetycyjnego). Zwykły 3-bitowy kod repetycyjny, stosowany tutaj trzykrotnie niezależnie, nazywany jest kodem wewnętrznym, natomiast kod zewnętrzny to kod użyty w pierwszym etapie kodowania — zmodyfikowana wersja 3-bitowego kodu repetycyjnego wykrywająca błędy fazowe.

Kod możemy również opisać przez podanie sposobu kodowania dwóch standardowych stanów bazowych naszego pierwotnego qubitu.

0122(000+111)(000+111)(000+111)1122(000111)(000111)(000111)\begin{aligned} \vert 0\rangle & \:\mapsto\: \frac{1}{2\sqrt{2}} (\vert 000\rangle + \vert 111\rangle) \otimes (\vert 000\rangle + \vert 111\rangle) \otimes (\vert 000\rangle + \vert 111\rangle) \\[4mm] \vert 1\rangle & \:\mapsto\: \frac{1}{2\sqrt{2}} (\vert 000\rangle - \vert 111\rangle) \otimes (\vert 000\rangle - \vert 111\rangle) \otimes (\vert 000\rangle - \vert 111\rangle) \end{aligned}

Znając te zależności, możemy z zasady liniowości wyznaczyć sposób kodowania dowolnego wektora stanu qubitu.

Korekcja błędów bitowych i fazowych

Błędy i bramki CNOT

Aby przeanalizować wpływ błędów XX i ZZ na kodowania qubitów — zarówno w 9-kubitowym kodzie Shora, jak i w innych kodach — warto zauważyć kilka prostych zależności między tymi błędami a bramkami CNOT. Gdy zaczynamy analizować 9-kubitowy kod Shora, jest to dobry moment, by to zrobić.

Poniższe schematy obwodów ilustrują trzy podstawowe zależności między bramkami XX a bramkami CNOT. Mianowicie: zastosowanie bramki XX do qubitu docelowego przed CNOT jest równoważne odwróceniu kolejności i wykonaniu najpierw CNOT, natomiast zastosowanie bramki XX do qubitu kontrolnego przed CNOT jest równoważne zastosowaniu bramek XX do obu qubitów po CNOT. Wreszcie, zastosowanie bramek XX do obu qubitów przed CNOT jest równoważne wykonaniu najpierw CNOT, a następnie zastosowaniu bramki XX do qubitu kontrolnego. Zależności te można zweryfikować przez odpowiednie mnożenie macierzy lub obliczanie wpływu obwodów na stany standardowej bazy.

X errors before and after CNOT gates

Analogiczna sytuacja zachodzi dla bramek ZZ, z tą różnicą, że role qubitu kontrolnego i docelowego zamieniają się. W szczególności mamy trzy zależności przedstawione na poniższych obwodach kwantowych.

Z errors before and after CNOT gates

Korekcja błędów bitowych

Teraz rozważymy wykrywanie i korygowanie błędów przy użyciu 9-kubitowego kodu Shora, zaczynając od błędów bitowych — które dalej będziemy nazywać błędami XX dla zwięzłości.

Aby wykryć i skorygować błędy XX, możemy po prostu traktować każdy z trzech bloków w kodowaniu oddzielnie. Każdy blok jest kodowaniem qubitu przy użyciu 3-bitowego kodu repetycyjnego, który chroni przed błędami XX — wykonując zatem pomiary syndromu i korekty błędów XX opisane wcześniej dla każdego bloku osobno, możemy wykryć i skorygować co najwyżej jeden błąd XX na blok. W szczególności, jeśli na dziewięciu qubitach kodowania wystąpi co najwyżej jeden błąd XX, zostanie on wykryty i skorygowany tą procedurą.

Krótko mówiąc, korekcja błędów bitowych jest prosta w tym kodzie, ponieważ kod wewnętrzny koryguje właśnie błędy bitowe.

Korekcja błędów fazowych

Teraz rozważymy błędy fazowe, czyli błędy ZZ w skrócie. Tym razem nie jest od razu jasne, co należy zrobić, ponieważ to kod zewnętrzny wykrywa błędy ZZ, a kod wewnętrzny zdaje się być niejako „na drodze", co nieco utrudnia wykrywanie i korekcję tych błędów.

Załóżmy, że na jednym z 9 qubitów kodu Shora wystąpi błąd ZZ, tak jak wskazano na tym schemacie.

Z error on a qubit for the 9-qubit Shor code

Już wiemy, co się dzieje, gdy błąd ZZ wystąpi przy użyciu 3-bitowego kodu repetycyjnego — jest to równoważne błędowi ZZ występującemu przed kodowaniem. W kontekście 9-kubitowego kodu Shora oznacza to, że błąd ZZ na którymkolwiek z trzech qubitów wewnątrz bloku zawsze ma ten sam efekt, równoważny błędowi ZZ na odpowiednim qubicie przed zastosowaniem kodu wewnętrznego.

Na przykład powyższy schemat obwodu jest równoważny poniższemu schematowi. Można to uzasadnić, korzystając ze zależności między ZZ a bramkami CNOT opisanych powyżej, lub po prostu obliczając wpływ obwodów na dowolny stan qubitu ψ.\vert\psi\rangle.

Z error prior to the inner code for the 9-qubit Shor code

Sugeruje to jedną możliwość wykrywania i korekcji błędów ZZ: dekodujemy kod wewnętrzny, pozostawiając trzy qubity użyte do zewnętrznego kodowania wraz z sześcioma zainicjalizowanymi qubitami roboczymi. Następnie sprawdzamy te trzy qubity kodu zewnętrznego pod kątem błędów ZZ, po czym ponownie kodujemy przy użyciu kodu wewnętrznego, wracając do 9-kubitowego kodowania kodu Shora. Jeśli wykryjemy błąd ZZ, możemy go skorygować przed ponownym kodowaniem kodem wewnętrznym lub po nim, stosując bramkę ZZ do dowolnego qubitu w danym bloku.

Poniżej przedstawiono schemat obwodu zawierający obwód kodowania i opisany wyżej błąd wraz z krokami właśnie opisanymi (bez samego kroku korekcji).

Z error detection for the 9-qubit Shor code

W tym konkretnym przykładzie pomiar syndromu wynosi 11,11, co lokalizuje błąd ZZ w jednym z qubitów środkowego bloku.

Jedną z zalet korygowania błędów ZZ po ponownym kodowaniu, zamiast przed nim, jest uproszczenie powyższego obwodu. Poniższy obwód jest równoważny, ale wymaga o cztery bramki CNOT mniej.

Simplified Z error detection for the 9-qubit Shor code

Ponownie: syndrom nie wskazuje, który qubit był dotknięty błędem ZZ, lecz który blok doświadczył błędu ZZ — efekt jest taki sam niezależnie od tego, który qubit wewnątrz bloku był nim dotknięty. Błąd możemy następnie skorygować, stosując bramkę ZZ do dowolnego z trzech qubitów dotkniętego bloku.

Warto przy okazji zauważyć, że mamy tu przykład degeneracji w kwantowym kodzie korekcji błędów — jesteśmy w stanie skorygować pewne błędy (w tym przypadku błędy ZZ) bez możliwości ich jednoznacznej identyfikacji.

Jednoczesne błędy bitowe i fazowe

Wiemy już, jak wykrywać i korygować błędy XX i ZZ przy użyciu 9-kubitowego kodu Shora, a w szczególności jak wykrywać i korygować co najwyżej jeden błąd XX lub co najwyżej jeden błąd ZZ. Zastanówmy się teraz, co się dzieje, gdy wystąpią jednocześnie błąd bitowy i błąd fazowy, możliwie na tym samym qubicie. Jak się okazuje, w tej sytuacji nie trzeba robić nic innego niż to, co już zostało omówione — kod jest w stanie wykryć i skorygować co najwyżej jeden błąd XX i jeden błąd ZZ jednocześnie, bez żadnych modyfikacji.

Mówiąc dokładniej, błędy XX są wykrywane przez zastosowanie pomiaru syndromu zwykłego 3-bitowego kodu repetycyjnego, wykonanego oddzielnie na każdym z trzech bloków trzech qubitów; błędy ZZ są natomiast wykrywane przez procedurę opisaną powyżej, równoważną dekodowaniu kodu wewnętrznego, wykonaniu pomiaru syndromu zmodyfikowanego 3-bitowego kodu repetycyjnego dla błędów fazowych, a następnie ponownemu kodowaniu. Te dwa kroki wykrywania błędów — a także odpowiednie korekcje — można wykonać całkowicie niezależnie od siebie, a kolejność, w jakiej się je wykonuje, nie ma znaczenia.

Aby zobaczyć, dlaczego tak jest, rozważmy przykład przedstawiony na poniższym schemacie obwodu, gdzie zarówno błąd XX, jak i ZZ dotknęły dolny qubit środkowego bloku.

An XZ error for the 9-qubit Shor code

Zauważmy najpierw, że kolejność błędów nie ma znaczenia w tym sensie, że odwrócenie pozycji błędów XX i ZZ daje równoważny obwód. Żeby być precyzyjnym: XX i ZZ nie komutują, lecz antykomutują:

XZ=(0110)(1001)=(0110)=(1001)(0110)=ZX.XZ = \begin{pmatrix} 0 & 1\\[1mm] 1 & 0 \end{pmatrix} \begin{pmatrix} 1 & 0\\[1mm] 0 & -1 \end{pmatrix} = \begin{pmatrix} 0 & -1\\[1mm] 1 & 0 \end{pmatrix} = - \begin{pmatrix} 1 & 0\\[1mm] 0 & -1 \end{pmatrix} \begin{pmatrix} 0 & 1\\[1mm] 1 & 0 \end{pmatrix} = -ZX.

Wynika z tego, że poniższy obwód jest równoważny powyższemu z dokładnością do globalnego czynnika fazowego 1.-1.

A ZX error for the 9-qubit Shor code

Możemy teraz przesunąć błąd ZZ tak jak poprzednio, otrzymując kolejny równoważny obwód.

A ZX error for the 9-qubit Shor code

W tym momencie jest już jasne, że jeśli najpierw wykonamy procedurę wykrywania i korekcji błędów XX, błąd XX zostanie skorygowany, po czym można wykonać procedurę wykrywania i korekcji błędów ZZ, aby wyeliminować błąd ZZ jak poprzednio.

Można też najpierw wykonać procedurę wykrywania i korekcji błędów ZZ. To, że procedura ta działa zgodnie z oczekiwaniami nawet w obecności jednego lub więcej błędów XX, wynika z faktu, że bramki XX na dowolnym z dziewięciu qubitów używanych do kodowania komutują ze wszystkimi bramkami w naszym uproszczonym obwodzie pomiaru syndromu dla błędów ZZ. Zatem pomiar syndromu nadal poprawnie wskaże, który blok był dotknięty błędem ZZ. To, że błąd ZZ na dowolnym bloku jest korygowany przez zastosowanie bramki ZZ do dowolnego qubitu tego bloku, nawet jeśli wystąpił też błąd XX, wynika z tego samego argumentu dotyczącego kolejności bramek XX i ZZ, który daje równoważne obwody z dokładnością do globalnej fazy.

Wynika z tego, że 9-kubitowy kod Shora może skorygować błąd XX, błąd ZZ lub oba jednocześnie na dowolnym z dziewięciu qubitów tego kodu. Co więcej, możemy skorygować więcej błędów, w tym wiele błędów XX (o ile przypadają na różne bloki) lub wiele błędów ZZ (o ile co najwyżej jeden blok doświadcza nieparzystej ich liczby) — jednak do celów tej lekcji najważniejsze jest to, że możemy skorygować błąd XX, błąd ZZ lub oba na dowolnym jednym qubicie.

Redukcja błędów przy błędach losowych

Zanim przejdziemy do ostatniej sekcji lekcji dotyczącej dowolnych błędów kwantowych, przyjrzyjmy się krótko wydajności 9-kubitowego kodu Shora, gdy błędy reprezentowane przez macierze Pauliego występują losowo na qubitach.

Żeby być bardziej konkretnym, rozważmy prosty model szumów, w którym błędy występują niezależnie na qubitach — każdy qubit doświadcza błędu z prawdopodobieństwem pp, bez korelacji między błędami na różnych qubitach — podobnie jak binarny kanał symetryczny dla klasycznych bitów. Moglibyśmy przypisać różne prawdopodobieństwa dla błędów X,X, YY i ZZ, ale żeby uprościć analizę do maksimum, rozważymy najgorszy przypadek dla 9-kubitowego kodu Shora, czyli taki, w którym na każdym dotkniętym qubicie wystąpuje błąd YY. Błąd YY, nawiasem mówiąc, jest równoważny (z dokładnością do nieistotnego globalnego czynnika fazowego) jednoczesnemu wystąpieniu błędów XX i ZZ na tym samym qubicie, ponieważ Y=iXZ.Y = iXZ. To wyjaśnia, dlaczego pozornie ignorowaliśmy do tej pory błędy YY.

Przyjmijmy teraz, że Q\mathsf{Q} to qubit w pewnym konkretnym stanie, który chcemy chronić przed błędami, i rozważmy możliwość użycia 9-kubitowego kodu Shora. Nasuwa się naturalne pytanie: „Czy powinniśmy go użyć?"

Odpowiedź brzmi: niekoniecznie „tak". Jeśli szumów jest zbyt dużo — w tym kontekście oznacza to, że pp jest zbyt duże — użycie kodu Shora może w rzeczywistości pogorszyć sytuację, tak jak 3-bitowy kod repetycyjny jest gorszy niż brak kodu, gdy pp jest większe od jednej drugiej. Ale jeśli pp jest wystarczająco małe, odpowiedź brzmi „tak" — powinniśmy użyć kodu, bo zmniejsza on prawdopodobieństwo uszkodzenia zakodowanego stanu. Zobaczmy, dlaczego tak jest i co oznacza, że pp jest zbyt duże lub wystarczająco małe dla tego kodu.

Kod Shora koryguje dowolny błąd Pauliego na pojedynczym qubicie, w tym oczywiście błąd YY, ale nie koryguje poprawnie dwóch lub więcej błędów YY. Jasne jest, że zakładamy tu korekcje błędów XX i ZZ opisane wcześniej w tej sekcji. (Oczywiście, gdybyśmy z góry wiedzieli, że musimy się martwić tylko błędami YY, naturalnie wybralibyśmy inne korekcje — ale to oszukiwałoby model szumów, a zawsze można by zmienić model, wybierając inne błędy Pauliego, by ta nowa strategia korekcji zawiodła, gdy dwa lub więcej qubitów zostanie dotkniętych błędami.)

A zatem kod chroni Q\mathsf{Q} tak długo, jak co najwyżej jeden z dziewięciu qubitów jest dotknięty błędem, co zachodzi z prawdopodobieństwem

(1p)9+9p(1p)8.(1-p)^9 + 9 p (1-p)^8.

W przeciwnym razie, z prawdopodobieństwem

1(1p)99p(1p)8,1 - (1-p)^9 - 9 p (1-p)^8,

kod nie chroni Q.\mathsf{Q}.

Konkretnie oznacza to, że — z dokładnością do globalnej fazy — na nasz qubit Q\mathsf{Q} (jako logiczny qubit) zostanie zastosowana niejednostkowa operacja Pauliego. To znaczy: jeśli błędy XX i ZZ są wykrywane i korygowane dla kodu Shora zgodnie z opisem wcześniej w lekcji, zostaniemy z kodowaniem stanu równoważnego, z dokładnością do globalnej fazy, kodowaniu niejednostkowej operacji Pauliego zastosowanej do pierwotnego stanu Q.\mathsf{Q}. Zwięźlej można powiedzieć, że wystąpił logiczny błąd. Może to, ale nie musi, wpłynąć na pierwotny stan Q\mathsf{Q} — czyli innymi słowy na logiczny qubit zakodowany przy użyciu dziewięciu fizycznych qubitów — ale na potrzeby tej analizy uznajemy to zdarzenie za niepowodzenie.

Z drugiej strony, gdybyśmy nie zdecydowali się użyć kodu, nasz jedyny qubit uległby podobnemu losowi (byłaby na nim zastosowana niejednostkowa operacja Pauliego) z prawdopodobieństwem p.p. Kod jest pomocny, gdy pierwsze prawdopodobieństwo jest mniejsze od drugiego:

1(1p)99p(1p)8<p.1 - (1-p)^9 - 9 p (1-p)^8 < p.

Poniższy wykres ilustruje, dla bardzo małych wartości p,p, że kod zapewnia przewagę, a punkt równowagi wypada w okolicach 0,0323.0{,}0323.

Error probability graph for independent Y errors using the Shor code

Jeśli pp jest mniejsze od tego punktu równowagi, kod jest pomocny; w punkcie równowagi prawdopodobieństwa są równe, więc używamy kodu i 8 dodatkowych qubitów bez żadnego pożytku; a powyżej punktu równowagi zdecydowanie nie powinniśmy używać tego kodu, ponieważ zwiększa on szansę na logiczny błąd na Q.\mathsf{Q}.

Nieco ponad trzy i ćwierć procent może nie wydawać się dobrym punktem równowagi, zwłaszcza w porównaniu z 50%,50\%, który jest analogicznym punktem równowagi dla 3-bitowego kodu repetycyjnego dla informacji klasycznej. Różnica ta wynika w dużej mierze z faktu, że informacja kwantowa jest delikatniejsza i trudniejsza do ochrony niż informacja klasyczna. Ale też — uznając, że 9-kubitowy kod Shora stanowi błyskotliwe odkrycie jako pierwszy na świecie kwantowy kod korekcji błędów — trzeba przyznać, że w praktycznych zastosowaniach nie jest to wcale bardzo dobry kod.