Sari la conținutul principal

Coduri de repetiție

Vom începe lecția cu o discuție despre codurile de repetiție. Codurile de repetiție nu protejează informația cuantică împotriva fiecărui tip de eroare care poate apărea pe qubiți, dar ele formează baza pentru codul Shor de 9 qubiți, pe care îl vom vedea în lecția următoare, și sunt de asemenea utile pentru explicarea elementelor de bază ale corecției erorilor.

Codificare și decodificare clasică

Codurile de repetiție sunt exemple extrem de elementare de coduri de corectare a erorilor. Ideea este că putem proteja biții împotriva erorilor repetând pur și simplu fiecare bit de un număr fix de ori.

În particular, să considerăm mai întâi codul de repetiție pe 3 biți, doar în contextul informației clasice pentru început. Acest cod codifică un bit în trei prin repetarea bitului de trei ori, deci 00 este codificat ca 000000 și 11 este codificat ca 111.111.

00001111\begin{aligned} 0 & \mapsto 000\\ 1 & \mapsto 111 \end{aligned}

Dacă nimic nu merge rău, putem distinge în mod evident cele două posibilități pentru bitul original din codificările lor. Ideea este că dacă a apărut o eroare și unul dintre cele trei bituri s-a inversat, adică un 0 se schimbă în 1 sau un 1 se schimbă în 0, putem totuși să determinăm care era bitul original prin identificarea valorii binare care apare de două ori. Echivalent, putem decoda prin calcularea valorii majoritare (adică valoarea binară care apare cel mai frecvent).

abcmajority(a,b,c)a b c \mapsto \operatorname{majority}(a,b,c)

Bineînțeles, dacă 2 sau 3 biți ai codificării se inversează, decodificarea nu va funcționa corect și se va recupera bitul greșit, dar dacă cel mult 1 din cei 3 biți se inversează, decodificarea va fi corectă. Aceasta este o proprietate tipică a codurilor de corectare a erorilor în general: pot permite corecția erorilor, dar numai dacă nu sunt prea multe.

Reducerea zgomotului pentru canalul simetric binar

Pentru un exemplu de situație în care șansele de a face o eroare pot fi reduse folosind un cod de repetiție, presupune că scopul nostru este să comunicăm un singur bit unui receptor ipotetic și putem transmite biți printr-un așa-numit canal simetric binar, care inversează fiecare bit trimis prin el independent cu o probabilitate p.p. Adică, cu probabilitatea 1p,1-p, receptorul primește orice bit a fost trimis prin canal, dar cu probabilitatea p,p, bitul se inversează și receptorul primește valoarea opusă a bitului.

Deci, dacă alegem să nu folosim codul de repetiție pe 3 biți și pur și simplu trimitem orice bit avem în minte prin canal, receptorul primește, prin urmare, bitul greșit cu probabilitatea p.p. Pe de altă parte, dacă mai întâi codificăm bitul pe care vrem să-l trimitem folosind codul de repetiție pe 3 biți și apoi trimitem fiecare dintre cele trei bituri ale codificării prin canal, atunci fiecare dintre ele se inversează independent cu probabilitatea p.p. Șansele de inversare a unui bit sunt acum mai mari deoarece există acum trei biți care s-ar putea inversa în loc de unul, dar dacă cel mult un bit se inversează, receptorul va decoda corect. O eroare persistă, prin urmare, după decodificare numai dacă doi sau mai mulți biți se inversează în timpul transmisiei.

Probabilitatea că doi biți se inversează în timpul transmisiei este 3p2(1p),3p^2(1-p), care este p2(1p)p^2(1-p) pentru fiecare dintre cele trei alegeri pentru bitul care nu se inversează, în timp ce probabilitatea că toți cei trei biți se inversează este p3.p^3. Probabilitatea totală de două sau trei inversări de biți este, prin urmare

3p2(1p)+p3=3p22p3.3 p^2 (1 - p) + p^3 = 3 p^2 - 2 p^3.

Pentru valori ale lui pp mai mici decât o jumătate, aceasta duce la o scădere a probabilității că receptorul ajunge cu bitul greșit. Va exista totuși o șansă de eroare în acest caz, dar codul scade probabilitatea. (Pentru valori ale lui pp mai mari decât o jumătate, pe de altă parte, codul de fapt crește probabilitatea că receptorul primește bitul greșit.)

Graficul probabilității de eroare pentru codul de repetiție pe 3 biți pentru un canal simetric binar

Codificarea qubiților

Codul de repetiție pe 3 biți este un cod clasic de corectare a erorilor, dar putem considera ce se întâmplă dacă încercăm să-l folosim pentru a proteja qubiții împotriva erorilor. Așa cum vom vedea, nu este un cod cuantic de corectare a erorilor foarte impresionant, deoarece de fapt face unele erori mai probabile. Este, totuși, primul pas spre codul Shor și ne va servi bine dintr-un punct de vedere pedagogic.

