Dyskretyzacja błędów
Do tej pory rozważaliśmy błędy i 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 , 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ą o nazwie reprezentującą błąd na pojedynczym kubicie, możemy wyrazić jako kombinację liniową czterech macierzy Pauliego (łącznie z macierzą jednostkową).
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 wynika, że liczby i muszą spełniać a wartości i 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 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.
A zatem, dla danej unitarnej operacji kubitowej możemy opisać działanie zastosowanego do kubitu następującym wzorem, podobnym do poprzedniego, przy czym każda macierz reprezentuje operację zastosowaną do kubitu
Załóżmy teraz, że jest 9-kubitowym kodowaniem pewnego stanu kubitu. Jeśli błąd wystąpi na kubicie otrzymamy stan który możemy wyrazić jako kombinację liniową operacji Pauliego działających na w następujący sposób.
W tym miejscu podstawmy
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ć.
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 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
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,
gdzie
Co kluczowe, jest to stan produktowy: po prawej stronie iloczynu tensorowego mamy oryginalne, nieuszkodzone kodowanie, a po lewej — macierz gęstości 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 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
Jest to kanał kubitowy, więc każde jest macierzą którą możemy wyrazić jako kombinację liniową macierzy Pauliego.
Pozwala nam to wyrazić działanie błędu na wybranym kubicie za pomocą macierzy Pauliego w następujący sposób.
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:
gdzie tym razem mamy