Udostępnij za pośrednictwem


Wprowadzenie do poprawki błędów kwantowych

W tym artykule opisano podstawy kwantowej korekty błędów, typów błędów kwantowych i niektórych typowych kodów poprawek błędów kwantowych. Zawiera również przykład sposobu poprawiania błędów przy użyciu kodu z trzema kubitami.

Co to jest korekta błędów kwantowych?

Korekta błędów kwantowych (QEC) to technika umożliwiająca ochronę informacji kwantowych przed błędami. Korekta błędów jest szczególnie ważna w komputerach kwantowych, ponieważ wydajne algorytmy kwantowe korzystają z komputerów kwantowych na dużą skalę, które są wrażliwe na szumy.

Podstawową zasadą poprawek błędów kwantowych jest zwiększenie liczby bitów używanych do kodowania danej ilości informacji. Ta nadmiarowość umożliwia kodowi wykrywanie i poprawianie błędów.

Współczynnik błędów dla komputerów kwantowych jest zwykle wyższy niż błędy klasycznego komputera ze względu na wyzwania związane z tworzeniem i operacyjnymi systemami kwantowymi. Szumy, oddzielenie i niedoskonałości bram kwantowych mogą powodować błędy w obliczeniach kwantowych. Bieżące komputery kwantowe mają współczynniki błędów w zakresie od 1% do 0,1%. Innymi słowy, oznacza to, że średnio co 100 do 1000 operacji bramy kwantowej powoduje wystąpienie błędu.

Typy błędów kwantowych

Istnieją dwa podstawowe typy błędów kwantowych: przerzucanie bitów i przerzucanie faz.