Pentru a fi clar, atunci când ne referim la codul de repetiție pe 3 biți utilizat pentru qubiți, avem în vedere o codificare a unui qubit unde stările bazei standard sunt repetate de trei ori, astfel că un vector de stare al unui qubit unic este codificat după cum urmează.

α0+β1α000+β111\alpha \vert 0\rangle + \beta \vert 1\rangle \mapsto \alpha \vert 000\rangle + \beta \vert 111\rangle

Această codificare este ușor de implementat prin următorul circuit cuantic, care utilizează doi qubiți de spațiu de lucru inițializați și două Gate-uri CNOT.

Circuit de codificare pentru codul de repetiție pe 3 biți

Observă, în particular, că această codificare nu este la fel ca repetarea stării cuantice de trei ori, ca în cazul în care un vector de stare al qubitului dat ar fi codificat ca ψψψψ.\vert\psi\rangle \mapsto \vert\psi\rangle\vert\psi\rangle\vert\psi\rangle. O astfel de codificare nu poate fi implementată pentru o stare cuantică necunoscută ψ\vert\psi\rangle din cauza teoremei non-clonării.

Erori de inversare a biților

Presupune acum că apare o eroare după ce codificarea a fost efectuată. Concret, să presupunem că un Gate XX, sau cu alte cuvinte o inversare a biților, apare pe unul dintre qubiți. De exemplu, dacă qubit-ul din mijloc experimentează o inversare a biților, starea celor trei qubiți este transformată în această stare:

α010+β101.\alpha \vert 010\rangle + \beta \vert 101\rangle.

Bineînțeles, acesta nu este singurul tip de eroare care ar putea apărea — și este de asemenea rezonabil să punem la îndoială ipoteza că o eroare ia forma unei operații unitare perfecte. Vom reveni la aceste probleme în ultima secțiune a lecției și pentru moment putem privi o eroare de această formă ca fiind doar un tip posibil de eroare (deși unul fundamental important).

Putem vedea clar din expresia matematică pentru starea de mai sus că bitul din mijloc este cel care diferă în interiorul fiecărui ket. Dar să presupunem că am avea cei trei qubiți în posesia noastră și nu le-am cunoaște starea. Dacă am suspecta că ar fi putut apărea o inversare a biților, o opțiune pentru a verifica că s-a inversat un bit ar fi să efectuăm o măsurare în baza standard, care, în cazul de față, ne-ar face să vedem 010010 sau 101101 cu probabilitățile α2\vert\alpha\vert^2 și β2,\vert\beta\vert^2, respectiv. În oricare caz, concluzia noastră ar fi că bitul din mijloc s-a inversat — dar, din păcate, am pierde starea cuantică originală α0+β1.\alpha\vert 0\rangle + \beta \vert 1\rangle. Aceasta este starea pe care încercăm să o protejăm, deci măsurarea în baza standard este o opțiune nesatisfăcătoare.

Ceea ce putem face în schimb este să folosim următorul circuit cuantic, alimentând starea codificată în primii trei qubiți. Acest circuit măsoară nedistructiv paritatea stărilor bazei standard ale primilor doi qubiți precum și a ultimilor doi qubiți din codificarea de trei qubiți.

Circuit de detectare a erorilor pentru codul de repetiție pe 3 biți

Sub ipoteza că cel mult un bit s-a inversat, se poate deduce cu ușurință din rezultatele măsurătorilor locul inversării bitului (sau absența acesteia). În particular, după cum ilustrează următoarele patru diagrame de circuit, rezultatul măsurătorii 0000 indică faptul că nu a avut loc nicio inversare a bitului, în timp ce celelalte trei posibilități indică ce qubit a experimentat o inversare a bitului. Detectarea erorilor pentru codul de repetiție pe 3 biți (fără erori)

Detectarea erorilor pentru codul de repetiție pe 3 biți (eroare pe qubit 0)

Detectarea erorilor pentru codul de repetiție pe 3 biți (eroare pe qubit 1)

Detectarea erorilor pentru codul de repetiție pe 3 biți (eroare pe qubit 2)

Este crucial că starea primilor trei qubiți nu colapsează în niciunul dintre cazuri, ceea ce ne permite să corectăm o eroare de inversare a bitului dacă a apărut una — prin simpla aplicare a aceleiași inversări de bit din nou cu un Gate XX. Tabelul de mai jos rezumă stările pe care le obținem din cel mult o inversare a bitului, rezultatele măsurătorilor (care se numesc sindrom în contextul corecției erorilor) și corecția necesară pentru a reveni la codificarea originală.

