Przejdź do głównej treści

Inne rodziny kodów

Od odkrycia kodu torycznego minęło ponad 25 lat, a od tamtego czasu przeprowadzono wiele badań nad kwantowymi kodami korekcji błędów, w tym odkryto inne topologiczne kody kwantowe zainspirowane kodem torycznym, a także kody oparte na innych pomysłach. Niemożliwe byłoby zamieszczenie tutaj wyczerpującej listy znanych konstrukcji kwantowych kodów korekcji błędów — ale lekko zarysujemy temat, krótko omawiając kilka wyróżniających się przykładów.

Kody powierzchniowe

Okazuje się, że kod toryczny wcale nie musi mieć periodycznych granic. Innymi słowy, można wyciąć fragment kodu torycznego i rozłożyć go na płaskiej dwuwymiarowej powierzchni, a nie na torusie, uzyskując kwantowy kod korekcji błędów — pod warunkiem, że generatory Stabilizer na krawędziach są odpowiednio zdefiniowane. To, co uzyskujemy, nazywa się kodem powierzchniowym.

Na przykład poniżej widnieje schemat kodu powierzchniowego, w którym sieć jest przycięta tak zwanymi szorstkimi krawędziami na górze i na dole oraz gładkimi krawędziami po bokach. Przypadki brzegowe dla generatorów Stabilizer są zdefiniowane w naturalny sposób — operacje Pauli na „brakujących" kubitach są po prostu pomijane.

Schemat kodu powierzchniowego

Kody powierzchniowe tej postaci kodują jeden kubit, a nie dwa jak kod toryczny. Generatory Stabilizer tworzą w tym przypadku minimalny zbiór generujący, bez konieczności usuwania po jednym generatorze każdego typu, jak to ma miejsce w kodzie torycznym. Mimo tych różnic, ważne właściwości kodu torycznego są dziedziczone. W szczególności, niebanalne niewykryte błędy dla tego kodu odpowiadają łańcuchom błędów rozciągającym się od lewej krawędzi do prawej krawędzi (dla łańcuchów błędów XX) lub od góry do dołu (dla łańcuchów błędów ZZ).

Można też przycinać krawędzie kodu powierzchniowego po przekątnej, uzyskując tak zwane obrócone kody powierzchniowe — nazwa ta bierze się nie stąd, że same kody są w sensowny sposób obrócone, lecz dlatego, że diagramy są obrócone (o 45 stopni). Na przykład poniżej widnieje schemat obróconego kodu powierzchniowego o odległości 5.

Schemat obróconego kodu powierzchniowego

W tego rodzaju diagramach czarne kafelki (włącznie z zaokrąglonymi na krawędziach) oznaczają generatory Stabilizer XX, gdzie operacje XX są aplikowane do (dwóch lub czterech) wierzchołków każdego kafelka, natomiast białe kafelki reprezentują generatory Stabilizer ZZ. Obrócone kody powierzchniowe mają właściwości zbliżone do (nieobróconych) kodów powierzchniowych, lecz są bardziej ekonomiczne pod względem liczby używanych kubitów.

Kody kolorowe

Kody kolorowe to kolejna interesująca klasa kodów, która również należy do ogólnej kategorii topologicznych kodów kwantowych. Zostaną tutaj opisane jedynie pokrótce.

Jednym ze sposobów myślenia o kodach kolorowych jest postrzeganie ich jako geometrycznych uogólnień 7-kubitowego kodu Steane'a. Mając to na uwadze, wróćmy do 7-kubitowego kodu Steane'a i przyjmijmy, że siedem kubitów jest nazwanych i ponumerowanych zgodnie z konwencją numerowania Qiskit jako (Q6,Q5,Q4,Q3,Q2,Q1,Q0).(\mathsf{Q}_6,\mathsf{Q}_5,\mathsf{Q}_4,\mathsf{Q}_3,\mathsf{Q}_2,\mathsf{Q}_1,\mathsf{Q}_0). Przypomnijmy, że generatory Stabilizer dla tego kodu są następujące.

