Přeskočit na hlavní obsah

9-Qubit Shorův kód

Nyní se zaměříme na 9-Qubit Shorův kód, což je kvantový kód pro opravu chyb získaný kombinací dvou kódů z předchozí sekce: 3-bitového opakovacího kódu pro Qubit, který umožňuje opravu jedné chyby typu bit-flip, a jeho modifikované verze, která umožňuje opravu jedné chyby typu phase-flip.

Popis kódu

9-Qubit Shorův kód je kód, který získáme zřetězením dvou kódů z předchozí sekce. To znamená, že nejprve aplikujeme jedno kódování, které zakóduje jeden Qubit do tří, a poté aplikujeme druhé kódování na každý ze tří Qubit použitých pro první kódování, čímž získáme celkem devět Qubit.

Přesněji řečeno, i když bychom v tomto konkrétním případě mohli aplikovat oba kódy v libovolném pořadí, zvolíme nejprve aplikaci modifikované verze 3-bitového opakovacího kódu (který detekuje chyby typu phase-flip) a poté zakódujeme každý z výsledných tří Qubit nezávisle pomocí původního 3-bitového opakovacího kódu (který detekuje chyby typu bit-flip). Zde je schéma Circuit tohoto kódování.

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

Jak obrázek naznačuje, budeme o devíti Qubit Shorova kódu přemýšlet jako o třech blocích po třech Qubit, kde každý blok je získán z druhého kroku kódování (což je obyčejný 3-bitový opakovací kód). Obyčejný 3-bitový opakovací kód, který se zde aplikuje třikrát nezávisle, se v tomto kontextu nazývá vnitřní kód, zatímco vnější kód je kód použitý pro první krok kódování, což je modifikovaná verze 3-bitového opakovacího kódu, která detekuje chyby typu phase-flip.

Kód můžeme alternativně specifikovat popisem toho, jak se zakódují dva stavy standardní báze pro náš původní Qubit.

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}

Jakmile toto známe, můžeme pomocí linearity určit, jak se zakóduje libovolný stavový vektor Qubit.

Oprava chyb typu bit-flip a phase-flip

Chyby a Gate CNOT

Pro analýzu toho, jak chyby XX a ZZ ovlivňují kódování Qubit, a to jak pro 9-Qubit Shorův kód, tak pro další kódy, bude užitečné si všimnout několika jednoduchých vztahů mezi těmito chybami a Gate CNOT. Když začínáme analyzovat 9-Qubit Shorův kód, je to vhodný okamžik se u toho zastavit.

Následující schémata Circuit ilustrují tři základní vztahy mezi Gate XX a Gate CNOT. Konkrétně, aplikace Gate XX na cílový Qubit před Gate CNOT je ekvivalentní prohození pořadí a provedení Gate CNOT nejdříve, ale aplikace Gate XX na řídicí Qubit před Gate CNOT je ekvivalentní aplikaci Gate XX na oba Qubit po Gate CNOT. Nakonec, aplikace Gate XX na oba Qubit před Gate CNOT je ekvivalentní provedení Gate CNOT nejdříve a poté aplikaci Gate XX na řídicí Qubit. Tyto vztahy lze ověřit provedením příslušných maticových násobení nebo výpočtem účinku Circuit na stavy standardní báze.

X errors before and after CNOT gates

Situace je podobná pro Gate ZZ, s tím rozdílem, že se role řídicího a cílového Qubit prohodí. Konkrétně máme tři vztahy znázorněné následujícími kvantovými Circuit.

Z errors before and after CNOT gates

Oprava chyb typu bit-flip

Nyní se podíváme na to, jak lze chyby detekovat a opravit pomocí 9-Qubit Shorova kódu, počínaje chybami typu bit-flip — které budeme pro stručnost obecně označovat jako chyby XX.

Pro detekci a opravu chyb XX můžeme jednoduše zpracovat každý ze tří bloků v kódování zvlášť. Každý blok je kódování Qubit pomocí 3-bitového opakovacího kódu, který chrání proti chybám XX — takže provedením syndromových měření a oprav chyb XX popsaných dříve pro každý blok můžeme detekovat a opravit až jednu chybu XX na blok. Zejména pokud je na devíti Qubit kódování nejvýše jedna chyba XX, tato chyba bude tímto postupem detekována a opravena.

