Przejdź do głównej treści

Kod repetycyjny — powrót do tematu

Teraz przyjrzymy się ponownie 3-bitowemu kodowi repetycyjnemu, tym razem ujmując go w kategoriach operacji Pauliego. Będzie to nasz pierwszy przykład kodu stabilizatorowego.

Obserwable Pauliego dla kodu repetycyjnego​

Przypomnij sobie, że gdy stosujemy 3-bitowy kod repetycyjny do kubitów, dany wektor stanu kubitu α∣0⟩+β∣1⟩\alpha\vert 0\rangle + \beta\vert 1\rangle jest kodowany jako

∣ψ⟩=α∣000⟩+β∣111⟩.\vert\psi\rangle = \alpha\vert 000\rangle + \beta\vert 111\rangle.

Każdy stan ∣ψ⟩\vert\psi\rangle tej postaci jest poprawnym 3-kubitowym kodowaniem stanu kubitu — lecz gdybyśmy mieli stan, co do którego nie bylibyśmy pewni, moglibyśmy zweryfikować, czy mamy poprawne kodowanie, sprawdzając dwa poniższe równania.

(Z⊗Z⊗I)∣ψ⟩=∣ψ⟩(I⊗Z⊗Z)∣ψ⟩=∣ψ⟩\begin{aligned} (Z \otimes Z \otimes \mathbb{I}) \vert\psi\rangle & = \vert\psi\rangle\\[1mm] (\mathbb{I} \otimes Z \otimes Z) \vert\psi\rangle & = \vert\psi\rangle \end{aligned}

Pierwsze równanie mówi, że zastosowanie operacji ZZ do dwóch lewych kubitów ∣ψ⟩\vert\psi\rangle nie ma żadnego efektu, co oznacza, że ∣ψ⟩\vert\psi\rangle jest wektorem własnym Z⊗Z⊗IZ\otimes Z\otimes \mathbb{I} z wartością własną 11. Drugie równanie jest analogiczne, z tą różnicą, że operacje ZZ są stosowane do dwóch prawych kubitów. Chodzi o to, że jeśli potraktujemy ∣ψ⟩\vert\psi\rangle jako kombinację liniową stanów bazy standardowej, to pierwsze równanie oznacza, iż niezerowe współczynniki mogą mieć tylko te stany bazowe, w których dwa lewe bity mają parzystą parzystość (tzn. są równe), a drugie równanie oznacza, że niezerowe współczynniki mogą mieć tylko te stany bazowe, w których dwa prawe bity mają parzystą parzystość.

Równoważnie, jeśli potraktujemy obie operacje Pauliego Z⊗Z⊗IZ\otimes Z\otimes \mathbb{I} i I⊗Z⊗Z\mathbb{I}\otimes Z\otimes Z jako obserwable i zmierzymy je obydwie za pomocą układów sugerowanych pod koniec poprzedniej sekcji, to z pewnością uzyskamy wyniki pomiaru odpowiadające wartościom własnym +1+1, ponieważ ∣ψ⟩\vert\psi\rangle jest wektorem własnym obu obserwabli z wartością własną 11. Jednak uproszczona wersja (połączonego) układu do niezależnego pomiaru obu obserwabli, pokazana tutaj, jest niczym innym jak układem sprawdzania parzystości dla 3-bitowego kodu repetycyjnego.

Układ sprawdzania parzystości dla 3-bitowego kodu repetycyjnego

Oba powyższe równania implikują zatem, że układ sprawdzania parzystości daje wynik 0000, czyli syndrom oznaczający, że nie wykryto żadnych błędów.

Operacje Pauliego na 3 kubitach Z⊗Z⊗IZ\otimes Z\otimes \mathbb{I} i I⊗Z⊗Z\mathbb{I}\otimes Z\otimes Z są nazywane generatorami stabilizatora tego kodu, a stabilizator kodu to zbiór generowany przez generatory stabilizatora.

⟨Z⊗Z⊗I,I⊗Z⊗Z⟩={I⊗I⊗I,Z⊗Z⊗I,Z⊗I⊗Z,I⊗Z⊗Z}\langle Z\otimes Z\otimes \mathbb{I}, \mathbb{I}\otimes Z\otimes Z\rangle = \{ \mathbb{I}\otimes\mathbb{I}\otimes\mathbb{I}, Z\otimes Z\otimes\mathbb{I}, Z\otimes\mathbb{I}\otimes Z, \mathbb{I}\otimes Z\otimes Z \}

