CSS kódy
Klasické lineární kódy
Klasické kódy opravující chyby se začaly studovat ve 40. letech 20. století a od té doby je známo mnoho různých kódů. Nejčastěji studované a používané kódy spadají do kategorie známé jako lineární kódy. Za chvíli přesně uvidíme, co slovo „lineární" v tomto kontextu znamená, ale velmi jednoduchý způsob, jak lineární kódy vyjádřit, je ten, že jde o stabilizátorové kódy, které jsou náhodou klasické. CSS kódy jsou v podstatě páry klasických lineárních kódů, které se kombinují dohromady za účelem vytvoření kvantového kódu opravujícího chyby. Takže pro účely následující diskuse budeme potřebovat porozumět několika základním věcem o klasických lineárních kódech.
Nechť je binární abeceda pro celou tuto diskusi. Když mluvíme o klasickém lineárním kódu, máme na mysli neprázdnou množinu binárních řetězců délky pro nějaké kladné celé číslo která musí splňovat jednu základní vlastnost: pokud a jsou binární řetězce v pak řetězec je také v Zde označuje bitovou operaci exkluzivní-OR řetězců a se kterou jsme se setkali několikrát v kurzu „Fundamentals of quantum algorithms".
V podstatě, když o klasickém kódu opravujícím chyby mluvíme jako o lineárním, představujeme si binární řetězce délky jako -rozměrné vektory, jejichž složky jsou buď nebo a požadujeme, aby samotný kód tvořil lineární podprostor. Místo běžného vektorového sčítání nad reálnými nebo komplexními čísly však používáme sčítání modulo což je prostě exkluzivní-OR. To znamená, že pokud máme dvě kódová slova a tedy binární řetězce v pak modulo 2, tedy musí být také kódovým slovem v Všimni si zejména, že tato implikace musí platit i v případě Z toho vyplývá, že musí obsahovat samý nulový řetězec protože bitový exkluzivní-OR jakéhokoli řetězce se sebou samým je samý nulový řetězec.
Příklad: 3-bitový opakovací kód
3-bitový opakovací kód je příkladem klasického lineárního kódu. Konkrétně máme takže vzhledem k podmínce linearity existují pouze dvě možné volby pro a dvě možné volby pro Je triviální projít čtyři možné páry a ověřit, že při bitovém exkluzivním-OR vždy dostaneme kódové slovo:
Příklad: -Hammingův kód
Zde je další příklad klasického lineárního kódu nazývaného -Hammingův kód. Byl jedním z vůbec prvních klasických kódů opravujících chyby, které byly kdy objeveny, a skládá se z těchto 16 binárních řetězců délky 7. (Někdy se -Hammingův kód chápe jako kód s těmito řetězci pozpátku, ale my budeme používat kód obsahující řetězce zobrazené zde.)
Za výběrem těchto řetězců stojí velmi jednoduchá logika, ale to je vedlejší záležitost této lekce a nebude zde vysvětlena. Prozatím stačí pozorovat, že se jedná o klasický lineární kód: XOR jakýchkoli dvou těchto řetězců vždy dá další řetězec v kódu.
Zápis (v jednoduchých hranatých závorkách) znamená něco analogického k zápisu ve dvojitých hranatých závorkách pro stabilizátorové kódy zmíněnému v předchozí lekci, ale zde jde o klasické lineární kódy. Konkrétně kódová slova mají bitů, pomocí kódu můžeme zakódovat bity (protože je kódových slov) a jedná se o kód se vzdáleností což znamená, že jakákoli dvě různá kódová slova se musí lišit alespoň ve pozicích — takže k přeměně jednoho kódového slova na jiné je třeba překlopit alespoň bity. Skutečnost, že se jedná o kód se vzdáleností implikuje, že dokáže opravit až jednu chybu překlopení bitu.
Popis klasických lineárních kódů
Právě uvedené příklady jsou velmi jednoduché příklady klasických lineárních kódů, ale i -Hammingův kód vypadá poněkud záhadně, když jsou kódová slova jednoduše vypsána. Existují lepší a efektivnější způsoby popisu klasických lineárních kódů, včetně následujících dvou způsobů.
-
Generátory. Jedním ze způsobů popisu klasického lineárního kódu je minimální seznam kódových slov, který kód generuje, což znamená, že vzájemným XORováním všech možných podmnožin těchto kódových slov dostaneme celý kód.
Podrobněji, řetězce generují klasický lineární kód pokud
s tím, že když a když a říkáme, že tento seznam je minimální, pokud odstraněním jednoho z řetězců dostaneme menší kód. Přirozený způsob, jak o takovém popisu přemýšlet, je ten, že kolekce tvoří bázi pro jako podprostor, kde si řetězce představujeme jako vektory s binárními hodnotami složek, přičemž máme na paměti, že pracujeme ve vektorovém prostoru, kde se aritmetika provádí modulo
-
Kontroly parity. Dalším přirozeným způsobem popisu klasického lineárního kódu jsou kontroly parity — tedy minimální seznam binárních řetězců, pro které jsou řetězce v kódu právě ty, jejichž binární skalární součin s každým z těchto řetězců kontroly parity je nula. (Podobně jako bitový exkluzivní-OR se binární skalární součin několikrát objevil v „Fundamentals of quantum algorithms".)
To znamená, že řetězce jsou řetězce kontroly parity pro klasický lineární kód pokud
a tato množina řetězců je minimální, pokud odstraněním jednoho dostaneme větší kód. Nazývají se řetězce kontroly parity, protože má binární skalární součin rovný nule s právě tehdy, když bity na pozicích, kde má jedničky, mají sudou paritu. Takže pro určení, zda řetězec patří do kódu stačí zkontrolovat paritu určitých podmnožin bitů
Důležité je si zde všimnout, že binární skalární součin není ve formálním smyslu vnitřním součinem. Zejména když dva řetězce mají binární skalární součin rovný nule, neznamená to, že jsou ortogonální obvyklým způsobem, jakým o ortogonalitě přemýšlíme. Například binární skalární součin řetězce se sebou samým je nula — takže je možné, že řetězec kontroly parity pro klasický lineární kód je sám v kódu obsažen.
Klasické lineární kódy nad binární abecedou vždy obsahují počet řetězců, který je mocninou — a pro jeden klasický lineární kód popsaný dvěma právě uvedenými způsoby bude vždy platit Konkrétně, pokud máme minimální množinu generátorů, pak kód kóduje bitů a nutně budeme mít kódových slov; a pokud máme minimální množinu řetězců kontroly parity, budeme mít kódových slov. Takže každý generátor zdvojnásobí velikost kódového prostoru, zatímco každý řetězec kontroly parity zmenší velikost kódového prostoru na polovinu.
Například 3-bitový opakovací kód je lineární kód, takže jej lze popsat oběma těmito způsoby. Konkrétně existuje jediná volba generátoru, která funguje: Alternativně můžeme kód popsat dvěma řetězci kontroly parity, například a — což by mělo vypadat povědomě z našich předchozích diskusí o tomto kódu — nebo bychom mohli vzít řetězce kontroly parity a nebo a (Generátory a řetězce kontroly parity obecně nejsou pro daný klasický lineární kód jednoznačné.)
Jako druhý příklad uvažuj -Hammingův kód. Zde je jedna volba seznamu generátorů, která funguje.
A zde je volba seznamu kontrol parity pro tento kód.
Zde mimochodem vidíme, že všechny naše řetězce kontroly parity jsou samy obsaženy v kódu.
Jedna závěrečná poznámka o klasických lineárních kódech, která je propojuje se stabilizátorovým formalismem, je ta, že řetězce kontroly parity jsou ekvivalentní stabilizátorovým generátorům, které se skládají pouze z a jednotkových Pauliho matic. Například řetězce kontroly parity a pro 3-bitový opakovací kód odpovídají přesně stabilizátorovým generátorům a což je v souladu s diskusemi o Pauliho observáblech z předchozí lekce.
Definice CSS kódů
CSS kódy jsou stabilizátorové kódy získané kombinací určitých párů klasických lineárních kódů. Toto nefunguje pro dva libovolné klasické lineární kódy — tyto dva kódy musí mít určitý vzájemný vztah. Přesto tato konstrukce otevírá mnoho možností pro kvantové kódy opravující chyby, založených částečně na více než 75 letech klasické teorie kódování.
Ve stabilizátorovém formalismu jsou stabilizátorové generátory obsahující pouze a jednotkové Pauliho matice ekvivalentní kontrolám parity, jak jsme právě pozorovali u 3-bitového opakovacího kódu. Jako další příklad uvažuj následující řetězce kontroly parity pro -Hammingův kód.
Tyto řetězce kontroly parity odpovídají následujícím generátorům stabilizátoru (zapsaným bez symbolů tenzorového součinu), které získáme nahrazením každé za a každé za Toto jsou tři ze šesti generátorů stabilizátoru pro 7-qubitový Steaneův kód.
Pojmenujme generátory stabilizátoru takové generátory stabilizátoru, které mají pouze Pauliho a identitu jako tenzorové faktory — takže Pauliho matice a se v generátorech stabilizátoru nikdy nevyskytují.
Můžeme také uvažovat generátory stabilizátoru, kde se jako tenzorové faktory objevují pouze a identita. Takové generátory stabilizátoru lze chápat jako analogii k -generátorům stabilizátoru, s tím rozdílem, že popisují kontroly parity v bázi místo ve standardní bázi. Generátory stabilizátoru tohoto tvaru se nazývají generátory stabilizátoru — takže tentokrát nejsou povoleny Pauliho matice ani .
Uvažuj například zbývající tři generátory stabilizátoru ze 7-qubitového Steaneova kódu.
Sledují přesně stejný vzor z -Hammingova kódu jako -generátory stabilizátoru, jenže tentokrát nahrazujeme za místo za Z těchto tří generátorů stabilizátoru získáme kód, který zahrnuje 16 stavů uvedených zde, které dostaneme aplikací Hadamardových operací na stavy standardní báze odpovídající řetězcům v -Hammingově kódu. (Kódový prostor tohoto kódu samozřejmě zahrnuje i lineární kombinace těchto stavů.)
Nyní můžeme definovat CSS kódy velmi jednoduše.
To znamená, že CSS kódy jsou stabilizátorové kódy, u kterých máme generátory stabilizátoru, v nichž se nevyskytují žádné Pauliho matice , a u kterých se a nikdy nevyskytují ve stejném generátoru stabilizátoru.
Pro upřesnění — podle této definice je CSS kód takový, u kterého je možné zvolit pouze a generátory stabilizátoru — ale musíme mít na paměti, že při volbě generátorů stabilizátoru pro stabilizátorové kódy existuje jistá volnost. Proto budou obecně existovat různé volby generátorů stabilizátoru CSS kódu, které náhodou nejsou nebo generátory stabilizátoru (kromě alespoň jedné volby, při které jsou).
Zde je velmi jednoduchý příklad CSS kódu, který obsahuje jak generátor stabilizátoru, tak generátor stabilizátoru:
Je zřejmé, že se jedná o CSS kód, protože první generátor stabilizátoru je generátor stabilizátoru a druhý je generátor stabilizátoru. CSS kód musí samozřejmě být také platným stabilizátorovým kódem — což znamená, že generátory stabilizátoru musí komutovat, tvořit minimální generující množinu a fixovat alespoň jeden kvantový stavový vektor. Tyto požadavky jsou u tohoto kódu snadno ověřitelné. Jak jsme poznamenali v předchozí lekci, kódový prostor tohoto kódu je jednorozměrný prostor generovaný Bellovým stavem . Skutečnost, že oba generátory stabilizátoru fixují tento stav, je patrná z následujících dvou vyjádření e-bitu spolu s interpretací těchto generátorů stabilizátoru jako kontrol parity v bázích a .
7-qubitový Steaneův kód je dalším příkladem CSS kódu.
Zde máme tři generátory stabilizátoru a tři generátory stabilizátoru a již jsme ověřili, že se jedná o platný stabilizátorový kód.
A 9-qubitový Shorův kód je dalším příkladem.
Tentokrát máme šest generátorů stabilizátoru a pouze dva generátory stabilizátoru. To je v pořádku, mezi oběma typy generátorů nemusí být rovnováha ani symetrie (ačkoli často je).
Ještě jednou zdůrazněme, že CSS kódy musí být platnými stabilizátorovými kódy, a zejména každý generátor stabilizátoru musí komutovat s každým generátorem stabilizátoru. Takže ne každá kolekce a generátorů stabilizátoru definuje platný CSS kód.
Detekce a oprava chyb
Pokud jde o detekci a opravu chyb, CSS kódy obecně mají podobnou vlastnost jako 9-qubitový Shorův kód, a to že a chyby lze detekovat a opravovat zcela nezávisle; generátory stabilizátoru popisují kód, který chrání proti překlopení bitů, a generátory stabilizátoru popisují kód, který nezávisle chrání proti překlopení fáze. To funguje proto, že generátory stabilizátoru nutně komutují se chybami i se operacemi aplikovanými jako opravy, takže jsou vůči obojímu zcela „slepé", a totéž platí pro generátory stabilizátoru, chyby a opravy.
Jako příklad uvažujme 7-qubitový Steaneův kód.
Základní myšlenka tohoto kódu je nyní zřejmá: je to -Hammingův kód pro chyby překlopení bitů a -Hammingův kód pro chyby překlopení fáze. Skutečnost, že a generátory stabilizátoru komutují, je možná šťastná náhoda, protože pokud by nekomutovaly, nejednalo by se o platný stabilizátorový kód. Existuje však mnoho známých příkladů klasických lineárních kódů, které při podobném použití dávají platný stabilizátorový kód.
Obecně předpokládejme, že máme CSS kód, kde stabilizátorové generátory umožňují opravu až chyb překlopení bitů a stabilizátorové generátory umožňují opravu až chyb překlopení fáze. Například a pro Steaneův kód, protože -Hammingův kód dokáže opravit jeden bit-flip. Z toho pak plyne, díky diskretizaci chyb, že tento CSS kód dokáže opravit libovolnou chybu na počtu qubitů až do minima z a Je to proto, že při měření syndromu se libovolná chyba na tomto počtu qubitů efektivně pravděpodobnostně zkolabuje do nějaké kombinace chyb, chyb, nebo obou — a poté jsou chyby a chyby detekovány a opraveny nezávisle.
Shrnuto, za předpokladu, že máme dva klasické lineární kódy (nebo dvě kopie jednoho klasického lineárního kódu), které jsou kompatibilní v tom smyslu, že definují a stabilizátorové generátory, jež komutují, CSS kód, který jejich kombinací získáme, dědí vlastnosti opravy chyb těchto dvou kódů ve smyslu, který byl právě popsán.
Všimni si ale, že to má svou cenu — nemůžeme kódovat tolik qubitů, kolik bychom mohli kódovat bitů pomocí dvou klasických kódů. Je to proto, že celkový počet stabilizátorových generátorů pro CSS kód je součtem počtů paritních kontrol obou klasických lineárních kódů a každý stabilizátorový generátor zmenší dimenzi kódového prostoru na polovinu. Například -Hammingův kód umožňuje zakódování čtyř klasických bitů, protože pro tento kód máme pouze tři řetězce paritních kontrol, zatímco 7-qubitový Steaneův kód kóduje pouze jeden qubit, protože má šest stabilizátorových generátorů.
Kódové prostory CSS kódů
Poslední věc, kterou v této diskuzi o CSS kódech uděláme, je, že se podíváme na kódové prostory těchto kódů. To nám dá příležitost podrobněji prozkoumat vztah, který musí platit mezi dvěma klasickými lineárními kódy, aby byly kompatibilní ve smyslu, že je lze zkombinovat dohromady a vytvořit CSS kód.
Uvažuj libovolný CSS kód na qubitech a nechť jsou -bitové řetězce paritních kontrol, které odpovídají stabilizátorovým generátorům tohoto kódu. To znamená, že klasický lineární kód popsaný pouze stabilizátorovými generátory, který nazveme má následující tvar.
Slovně řečeno, klasický lineární kód obsahuje každý řetězec, jehož binární skalární součin s každým z řetězců paritních kontrol je nula.
Obdobně nechť jsou -bitové řetězce paritních kontrol odpovídající stabilizátorovým generátorům našeho kódu. Klasický lineární kód odpovídající stabilizátorovým generátorům má tedy tento tvar.
Samotné stabilizátorové generátory tedy popisují kód, který je podobný tomuto kódu, ale v bázi namísto standardní báze.
Nyní zavedeme dva nové klasické lineární kódy, které jsou odvozeny ze stejných voleb řetězců a ale kde tyto řetězce bereme jako generátory místo řetězců paritních kontrol. Konkrétně získáme tyto dva kódy.
Tyto kódy jsou známé jako duální kódy dříve definovaných kódů: je duální kód kódu a je duální kód kódu V tuto chvíli nemusí být jasné, proč jsou tyto duální kódy relevantní, ale ukazuje se, že jsou velmi relevantní z několika důvodů, včetně dvou důvodů vysvětlených v následujících odstavcích.
Za prvé, podmínky, které musí platit, aby dva klasické lineární kódy a byly kompatibilní ve smyslu, že je lze spárovat a vytvořit CSS kód, lze jednoduše popsat odkazem na duální kódy. Konkrétně musí platit nebo ekvivalentně Slovně řečeno, duální kód obsahuje řetězce odpovídající stabilizátorovým generátorům a jejich obsažení v je ekvivalentní tomu, že binární skalární součin každého z těchto řetězců s těmi, které odpovídají stabilizátorovým generátorům, je nula. To je zase ekvivalentní tomu, že každý stabilizátorový generátor komutuje s každým stabilizátorovým generátorem. Alternativně, pokud prohodíme role a stabilizátorových generátorů a vyjdeme z obsažení dojdeme ke stejnému závěru.
Za druhé, odkazem na duální kódy můžeme snadno popsat kódové prostory daného CSS kódu. Konkrétně je kódový prostor generován vektory následujícího tvaru.
Slovně řečeno, tyto vektory jsou rovnoměrné superpozice přes řetězce v duálním kódu kódu odpovídajícího stabilizátorovým generátorům, posunuté o (jinými slovy, bitově XORované s) řetězce v kódu odpovídajícím stabilizátorovým generátorům. Pro upřesnění, různé volby posunu — reprezentovaného řetězcem v tomto výrazu — mohou vést ke stejnému vektoru. Tyto stavy tedy nejsou všechny různé, ale společně generují celý kódový prostor.
Zde je intuitivní vysvětlení, proč takové vektory leží v kódovém prostoru a zároveň ho generují. Uvažuj -qubitový stav standardní báze pro libovolný -bitový řetězec a předpokládej, že tento stav promítneme na kódový prostor. To znamená, že pokud označuje projekci na kódový prostor našeho CSS kódu, uvažujeme vektor Existují dva případy:
-
Případ 1: To znamená, že každý stabilizátorový generátor našeho CSS kódu působí na triviálně. stabilizátorové generátory na druhou stranu jednoduše překlopí některé bity Konkrétně pro každý generátor kódu transformuje stabilizátorový generátor odpovídající stav na Charakterizací projekce jako průměru přes prvky stabilizátoru (jak jsme viděli v předchozí lekci) získáme tento vzorec:
-
Případ 2: To znamená, že alespoň jedna z paritních kontrol odpovídajících stabilizátorovým generátorům selže, což znamená, že musí být vlastním vektorem s vlastní hodnotou alespoň jednoho stabilizátorového generátoru. Kódový prostor CSS kódu je průnikem vlastních prostorů s vlastní hodnotou stabilizátorových generátorů. Jako vlastní vektor s vlastní hodnotou alespoň jednoho stabilizátorového generátoru je tedy ortogonální ke kódovému prostoru:
A nyní, když projdeme všechny -bitové řetězce zahodíme ty, pro které a zbývající normalizujeme, získáme dříve popsané vektory, což dokazuje, že generují kódový prostor.
Můžeme také využít symetrii mezi a stabilizátorovými generátory k popisu kódového prostoru podobným, ale odlišným způsobem. Konkrétně je to prostor generovaný vektory následujícího tvaru.
V podstatě byly a prohozeny v každém výskytu — ale musíme také prohodit standardní bázi za bázi a proto jsou zahrnuty Hadamardovy operace.
Jako příklad uvažujme 7-qubitový Steaneův kód. Řetězce paritních kontrol pro i stabilizátorové generátory jsou stejné: a Kódy a jsou proto stejné; oba se rovnají -Hammingovu kódu.
Duální kódy a jsou proto také stejné. Máme tři generátory, takže získáme osm řetězců.
Všechny tyto řetězce jsou obsaženy v -Hammingově kódu, a tedy je CSS podmínka splněna: nebo ekvivalentně
Vzhledem k tomu, že obsahuje polovinu všech řetězců v existují pouze dva různé vektory které lze získat volbou To je očekávané, protože 7-qubitový Steaneův kód má dvoudimenzionální kódový prostor. Dva stavy, které tímto způsobem získáme, můžeme použít k zakódování logických stavů a následovně.
Jako obvykle nám tato volba není vnucena — kódový prostor můžeme použít ke kódování qubitů jakkoli chceme. Toto kódování je však v souladu s příkladem kódovacího obvodu pro 7-qubitový Steaneův kód z předchozí lekce.