Stručně řečeno, oprava chyb typu bit-flip je u tohoto kódu jednoduchá záležitost, díky tomu, že vnitřní kód opravuje chyby typu bit-flip.

Oprava chyb typu phase-flip

Dále se podíváme na chyby typu phase-flip, nebo pro stručnost chyby ZZ. Tentokrát není tak úplně jasné, co bychom měli dělat, protože vnější kód je ten, který detekuje chyby ZZ, ale vnitřní kód je jakoby „v cestě", což detekci a opravu těchto chyb mírně ztěžuje.

Předpokládejme, že chyba ZZ nastane na jednom z 9 Qubit Shorova kódu, například na tom, který je znázorněn v tomto diagramu.

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

Už jsme pozorovali, co se stane, když nastane chyba ZZ při použití 3-bitového opakovacího kódu — je to ekvivalentní chybě ZZ nastalé před kódováním. V kontextu 9-Qubit Shorova kódu to znamená, že chyba ZZ na kterémkoli ze tří Qubit v rámci bloku má vždy stejný efekt, který je ekvivalentní chybě ZZ nastalé na odpovídajícím Qubit před aplikací vnitřního kódu.

Například výše uvedený diagram Circuit je ekvivalentní následujícímu diagramu. To lze odvodit pomocí výše popsaných vztahů mezi ZZ a Gate CNOT, nebo jednoduše vyhodnocením Circuit na libovolný stav Qubit ψ.\vert\psi\rangle.

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

To naznačuje jednu možnost pro detekci a opravu chyb ZZ, a to dekódovat vnitřní kód, čímž nám zbydou tři Qubit použité pro vnější kódování spolu se šesti inicializovanými pracovními Qubit. Poté můžeme zkontrolovat tyto tři Qubit vnějšího kódu na chyby ZZ a nakonec znovu zakódovat pomocí vnitřního kódu, abychom se vrátili k 9-Qubit kódování, které získáme ze Shorova kódu. Pokud detekujeme chybu ZZ, můžeme ji buď opravit před opětovným zakódováním vnitřním kódem, nebo ji můžeme opravit po opětovném zakódování aplikací Gate ZZ na kterýkoli z Qubit v daném bloku.

Zde je diagram Circuit, který zahrnuje kódovací Circuit a výše naznačenou chybu spolu s právě popsanými kroky (ale ne samotný krok opravy).

Z error detection for the 9-qubit Shor code

V tomto konkrétním příkladu je výsledek syndromového měření 1111, což lokalizuje chybu ZZ jako nastalou na jednom z Qubit v prostředním bloku.

Jednou z výhod opravy chyb ZZ po kroku opětovného zakódování oproti opravě před ním je, že můžeme výše uvedený Circuit zjednodušit. Následující Circuit je ekvivalentní, ale vyžaduje o čtyři Gate CNOT méně.

Simplified Z error detection for the 9-qubit Shor code

Opět platí, že syndrom neindikuje, který Qubit byl zasažen chybou ZZ, ale spíše který blok zažil chybu ZZ, přičemž efekt je stejný bez ohledu na to, který Qubit v rámci bloku byl zasažen. Chybu pak můžeme opravit aplikací Gate ZZ na kterýkoli ze tří Qubit postiženého bloku.

Na okraj, zde vidíme příklad degenerace v kvantovém kódu pro opravu chyb, kdy jsme schopni opravit určité chyby (v tomto případě chyby ZZ), aniž bychom je dokázali jednoznačně identifikovat.

Současné chyby typu bit-flip a phase-flip

Nyní jsme viděli, jak lze chyby XX i ZZ detekovat a opravit pomocí 9-Qubit Shorova kódu, a zejména jak lze detekovat a opravit nejvýše jednu chybu XX nebo nejvýše jednu chybu ZZ. Nyní předpokládejme, že nastanou jak chyba typu bit-flip, tak chyba typu phase-flip, případně na stejném Qubit. Jak se ukáže, v této situaci není třeba dělat nic odlišného od toho, co již bylo diskutováno — kód je schopen detekovat a opravit až jednu chybu XX a jednu chybu ZZ současně, bez dalších úprav.