Stabilizator jest fundamentalnie ważnym obiektem matematycznym związanym z tym kodem, a jego rola będzie omawiana w trakcie dalszej części lekcji. Na razie zauważmy, że mogliśmy wybrać inne generatory i odpowiadające im sprawdzenia parzystości — konkretnie biorąc Z⊗I⊗ZZ\otimes\mathbb{I}\otimes Z zamiast któregokolwiek z wybranych przez nas generatorów — jednak stabilizator i sam kod pozostałyby niezmienione.

Wykrywanie błędów​

Teraz zajmiemy się wykrywaniem błędów bitowych (bit-flip) w 3-bitowym kodzie repetycyjnym, skupiając się na interakcjach i relacjach między operacjami Pauliego, które są w to zaangażowane: generatorami stabilizatora i samymi błędami.

Załóżmy, że zakodowaliśmy kubit przy użyciu 3-bitowego kodu repetycyjnego i na lewym kubicie wystąpił błąd bitowy. Powoduje to przekształcenie stanu ∣ψ⟩\vert\psi\rangle zgodnie z działaniem operacji XX (czyli błędu XX).

∣ψ⟩↦(X⊗I⊗I)∣ψ⟩\vert\psi\rangle \mapsto (X \otimes \mathbb{I} \otimes \mathbb{I}) \vert\psi\rangle

Błąd ten można wykryć, wykonując sprawdzenia parzystości dla 3-bitowego kodu repetycyjnego, jak omówiono w poprzedniej lekcji — co jest równoważne niedestrukcyjnemu pomiarowi generatorów stabilizatora Z⊗Z⊗IZ\otimes Z\otimes \mathbb{I} i I⊗Z⊗Z\mathbb{I}\otimes Z\otimes Z jako obserwabli.

Zacznijmy od pierwszego generatora stabilizatora. Stan ∣ψ⟩\vert\psi\rangle doznał błędu XX na lewym kubicie i naszym celem jest zrozumienie, jak pomiar tego generatora stabilizatora jako obserwabli jest na ten błąd wrażliwy. Ponieważ XX i ZZ antykomutują, natomiast każda macierz komutuje z macierzą jednostkową, wynika z tego, że Z⊗Z⊗IZ\otimes Z\otimes \mathbb{I} antykomutuje z X⊗I⊗I.X\otimes\mathbb{I}\otimes\mathbb{I}. Tymczasem, ponieważ ∣ψ⟩\vert\psi\rangle jest poprawnym kodowaniem kubitu, Z⊗Z⊗IZ\otimes Z\otimes \mathbb{I} działa trywialnie na ∣ψ⟩.\vert\psi\rangle.

(Z⊗Z⊗I)(X⊗I⊗I)∣ψ⟩=−(X⊗I⊗I)(Z⊗Z⊗I)∣ψ⟩=−(X⊗I⊗I)∣ψ⟩\begin{aligned} (Z \otimes Z \otimes \mathbb{I})(X \otimes \mathbb{I} \otimes \mathbb{I}) \vert\psi\rangle & = -(X \otimes \mathbb{I} \otimes \mathbb{I})(Z \otimes Z \otimes \mathbb{I})\vert\psi\rangle \\ & = -(X \otimes \mathbb{I} \otimes \mathbb{I}) \vert\psi\rangle \end{aligned}

Wynika z tego, że (X⊗I⊗I)∣ψ⟩(X \otimes \mathbb{I} \otimes \mathbb{I}) \vert\psi\rangle jest wektorem własnym Z⊗Z⊗IZ \otimes Z \otimes \mathbb{I} z wartością własną −1.-1. Gdy pomiar związany z obserwablą Z⊗Z⊗IZ \otimes Z \otimes \mathbb{I} jest wykonywany na stanie (X⊗I⊗I)∣ψ⟩,(X \otimes \mathbb{I} \otimes \mathbb{I}) \vert\psi\rangle, wynik jest zatem pewny i odpowiada wartości własnej −1.-1.

Analogiczne rozumowanie można zastosować do drugiego generatora stabilizatora, lecz tym razem błąd komutuje z generatorem stabilizatora zamiast z nim antykomutować, więc wynikiem tego pomiaru jest wynik odpowiadający wartości własnej +1+1.