Błędy przerzucania bitów występują, gdy kubit zmienia się z $\ket{0}$ na $\ket{1}$ lub na odwrót. Błędy przerzucania bitów są również nazywane \sigma_x-errors, ponieważ mapują stany kubitu $\sigma_x={1}$\ket{\ket{0} i $\sigma_x .\ket{0}$\ket{={1}$$ Ten błąd jest analogiczny do klasycznego błędu przerzucania bitów.

Błędy przerzucania fazy występują, gdy kubit zmienia fazę. Są one również nazywane \sigma_z-errors, ponieważ mapują stany kubitu $\sigma_z\ket{\ket{0}{0}$= i $\sigma_z{1}\ket{= -.\ket{1}$$$ Ten typ błędu nie ma klasycznego analogu.

W obliczeniach kwantowych błędy kwantowe mogą manifestować się jako przerzucania bitów, przerzucania faz lub kombinacji obu tych operacji.

Jak działa korekta błędów kwantowych?

Kody poprawek błędów kwantowych działają przez kodowanie informacji kwantowych do większego zestawu kubitów nazywanych kubitami fizycznymi. Wspólny stan kubitów fizycznych reprezentuje kubit logiczny.

Fizyczne kubity podlegają błędom z powodu niespójności i niedoskonałości bram kwantowych. Kod został zaprojektowany tak, aby można było wykrywać i poprawiać błędy przez pomiar niektórych kubitów w kodzie.

Załóżmy na przykład, że chcesz wysłać komunikat $\ket{0}$z pojedynczym kubitem . Możesz użyć trzech kubitów fizycznych do zakodowania komunikatu, wysyłając $\ket{000}$polecenie , który jest znany jako kodword. Ten kod korygujący błędy jest kodem powtórzenia, ponieważ komunikat jest powtarzany trzy razy.

Teraz wyobraź sobie, że podczas transmisji występuje błąd przerzucania pojedynczego bitu, tak aby odbiorca otrzymał stan $\ket{010}$. W tym scenariuszu odbiorca może wywnioskować, że zamierzony komunikat to $\ket{000}$. Jeśli jednak komunikat podlega dwóm błędom przerzucania bitów, odbiorca może wywnioskować niepoprawny komunikat. Na koniec, jeśli wszystkie trzy bity są przerzucane tak, aby oryginalna wiadomość $\ket{000}$ stała się $\ket{111}$, odbiorca nie ma możliwości poznania błędu.

Odległość kodu QEC jest minimalną liczbą błędów, które zmieniają jeden kodword na inny, czyli liczbę błędów, których nie można wykryć. Odległość $kodu d$ można zdefiniować jako

$$d = 2t + 1$$

gdzie $t$ to liczba błędów, które kod może poprawić. Na przykład kod trój bitowy może wykrywać i poprawiać jeden błąd przerzucania bitów, więc $t = 1$, a tym samym odległość kodu wynosi $d = 3$.

Należy pamiętać, że kody powtórzeń, takie jak kod trój bitowy używany w tym przykładzie, mogą poprawiać tylko błędy przerzucania bitów, a nie błędy przerzucania fazy. Aby poprawić oba typy błędów, potrzebne są bardziej zaawansowane kody poprawek błędów kwantowych.

Typy kodów QEC

Istnieje wiele różnych typów kodów QEC, z których każdy ma własne właściwości i zalety. Oto niektóre typowe kody QEC:

  • Kod powtórzeń: najprostszy kod korekty błędu kwantowego, w którym pojedynczy kubit jest zakodowany w wielu kubitach, powtarzając go wiele razy. Kod powtórzeń może poprawić błędy przerzucania bitów, ale nie błędy przerzucania fazy.

  • Kodhora: pierwszy kod poprawki błędów kwantowych opracowany przez Petera Shora. Koduje jeden kubit logiczny do dziewięciu kubitów fizycznych. Kod kohorty może poprawić błąd przerzucania jedno bitowego lub jeden błąd przerzucania fazy, ale nie może poprawić obu typów błędów w tym samym czasie.

  • Kod steane: jest to kod siedmiokubitowy, który może poprawić błędy przerzucania bitów i przerzucania fazy. Ma to zaletę odporności na uszkodzenia, co oznacza, że sam proces poprawiania błędów nie wprowadza dodatkowych błędów.

  • Kod powierzchni: jest to kod korekty błędu topologicznego, który używa dwuwymiarowej siatki kubitów do kodowania kubitów logicznych. Ma on wysoki próg korekty błędów i jest uważany za jedną z najbardziej obiecujących technik obliczeń kwantowych o dużej skali, odpornej na błędy. Kod powierzchni jest używany przez narzędzie do szacowania zasobów usługi Azure Quantum.

  • Hastings-Haah kod: Ten kod poprawki błędów kwantowych oferuje lepsze koszty czasu przestrzeni niż kody powierzchni na kubitach Majorana w wielu systemach. W przypadku zestawów instrukcji opartych na bramie obciążenie jest większe, co sprawia, że takie podejście jest mniej wydajne niż kod powierzchni.

Przykład: kod z trzema kubitami

Kod korekcji błędów z trzema kubitami to prosty kod powtórzenia, który umożliwia wykrywanie i poprawianie błędu przerzucania bitowego. Koduje jeden kubit logiczny do trzech kubitów fizycznych, powtarzając kubit trzy razy.

Napiwek

Zapoznaj się z Q# przykładem kodu dla kodu z trzema kubitami.

Wyobraź sobie, że chcesz wysłać dowolny pojedynczy kubit $\ket{\phi}=\alpha\ket{{0} + \beta\ket{1}$. Aby uniknąć błędów, kodujesz stany $\ket{0}$ bazowe i $\ket{1}$ do wspólnego stanu trzech kubitów. Dwa stany logiczne są $\ket{0_L}=\ket{000}$ i $\ket{1_L.}=\ket{111}$

W związku z tym pojedynczy kubit $\ket{\phi}={0}\alpha\ket{+ \beta\ket{1}$ jest zakodowany jako:

$$\ket{\phi}{000}\ket{\alpha=_L + \beta\ket{\ket{\alpha{111}=0_L} i 1_L \beta\ket{}$$

Przeanalizujmy kroki kodu z trzema kubitami.

Przygotowywanie kubitów

Najpierw kodujesz pojedynczy kubit $\ket{\phi}=\alpha\ket{{0} +\beta\ket{1}$ do wspólnego stanu trzech kubitów.

Następnie przygotujesz dwa kolejne kubity w stanie $\ket{0}$. W związku z tym globalny stan wszystkich trzech kubitów to $(\alpha\ket{0} +\beta\ket{1})\ket{0}\ket{0}=\alpha\ket{{000} + \beta\ket{{100}$.

Na koniec kodujesz pojedynczy kubit do wspólnego stanu trzech kubitów, stosując dwie operacje CNOT. Pierwszy CNOT używa pierwszego kubitu jako kontrolki i działa na drugim kubitie, tworząc $\alpha\ket{000} + \beta\ket{110}$. Drugi CNOT używa pierwszego kubitu jako kontrolki i działa na trzecim kubitie. Stan trzech kubitów to teraz $\alpha\ket{000} + \beta\ket{111}$.

Wysyłanie kubitów

Wysyłasz wszystkie trzy kubity. Zakładając, że mogą wystąpić tylko jedno bitowe błędy przerzucania, odebrane kubity znajdują się w jednym z następujących stanów:

Stan Błąd
$\alpha\ket{000} + \beta\ket{111}$ Brak błędów
$\alpha\ket{100} + \beta\ket{011}$ Kubit 1
$\alpha\ket{010} + \beta\ket{101}$ Kubit 2
$\alpha\ket{001} + \beta\ket{110}$ Kubit 3

Dodawanie kubitów pomocniczych

Najpierw wprowadzasz dwa kolejne kubity przygotowane w stanie $\ket{00}$. Ta para pomocnicza kubitów służy do wyodrębniania informacji o błędzie bez bezpośredniego pomiaru lub uzyskiwania informacji o stanie logicznym.

Następnie wykonasz cztery operacje CNOT: pierwsze dwie operacje używają pierwszego i drugiego odebranych kubitów jako kontroli i działają na pierwszym pomocniczym kubitie, a ostatnie dwie operacje używają pierwszego i trzeciego odebranych kubitów jako kontroli i działają na drugim bitzie pomocniczym. Łączny stan wszystkich pięciu kubitów wynosi teraz:

Stan Błąd
$(\alpha\ket{000} + \beta\ket{111})\ket{00}$ Brak błędów
$(\alpha\ket{100} + \beta\ket{011})\ket{11}$ Kubit 1
$(\alpha\ket{010} + \beta\ket{101})\ket{10}$ Kubit 2
$(\alpha\ket{001} + \beta\ket{110})\ket{01}$ Kubit 3

Pobieranie zespołu błędu

Aby pobrać informacje o błędzie, należy zmierzyć dwa pomocnicze kubity w stanach $\ket{0}$ baz obliczeniowych i $\ket{1}$. Dzięki temu odzyskasz stan wspólny, który jest nazywany zespołem błędu, ponieważ pomaga zdiagnozować błędy w odebranych kubitach.

Teraz wiesz, w których z czterech możliwych stanów znajdują się trzy odebrane kubity. Błąd można naprawić, stosując operację korekty. W takim przypadku masz do czynienia z błędami przerzucania bitów, więc korekta jest operacją \sigma_x$ zastosowaną $do jednego (lub żadnego) kubitów.

Jeśli na przykład zespół błędu to $\ket{00}$, odebrane kubity znajdują się w stanie $\alpha{000}\ket{+ \beta\ket{{111}$, czyli stanu, który został pierwotnie wysłany. Jeśli zespół błędu to $\ket{11}$, odebrane kubity znajdują się w stanie $\alpha{100}\ket{+ b.\ket{{011}$ W pierwszym kubitie występuje błąd przerzucania bitów, który można poprawić, stosując operację $\sigma_x$ do pierwszego kubitu.

Zespół błędu Zwiń stan Korekta
$\ket{00}$ $\alpha\ket{000} + \beta\ket{111}$ Nic nie rób
$\ket{01}$ $\alpha\ket{100} + \beta\ket{011}$ Zastosuj $\sigma_x$ do kubitu 3
$\ket{10}$ $\alpha\ket{010} + \beta\ket{101}$ Stosowanie $\sigma_x$ do kubitu 2
$\ket{11}$ $\alpha\ket{001} + \beta\ket{110}$ Stosowanie $\sigma_x$ do kubitu 1

Wyodrębnianie oryginalnego kubitu

Na koniec, aby wyodrębnić pojedynczy kubit, który chcesz przesłać pierwotnie, stosujesz dwie operacje CNOT: jeden używa pierwszego kubitu jako kontrolki i działa na drugim kubitie, a drugi używa pierwszego kubitu jako kontrolki i działa na trzecim.

Stan pierwszego kubitu to teraz $\alpha\ket{0} + \beta\ket{1}$, czyli oryginalny kubit, który chcesz przesłać.

Ważne

Kod QEC nie uzyskuje żadnych informacji dotyczących współczynników $\alpha$ i $\beta$, dlatego superpozycje stanu obliczeniowego pozostają nienaruszone podczas poprawiania.