Konkrétněji, chyby XX se detekují pomocí běžného syndromového měření 3-bitového opakovacího kódu, které se provádí zvlášť na každém ze tří bloků po třech Qubitech; a chyby ZZ se detekují postupem popsaným výše, který odpovídá dekódování vnitřního kódu, provedení syndromového měření pro modifikovaný 3-bitový opakovací kód pro fázové převrácení a následnému opětovnému zakódování. Tyto dva kroky detekce chyb — stejně jako odpovídající opravy — lze provádět zcela nezávisle na sobě a ve skutečnosti nezáleží na tom, v jakém pořadí se provedou.

Abys pochopil/a proč, podívej se na příklad znázorněný v následujícím Circuit diagramu, kde chyba XX i chyba ZZ zasáhly spodní Qubit prostředního bloku.

Chyba XZ pro 9-Qubitový Shorův kód

Nejprve si všimni, že pořadí chyb nehraje roli v tom smyslu, že prohození pozice chyb XX a ZZ dává ekvivalentní Circuit. Abychom byli přesní, XX a ZZ nekomutují, ale antikomutují:

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.

To znamená, že následující Circuit je ekvivalentní tomu výše, až na globální fázový faktor 1.-1.

Chyba ZX pro 9-Qubitový Shorův kód

Nyní můžeme posunout chybu ZZ stejně jako předtím a získat další ekvivalentní Circuit.

Chyba ZX pro 9-Qubitový Shorův kód

V tuto chvíli je zřejmé, že pokud se nejprve provede postup pro detekci a opravu chyb XX, chyba XX bude opravena, načež lze provést postup pro detekci a opravu chyb ZZ, aby se chyba ZZ eliminovala stejně jako předtím.

Alternativně lze nejprve provést postup pro detekci a opravu chyb ZZ. Skutečnost, že tento postup funguje podle očekávání i v přítomnosti jedné nebo více chyb XX, vyplývá z toho, že Gate XX na kterémkoli z devíti Qubitů použitých pro kódování komutují se všemi Gate v našem zjednodušeném Circuit pro měření syndromu chyb ZZ. Toto syndromové měření tedy stále správně identifikuje, který blok byl zasažen chybou ZZ. Skutečnost, že chyba ZZ na libovolném bloku se opraví aplikací Gate ZZ na kterýkoli Qubit tohoto bloku, i když se současně vyskytla chyba XX, plyne ze stejného argumentu jako výše ohledně pořadí Gate XX a ZZ, které nám dávají ekvivalentní Circuit až na globální fázi.

Z toho plyne, že 9-Qubitový Shorův kód dokáže opravit chybu XX, chybu ZZ, nebo obojí, na kterémkoli z devíti Qubitů použitých pro tento kód. Ve skutečnosti dokážeme opravit i více chyb, včetně více chyb XX (pokud spadají do různých bloků) nebo více chyb ZZ (pokud je lichý počet v nejvýše jednom bloku) — ale v dalším průběhu této lekce bude nejdůležitější, že dokážeme opravit chybu XX, chybu ZZ, nebo obojí na jednom libovolném Qubitu.

Snížení chybovosti pro náhodné chyby

Než přejdeme k poslední části lekce, která se zabývá obecnými kvantovými chybami, pojďme se krátce podívat na výkonnost 9-Qubitového Shorova kódu v situaci, kdy se na Qubitech náhodně vyskytují chyby reprezentované Pauliho maticemi.

Abychom byli konkrétnější, uvažujme jednoduchý model šumu, kde se chyby vyskytují na Qubitech nezávisle, přičemž každý Qubit je zasažen chybou s pravděpodobností pp a mezi chybami na různých Qubitech neexistuje žádná korelace — podobně jako u binárního symetrického kanálu pro klasické bity. Mohli bychom přiřadit různé pravděpodobnosti výskytu chyb X,X, YY a ZZ, ale abychom to co nejvíce zjednodušili, budeme uvažovat nejhorší scénář pro 9-Qubitový Shorův kód, tedy že na každém zasaženém Qubitu dojde k chybě YY. Chyba YY je mimochodem ekvivalentní (až na irelevantní globální fázový faktor) současnému výskytu chyby XX a chyby ZZ na stejném Qubitu, protože Y=iXZ.Y = iXZ. To vysvětluje, proč jsme chyby YY dosud zdánlivě opomíjeli.