(I⊗Z⊗Z)(X⊗I⊗I)∣ψ⟩=(X⊗I⊗I)(I⊗Z⊗Z)∣ψ⟩=(X⊗I⊗I)∣ψ⟩\begin{aligned} (\mathbb{I} \otimes Z \otimes Z)(X \otimes \mathbb{I} \otimes \mathbb{I}) \vert\psi\rangle & = (X \otimes \mathbb{I} \otimes \mathbb{I})(\mathbb{I} \otimes Z \otimes Z)\vert\psi\rangle\\ & = (X \otimes \mathbb{I} \otimes \mathbb{I}) \vert\psi\rangle \end{aligned}

To, co odkrywamy analizując te równania, jest następujące: niezależnie od naszego oryginalnego stanu ∣ψ⟩\vert\psi\rangle, uszkodzony stan jest wektorem własnym obu generatorów stabilizatora, a to, czy wartość własna wynosi +1+1 czy −1-1, jest określone przez to, czy błąd komutuje, czy antykomutuje z każdym generatorem stabilizatora. Dla błędów reprezentowanych przez operacje Pauliego zawsze będzie to jedno albo drugie, ponieważ dowolne dwie operacje Pauliego albo komutują, albo antykomutują. Tymczasem sam stan ∣ψ⟩\vert\psi\rangle nie odgrywa tu ważnej roli — z wyjątkiem faktu, że generatory stabilizatora działają na ten stan trywialnie.

Z tego powodu w ogólności nie musimy przejmować się konkretnym zakodowanym stanem, z którym pracujemy. Liczy się jedynie to, czy błąd komutuje, czy antykomutuje z każdym generatorem stabilizatora. W szczególności, oto istotne równania dotyczące tego konkretnego błędu dla tego kodu.

(Z⊗Z⊗I)(X⊗I⊗I)=−(X⊗I⊗I)(Z⊗Z⊗I)(I⊗Z⊗Z)(X⊗I⊗I)=(X⊗I⊗I)(I⊗Z⊗Z)\begin{aligned} (Z \otimes Z \otimes \mathbb{I})(X \otimes \mathbb{I} \otimes \mathbb{I}) & = -(X \otimes \mathbb{I} \otimes \mathbb{I})(Z \otimes Z \otimes \mathbb{I})\\[1mm] (\mathbb{I} \otimes Z \otimes Z)(X \otimes \mathbb{I} \otimes \mathbb{I}) & = (X \otimes \mathbb{I} \otimes \mathbb{I})(\mathbb{I} \otimes Z \otimes Z) \end{aligned}

Oto tabela z jednym wierszem dla każdego generatora stabilizatora i jedną kolumną dla każdego błędu. Wpis w tabeli wynosi +1+1 albo −1-1 w zależności od tego, czy błąd i generator stabilizatora komutują, czy antykomutują. Tabela zawiera kolumny tylko dla błędów odpowiadających pojedynczemu przerzutowi bitu, a także braku błędu, który opisany jest przez iloczyn tensorowy tożsamości ze sobą samą trzy razy. Moglibyśmy dodać więcej kolumn dla innych błędów, ale na razie skupimy się tylko na tych.

I⊗I⊗IX⊗I⊗II⊗X⊗II⊗I⊗XZ⊗Z⊗I+1−1−1+1I⊗Z⊗Z+1+1−1−1\begin{array}{c|cccc} & \mathbb{I}\otimes\mathbb{I} \otimes\mathbb{I} & X \otimes \mathbb{I} \otimes \mathbb{I} & \mathbb{I}\otimes X\otimes\mathbb{I} & \mathbb{I} \otimes\mathbb{I} \otimes X \\ \hline Z\otimes Z\otimes\mathbb{I} & +1 & -1 & -1 & +1 \\ \mathbb{I}\otimes Z\otimes Z & +1 & +1 & -1 & -1 \end{array}

Dla każdego błędu w tabeli odpowiadająca mu kolumna ujawnia, jak ten błąd przekształca dowolne dane kodowanie w wektor własny +1+1 lub −1-1 każdego generatora stabilizatora. Równoważnie, kolumny opisują syndrom, który uzyskalibyśmy ze sprawdzeń parzystości, będących równoważnikami niedestrukcyjnych pomiarów generatorów stabilizatora jako obserwabli. Oczywiście tabela zawiera wpisy +1+1 i −1-1, a nie 00 i 11 — i często myśli się o syndromie jako o binarnym ciągu bitów, a nie kolumnie wpisów +1+1 i −1-1 — lecz równie dobrze możemy myśleć o tych wektorach z wpisami +1+1 i −1-1 jako syndromach, łącząc je bezpośrednio z wartościami własnymi generatorów stabilizatora. Ogólnie rzecz biorąc, syndromy mówią nam coś o błędzie, który wystąpił, i jeśli wiemy, że nastąpił jeden z czterech możliwych błędów wymienionych w tabeli, syndrom wskazuje, który to był.