ZZZZIIIZZIIZZIZIZIZIZXXXXIIIXXIIXXIXIXIXIX\begin{array}{ccccccc} Z & Z & Z & Z & \mathbb{I} & \mathbb{I} & \mathbb{I} \\[1mm] Z & Z & \mathbb{I} & \mathbb{I} & Z & Z & \mathbb{I} \\[1mm] Z & \mathbb{I} & Z & \mathbb{I} & Z & \mathbb{I} & Z \\[1mm] X & X & X & X & \mathbb{I} & \mathbb{I} & \mathbb{I} \\[1mm] X & X & \mathbb{I} & \mathbb{I} & X & X & \mathbb{I} \\[1mm] X & \mathbb{I} & X & \mathbb{I} & X & \mathbb{I} & X \end{array}

Jeśli skojarzymy te siedem kubitów z wierzchołkami poniższego grafu, okazuje się, że generatory Stabilizer odpowiadają dokładnie ścianom tworzonym przez krawędzie tego grafu.

Schemat ilustrujący geometryczną lokalność 7-kubitowego kodu Steane'a

To znaczy: dla każdej ściany istnieje zarówno generator Stabilizer ZZ, jak i generator Stabilizer XX, które działają nietrywialnie na kubitach znajdujących się w wierzchołkach tej ściany. 7-kubitowy kod Steane'a posiada zatem geometryczną lokalność, więc w zasadzie nie ma potrzeby przemieszczania kubitów na duże odległości w celu pomiaru generatorów Stabilizer. Fakt, że generatory Stabilizer ZZ i XX zawsze działają nietrywialnie na dokładnie tych samych zbiorach kubitów, jest również korzystny z powodów związanych z odpornym na błędy obliczaniem kwantowym, które jest tematem kolejnej lekcji.

Kody kolorowe to kwantowe kody korekcji błędów (a dokładniej kody CSS), które uogólniają ten podstawowy wzorzec — z tą różnicą, że leżące u ich podstaw grafy mogą być różne. Na przykład poniżej widnieje graf z 19 wierzchołkami, który spełnia wymagania. Definiuje on kod, który koduje jeden kubit w 19 kubitach i ma odległość 5 (jest to kod Stabilizer [[19,1,5]][[19,1,5]]).

Schemat kodu kolorowego

Można to robić z wieloma innymi grafami, w tym z rodzinami grafów, które rosną w rozmiarze i mają ciekawe struktury.

Kody kolorowe zawdzięczają swoją nazwę jednemu z wymaganych warunków dotyczących grafów, które je definiują — mianowicie temu, że ściany mogą być potrójnie pokolorowane, co oznacza, że każdej ścianie można przypisać jeden z trzech kolorów w taki sposób, by żadne dwie ściany tego samego koloru nie miały wspólnej krawędzi (tak jak na poprzednim diagramie). Kolory nie mają faktycznego znaczenia dla definicji samego kodu — dla każdej ściany zawsze istnieją generatory Stabilizer ZZ i XX, niezależnie od jej koloru — ale są ważne przy analizie sposobu działania kodów.

Inne kody

Kwantowa korekcja błędów to aktywna i szybko rozwijająca się dziedzina badań. Osoby zainteresowane głębszym zgłębieniem tematu mogą zajrzeć do Error Correction Zoo, które zawiera liczne przykłady i kategoryzacje kwantowych kodów korekcji błędów.

Przykład: kod gross

Kod gross to niedawno odkryty kod Stabilizer [[144,12,12]][[144,12,12]]. Jest podobny do kodu torycznego, z tą różnicą, że każdy generator Stabilizer działa nietrywialnie na dwóch dodatkowych kubitach, nieco dalej od kafelka lub wierzchołka odpowiadającego temu generatorowi (tzn. każdy generator Stabilizer ma wagę 6). Zaletą tego kodu jest możliwość zakodowania 12 kubitów, w porównaniu z zaledwie dwoma w przypadku kodu torycznego.