Předpokládejme nyní, že Q\mathsf{Q} je Qubit v nějakém konkrétním stavu, který chceme chránit před chybami, a zvažujeme možnost použít 9-Qubitový Shorův kód. Přirozená otázka zní: „Měli bychom ho použít?"

Odpověď nemusí být nutně „ano". Pokud je příliš mnoho šumu, což v tomto kontextu znamená, že pp je příliš velké, použití Shorova kódu by ve skutečnosti mohlo věci zhoršit — stejně jako je 3-bitový opakovací kód horší než žádný kód, když pp je větší než jedna polovina. Ale pokud je pp dostatečně malé, pak odpověď zní „ano", kód bychom měli použít, protože sníží pravděpodobnost poškození zakódovaného stavu. Podívejme se proč a co pro tento kód znamená, že pp je příliš velké nebo dostatečně malé.

Shorův kód opravuje jakoukoli Pauliho chybu na jednom Qubitu, včetně chyby YY samozřejmě, ale neopravuje správně dvě nebo více chyb YY. Pro upřesnění předpokládáme, že používáme opravy chyb XX a ZZ popsané dříve v této sekci. (Samozřejmě, kdybychom předem věděli, že se musíme starat jen o chyby YY, přirozeně bychom zvolili opravy jinak — ale to by bylo podvádění modelu šumu a vždy bychom mohli model změnit výběrem jiných Pauliho chyb tak, aby tato nová volba oprav selhala, kdykoli jsou chybami zasaženy dva nebo více Qubitů.)

Kód tedy chrání Q\mathsf{Q}, pokud je chybou zasažen nejvýše jeden z devíti Qubitů, což nastane s pravděpodobností

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

V opačném případě, s pravděpodobností

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

kód selže při ochraně Q.\mathsf{Q}.

Konkrétně to v tomto kontextu znamená, že na náš Qubit Q\mathsf{Q} (jako logický Qubit) bude aplikována neidentická Pauliho operace, až na globální fázi. Tedy pokud jsou chyby XX a ZZ detekovány a opraveny pro Shorův kód způsobem popsaným dříve v lekci, zůstane nám zakódování stavu, které je ekvivalentní, až na globální fázi, zakódování neidentické Pauliho operace aplikované na původní stav Q.\mathsf{Q}. Stručněji řečeno, došlo k logické chybě. To může, ale nemusí mít vliv na původní stav Q\mathsf{Q} — jinými slovy na logický Qubit, který jsme zakódovali pomocí devíti fyzických Qubitů — ale pro účely této analýzy považujeme tuto událost za selhání.

Na druhou stranu, kdybychom se neobtěžovali kód použít, náš jediný Qubit by utrpěl podobný osud (podléhání neidentické Pauliho operaci) s pravděpodobností p.p. Kód pomáhá, když je první pravděpodobnost menší než druhá:

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

Zde je graf, který pro velmi malé hodnoty pp ilustruje, že kód poskytuje výhodu, přičemž bod vyrovnání nastává přibližně při 0,0323.0{,}0323.

Graf pravděpodobnosti chyb pro nezávislé chyby Y při použití Shorova kódu

Pokud je pp menší než tento bod vyrovnání, kód pomáhá; v bodě vyrovnání jsou pravděpodobnosti stejné, takže pokud kód použijeme, jen ztrácíme čas a 8 Qubitů navíc; a za bodem vyrovnání bychom tento kód rozhodně neměli používat, protože zvyšuje šanci na logickou chybu na Q.\mathsf{Q}.

Tři a čtvrt procenta se nemusí zdát jako příliš dobrý bod vyrovnání, zvláště ve srovnání s 50%,50\%, což je analogický bod vyrovnání pro 3-bitový opakovací kód pro klasickou informaci.