Syndromy​

Kodowania dla 3-bitowego kodu repetycyjnego są stanami 3-kubitowymi, więc są wektorami jednostkowymi w 8-wymiarowej zespolonej przestrzeni wektorowej. Cztery możliwe syndromy efektywnie dzielą tę 8-wymiarową przestrzeń na cztery 2-wymiarowe podprzestrzenie, przy czym wektory stanu kwantowego w każdej podprzestrzeni zawsze dają ten sam syndrom. Poniższy diagram ilustruje konkretnie, jak 8-wymiarowa przestrzeń jest podzielona przez dwa generatory stabilizatora.

Podział podprzestrzeni dla 3-bitowego kodu repetycyjnego

Każdy generator stabilizatora dzieli przestrzeń na dwie podprzestrzenie równego wymiaru, a mianowicie przestrzeń wektorów własnych +1+1 i przestrzeń wektorów własnych −1-1 dla danej obserwabli. Na przykład wektory własne +1+1 dla Z⊗Z⊗IZ\otimes Z\otimes\mathbb{I} to kombinacje liniowe stanów bazy standardowej, w których dwa lewe bity mają parzystą parzystość, a wektory własne −1-1 to kombinacje liniowe stanów bazy standardowej, w których dwa lewe bity mają nieparzystą parzystość. Sytuacja jest podobna dla drugiego generatora stabilizatora, z tą różnicą, że dla niego chodzi o dwa prawe bity, a nie dwa lewe.

Cztery 2-wymiarowe podprzestrzenie odpowiadające czterem możliwym syndromom są łatwe do opisania w tym przypadku, co wynika z faktu, że jest to bardzo prosty kod. W szczególności, podprzestrzeń odpowiadająca syndromowi (+1,+1)(+1,+1) to przestrzeń rozpiętą przez ∣000⟩\vert 000\rangle i ∣111⟩\vert 111\rangle, czyli przestrzeń poprawnych kodowań (znana też jako przestrzeń kodu), a ogólnie przestrzenie są rozpiętą przez bazę standardową pokazaną w odpowiednich kwadratach.

Syndromy partycjonują również wszystkie 3-kubitowe operacje Pauliego na 4 równoliczne zbiory, w zależności od tego, jaki syndrom ta operacja (jako błąd) by spowodowała. Na przykład każda operacja Pauliego, która komutuje z obydwoma generatorami stabilizatora, daje syndrom (+1,+1)(+1,+1) i wśród 64 możliwych 3-kubitowych operacji Pauliego jest dokładnie 16 takich, które należą do tej kategorii (w tym I⊗I⊗Z,\mathbb{I}\otimes \mathbb{I}\otimes Z, Z⊗Z⊗ZZ\otimes Z\otimes Z i X⊗X⊗XX\otimes X\otimes X na przykład) — i tak samo dla pozostałych 3 syndromów.

Obie te właściwości — że syndromy partycjonują zarówno przestrzeń stanów, w której żyją kodowania, jak i wszystkie operacje Pauliego na tej przestrzeni na równoliczne zbiory — są prawdziwe ogólnie dla kodów stabilizatorowych, które precyzyjnie zdefiniujemy w następnej sekcji.

Choć to w tym miejscu jedynie dygresja, warto wspomnieć, że operacje Pauliego komutujące z obydwoma generatorami stabilizatora — czyli równoważnie operacje Pauliego dające syndrom (+1,+1)(+1,+1) — ale niebędące same w sobie proporcjonalne do elementów stabilizatora, okazują się zachowywać dokładnie jak jednokubitowe operacje Pauliego na zakodowanym kubicie (tj. logicznym kubicie) dla tego kodu. Na przykład X⊗X⊗XX\otimes X \otimes X komutuje z obydwoma generatorami stabilizatora, ale sama w sobie nie jest proporcjonalna do żadnego elementu stabilizatora, a efekt tej operacji na kodowanie jest równoważny bramce XX na logicznym kubicie, który jest kodowany.

(X⊗X⊗X)(α∣000⟩+β∣111⟩)=α∣111⟩+β∣000⟩(X\otimes X \otimes X)(\alpha \vert 000\rangle + \beta \vert 111\rangle) = \alpha \vert 111\rangle + \beta \vert 000\rangle

To jest zjawisko, które uogólnia się na wszystkie kody stabilizatorowe.