StareSindromCorecție
α000+β111\alpha\vert 000\rangle + \beta \vert 111\rangle0000III\mathbb{I}\otimes\mathbb{I}\otimes\mathbb{I}
α001+β110\alpha\vert 001\rangle + \beta \vert 110\rangle0101IIX\mathbb{I}\otimes\mathbb{I}\otimes X
α010+β101\alpha\vert 010\rangle + \beta \vert 101\rangle1111IXI\mathbb{I}\otimes X\otimes\mathbb{I}
α100+β011\alpha\vert 100\rangle + \beta \vert 011\rangle1010XIIX\otimes\mathbb{I}\otimes\mathbb{I}

Încă o dată, luăm în considerare numai posibilitatea că cel mult o inversare a bitului a apărut. Aceasta nu ar funcționa corect dacă ar apărea două sau trei inversări de biți și, de asemenea, nu am luat în considerare alte erori posibile în afara inversărilor de biți.

Erori de inversare a fazei

În contextul cuantic, inversările de biți nu sunt singurele erori de care trebuie să ne îngrijorăm. De exemplu, trebuie să ne îngrijorăm și de erorile de inversare a fazei, care sunt descrise de Gate-uri ZZ. Pe aceeași linie cu erorile de inversare a biților, putem gândi erorile de inversare a fazei ca reprezentând doar o altă posibilitate pentru o eroare care poate afecta un qubit.

Cu toate acestea, după cum vom vedea în ultima secțiune a lecției, care se referă la așa-numita discretizare a erorilor pentru codurile cuantice de corectare a erorilor, o concentrare pe erorile de inversare a biților și erorile de inversare a fazei se dovedește a fi bine justificată. Concret, capacitatea de a corecta o eroare de inversare a bitului, o eroare de inversare a fazei sau ambele erori simultan implică automat capacitatea de a corecta o eroare cuantică arbitrară pe un singur qubit.

Din păcate, codul de repetiție pe 3 biți nu protejează deloc împotriva inversărilor de fază. De exemplu, presupune că o stare a qubitului α0+β1\alpha\vert 0\rangle + \beta\vert 1\rangle a fost codificată folosind codul de repetiție pe 3 biți și apare o eroare de inversare a fazei pe qubit-ul din mijloc. Aceasta duce la starea

(IZI)(α000+β111)=α000β111,(\mathbb{I} \otimes Z \otimes \mathbb{I}) ( \alpha \vert 000\rangle + \beta \vert 111\rangle) = \alpha \vert 000\rangle - \beta \vert 111\rangle,

care este exact starea pe care am fi obținut-o din codificarea stării qubitului α0β1.\alpha\vert 0\rangle - \beta\vert 1\rangle. Într-adevăr, o eroare de inversare a fazei pe oricare dintre cei trei qubiți ai codificării are același efect, care este echivalent cu o eroare de inversare a fazei care apare pe qubit-ul original înainte de codificare. Sub ipoteza că starea cuantică originală este o stare necunoscută, nu există, prin urmare, nicio modalitate de a detecta că a apărut o eroare, deoarece starea rezultantă este o codificare perfect validă a unei stări diferite a qubitului. În particular, rularea circuitului de detectare a erorilor de mai devreme pe starea α000β111\alpha \vert 000\rangle - \beta \vert 111\rangle va produce cu certitudine sindromul 00,00, care sugerează în mod greșit că nu au apărut erori.

Între timp, există acum trei qubiți în loc de unul care ar putea experimenta erori de inversare a fazei. Deci, într-o situație în care se presupune că erorile de inversare a fazei apar independent pe fiecare qubit cu o probabilitate nenulă pp (similar cu un canal simetric binar, cu excepția că sunt inversări de fază în loc de inversări de biți), acest cod crește de fapt probabilitatea unei erori de inversare a fazei după decodificare pentru valori mici ale lui p.p. Mai precis, vom obține o eroare de inversare a fazei pe qubit-ul original după decodificare ori de câte ori există un număr impar de erori de inversare a fazei pe cei trei qubiți ai codificării, ceea ce se întâmplă cu probabilitatea

3p(1p)2+p3.3 p (1 - p)^2 + p^3.

Această valoare este mai mare decât pp când 0<p<1/2,0<p<1/2, deci codul crește probabilitatea unei erori de inversare a fazei pentru valori ale lui pp în acest interval.

Codul de repetiție modificat pentru erori de inversare a fazei

Am observat că codul de repetiție pe 3 biți este complet indiferent la erorile de inversare a fazei, deci nu pare să fie foarte util pentru a face față acestui tip de eroare. Putem, totuși, modifica codul de repetiție pe 3 biți într-un mod simplu astfel încât să detecteze erorile de inversare a fazei. Această modificare va face codul indiferent la erorile de inversare a biților — dar, după cum vom vedea în secțiunea următoare, putem combina codul de repetiție pe 3 biți cu această versiune modificată pentru a obține codul Shor, care poate corecta atât erorile de inversare a biților, cât și erorile de inversare a fazei.

Iată versiunea modificată a circuitului de codificare de mai sus, care va putea acum să detecteze erorile de inversare a fazei. Modificarea este foarte simplă: pur și simplu aplicăm un Gate Hadamard fiecărui qubit după efectuarea celor două Gate-uri CNOT.

Circuit de codificare modificat pentru codul de repetiție pe 3 biți

Un Gate Hadamard transformă o stare 0\vert 0\rangle într-o stare +\vert + \rangle și o stare 1\vert 1\rangle într-o stare \vert - \rangle, deci efectul net este că starea qubitului unic α0+β1\alpha\vert 0\rangle + \beta \vert 1\rangle este codificată ca

α++++β\alpha \vert {+}\,{+}\,{+} \rangle + \beta \vert {-}\,{-}\,{-} \rangle

unde +++=+++\vert {+}\,{+}\,{+} \rangle = \vert + \rangle \otimes \vert + \rangle \otimes\vert + \rangle și =.\vert {-}\,{-}\,{-} \rangle = \vert - \rangle \otimes \vert - \rangle \otimes\vert - \rangle.

O eroare de inversare a fazei, sau echivalent un Gate ZZ, inversează între stările +\vert + \rangle și \vert - \rangle, deci această codificare va fi utilă pentru detectarea (și corectarea) erorilor de inversare a fazei. Concret, circuitul de detectare a erorilor de mai devreme poate fi modificat după cum urmează.

Circuit de detectare a erorilor de fază pentru codul de repetiție pe 3 biți

Cu alte cuvinte, luăm circuitul de mai devreme și pur și simplu punem Gate-uri Hadamard pe primii trei qubiți atât la început, cât și la sfârșit. Ideea este că primele trei Gate-uri Hadamard transformă stările +\vert + \rangle și \vert - \rangle înapoi în stările 0\vert 0\rangle și 1\vert 1\rangle, aceleași verificări de paritate ca înainte au loc, și apoi al doilea strat de Gate-uri Hadamard transformă starea înapoi la stările +\vert + \rangle și \vert - \rangle astfel încât să recuperăm codificarea noastră. Pentru referință viitoare, să observăm că acest circuit de detectare a inversărilor de fază poate fi simplificat după cum urmează.

Circuit simplificat de detectare a erorilor de fază

Următoarele patru diagrame de circuit descriu cum funcționează versiunea noastră modificată a codului de repetiție pe 3 biți, inclusiv pasul de codificare și pasul de detectare a erorilor, atunci când apare cel mult o eroare de inversare a fazei. Comportamentul este similar cu codul de repetiție obișnuit pe 3 biți pentru inversările de biți.

Detectarea erorilor de inversare a fazei pentru codul de repetiție pe 3 biți modificat (fără erori)

Detectarea erorilor de inversare a fazei pentru codul de repetiție pe 3 biți modificat (eroare pe qubit 0)

Detectarea erorilor de inversare a fazei pentru codul de repetiție pe 3 biți modificat (eroare pe qubit 1)

Detectarea erorilor de inversare a fazei pentru codul de repetiție pe 3 biți modificat (eroare pe qubit 2)

Iată un tabel analog cu cel de mai sus, de data aceasta luând în considerare posibilitatea de cel mult o eroare de inversare a fazei.

StareSindromCorecție
α++++β\alpha\vert {+}\,{+}\,{+} \rangle + \beta \vert {-}\,{-}\,{-}\rangle0000III\mathbb{I}\otimes\mathbb{I}\otimes\mathbb{I}
α+++β+\alpha\vert {+}\,{+}\,{-}\rangle + \beta \vert {-}\,{-}\,{+}\rangle0101IIZ\mathbb{I}\otimes\mathbb{I}\otimes Z
α+++β+\alpha\vert {+}\,{-}\,{+}\rangle + \beta \vert {-}\,{+}\,{-}\rangle1111IZI\mathbb{I}\otimes Z\otimes\mathbb{I}
α+++β+\alpha\vert {-}\,{+}\,{+} \rangle + \beta \vert {+}\,{-}\,{-}\rangle1010ZIIZ\otimes\mathbb{I}\otimes\mathbb{I}

Din păcate, această versiune modificată a codului de repetiție pe 3 biți nu mai poate corecta erorile de inversare a biților. Totuși, nu totul este pierdut.