Sari la conținutul principal

Codul Shor cu 9 qubiți

Acum ne îndreptăm atenția către codul Shor cu 9 qubiți, un cod de corecție a erorilor cuantice obținut prin combinarea celor două coduri din secțiunea anterioară: codul de repetare de 3 biți pentru qubiți, care permite corectarea unei singure erori de inversare a bitului, și versiunea modificată a acelui cod, care permite corectarea unei singure erori de inversare a fazei.

Descrierea codului

Codul Shor cu 9 qubiți este codul pe care îl obținem prin concatenarea celor două coduri din secțiunea anterioară. Aceasta înseamnă că aplicăm mai întâi o codificare, care codifică un qubit în trei, și apoi aplicăm cealaltă codificare fiecăruia dintre cei trei qubiți folosiți pentru prima codificare, rezultând nouă qubiți în total.

Mai precis, deși am putea aplica cele două coduri în oricare ordine în acest caz particular, vom face alegerea de a aplica mai întâi versiunea modificată a codului de repetare de 3 biți (care detectează erorile de inversare a fazei), și apoi vom codifica fiecare dintre cei trei qubiți rezultați în mod independent folosind codul original de repetare de 3 biți (care detectează erorile de inversare a bitului). Iată o reprezentare prin diagrama de Circuit a acestei codificări.

Circuit de codificare pentru codul Shor cu 9 qubiți, care arată trei blocuri

Așa cum sugerează figura, vom gândi cei nouă qubiți ai codului Shor ca fiind grupați în trei blocuri de câte trei qubiți, unde fiecare bloc este obținut din al doilea pas de codificare (care este codul obișnuit de repetare de 3 biți). Codul obișnuit de repetare de 3 biți, care este aplicat de trei ori independent, se numește codul intern în acest context, în timp ce codul extern este codul folosit pentru primul pas de codificare, și anume versiunea modificată a codului de repetare de 3 biți care detectează erorile de inversare a fazei.

Putem specifica alternativ codul descriind modul în care cele două stări din baza standard pentru qubit-ul original se codifică.

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}

Odată ce știm acest lucru, putem determina prin liniaritate cum se codifică un vector de stare arbitrar al qubit-ului.

Corectarea erorilor de inversare a bitului și a fazei

Erori și porți CNOT

Pentru a analiza modul în care erorile XX și ZZ afectează codificările qubiților, atât pentru codul Shor cu 9 qubiți, cât și pentru alte coduri, va fi util să observăm câteva relații simple între aceste erori și porțile CNOT. Pe măsură ce începem să analizăm codul Shor cu 9 qubiți, acesta este un moment rezonabil pentru a face o pauză și a face acest lucru.

Diagramele de Circuit de mai jos ilustrează trei relații de bază între porțile XX și porțile CNOT. Mai precis, aplicarea unei porți XX pe qubit-ul țintă înainte de un CNOT este echivalentă cu inversarea ordinii și efectuarea mai întâi a CNOT, dar aplicarea unei porți XX pe qubit-ul de control înainte de un CNOT este echivalentă cu aplicarea porților XX pe ambii qubiți după CNOT. În final, aplicarea porților XX pe ambii qubiți înainte de un CNOT este echivalentă cu efectuarea mai întâi a CNOT și apoi aplicarea unei porți XX pe qubit-ul de control. Aceste relații pot fi verificate prin efectuarea înmulțirilor de matrice necesare sau calculând efectul Circuit-urilor asupra stărilor din baza standard.

Erori X înainte și după porțile CNOT

Situația este similară pentru porțile ZZ, cu excepția că rolurile qubiților de control și țintă se inversează. În particular, avem cele trei relații descrise de următoarele circuite cuantice.

Erori Z înainte și după porțile CNOT

Corectarea erorilor de inversare a bitului

Acum vom analiza modul în care erorile pot fi detectate și corectate folosind codul Shor cu 9 qubiți, începând cu erorile de inversare a bitului — la care ne vom referi în general ca erori XX de acum înainte, pentru concizie.

Pentru a detecta și corecta erorile XX, putem trata pur și simplu fiecare dintre cele trei blocuri din codificare separat. Fiecare bloc este o codificare a unui qubit folosind codul de repetare de 3 biți, care protejează împotriva erorilor XX — deci prin efectuarea măsurătorilor sindromului și a corecțiilor de erori XX descrise anterior pentru fiecare bloc, putem detecta și corecta până la o eroare XX per bloc. În particular, dacă există cel mult o eroare XX pe cei nouă qubiți ai codificării, această eroare va fi detectată și corectată prin această procedură.

Pe scurt, corectarea erorilor de inversare a bitului este o problemă simplă pentru acest cod, datorită faptului că codul intern corectează erorile de inversare a bitului.

Corectarea erorilor de inversare a fazei

În continuare vom analiza erorile de inversare a fazei, sau erorile ZZ pe scurt. De data aceasta nu este la fel de clar ce ar trebui să facem, deoarece codul extern este cel care detectează erorile ZZ, dar codul intern pare să fie cumva „în cale", făcând detectarea și corectarea acestor erori puțin mai dificilă. Presupunem că o eroare ZZ apare pe unul dintre cei 9 qubiți ai codului Shor, cum ar fi cel indicat în această diagramă.

Eroare Z pe un qubit pentru codul Shor cu 9 qubiți

Am observat deja ce se întâmplă când apare o eroare ZZ atunci când folosim codul de repetare de 3 biți — aceasta este echivalentă cu o eroare ZZ care apare înainte de codificare. În contextul codului Shor cu 9 qubiți, aceasta înseamnă că o eroare ZZ pe oricare dintre cei trei qubiți dintr-un bloc are întotdeauna același efect, care este echivalent cu o eroare ZZ apărând pe qubit-ul corespunzător înainte ca codul intern să fie aplicat.

De exemplu, diagrama de Circuit de mai sus este echivalentă cu diagrama următoare. Acest lucru poate fi demonstrat folosind relațiile dintre porțile ZZ și CNOT descrise mai sus, sau pur și simplu evaluând Circuit-urile pe o stare arbitrară de qubit ψ.\vert\psi\rangle.

Eroare Z înaintea codului intern pentru codul Shor cu 9 qubiți

Aceasta sugerează o opțiune pentru detectarea și corectarea erorilor ZZ, care este de a decoda codul intern, lăsându-ne cu cei trei qubiți folosiți pentru codificarea externă împreună cu șase qubiți de spațiu de lucru inițializați. Putem apoi verifica acești trei qubiți ai codului extern pentru erori ZZ, și în final putem re-codifica folosind codul intern, pentru a reveni la codificarea cu 9 qubiți pe care o obținem din codul Shor. Dacă detectăm o eroare ZZ, o putem fie corecta înainte de re-codificarea cu codul intern, fie o putem corecta după re-codificare, prin aplicarea unei porți ZZ oricăruia dintre qubiții din acel bloc.

Iată o diagramă de Circuit care include Circuit-ul de codificare și eroarea sugerată mai sus împreună cu pașii tocmai descriși (dar nu și pasul de corecție propriu-zis).

Detectarea erorii Z pentru codul Shor cu 9 qubiți

În acest exemplu particular, măsurătoarea sindromului este 11,11, care localizează eroarea ZZ ca apărând pe unul dintre qubiții din blocul din mijloc.

Un avantaj al corectării erorilor ZZ după pasul de re-codificare, față de înainte, este că putem simplifica Circuit-ul de mai sus. Următorul Circuit este echivalent, dar necesită cu patru porți CNOT mai puțin.

Detectarea simplificată a erorii Z pentru codul Shor cu 9 qubiți

Din nou, sindromul nu indică ce qubit a fost afectat de o eroare ZZ, ci care bloc a experimentat o eroare ZZ, efectul fiind același indiferent de ce qubit din bloc a fost afectat. Putem apoi corecta eroarea aplicând o poartă ZZ oricăruia dintre cei trei qubiți ai blocului care a fost afectat.

Ca o paranteză, vedem aici un exemplu de degenerare într-un cod cuantic de corecție a erorilor, unde suntem capabili să corectăm anumite erori (erorile ZZ în acest caz) fără a le putea identifica în mod unic.

Erori simultane de inversare a bitului și a fazei

Am văzut acum cum pot fi detectate și corectate atât erorile XX, cât și erorile ZZ folosind codul Shor cu 9 qubiți, și în particular cum pot fi detectate și corectate cel mult o eroare XX sau cel mult o eroare ZZ. Acum să presupunem că atât o eroare de inversare a bitului, cât și una de inversare a fazei apar, posibil pe același qubit. Se dovedește că nu trebuie făcut nimic diferit în această situație față de ceea ce s-a discutat deja — codul este capabil să detecteze și să corecteze până la o eroare XX și o eroare ZZ simultan, fără modificări suplimentare.

Mai precis, erorile XX sunt detectate prin aplicarea măsurătorii obișnuite a sindromului codului de repetare de 3 biți, care se efectuează separat pe fiecare dintre cele trei blocuri de trei qubiți; iar erorile ZZ sunt detectate prin procedura descrisă tocmai mai sus, care este echivalentă cu decodificarea codului intern, efectuarea măsurătorii sindromului pentru codul de repetare de 3 biți modificat pentru inversările de fază, și apoi re-codificarea. Acești doi pași de detectare a erorilor — precum și corecțiile corespunzătoare — pot fi efectuați complet independent unul de celălalt, și de fapt nu contează în ce ordine sunt efectuați.

Pentru a vedea de ce este așa, să luăm în considerare exemplul reprezentat în diagrama de Circuit de mai jos, unde atât o eroare XX, cât și o eroare ZZ au afectat qubit-ul de jos din blocul din mijloc.

O eroare XZ pentru codul Shor cu 9 qubiți

Să observăm mai întâi că ordinea erorilor nu contează, în sensul că inversarea poziției erorilor XX și ZZ produce un Circuit echivalent. Pentru a fi clar, XX și ZZ nu comută, ele anticomută:

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.

Aceasta implică faptul că următorul Circuit este echivalent cu cel de mai sus cu un factor de fază globală de 1.-1.

O eroare ZX pentru codul Shor cu 9 qubiți

Putem muta acum eroarea ZZ la fel ca înainte pentru a obține un alt Circuit echivalent.

O eroare ZX pentru codul Shor cu 9 qubiți

În acest moment este evident că dacă procedura de detectare și corectare a erorilor XX este efectuată mai întâi, eroarea XX va fi corectată, după care procedura de detectare și corectare a erorilor ZZ poate fi efectuată pentru a elimina eroarea ZZ ca înainte.

Alternativ, procedura de detectare și corectare a erorilor ZZ poate fi efectuată mai întâi. Faptul că această procedură funcționează conform așteptărilor, chiar și în prezența uneia sau mai multor erori XX, decurge din faptul că porțile XX pe oricare dintre cei nouă qubiți folosiți pentru codificare comută cu toate porțile din Circuit-ul nostru simplificat pentru măsurarea sindromului pentru erorile ZZ. Astfel, această măsurătoare a sindromului va identifica în continuare corect care bloc a fost afectat de o eroare ZZ. Faptul că o eroare ZZ pe orice bloc este corectată prin aplicarea unei porți ZZ oricărui qubit din acel bloc, chiar dacă a apărut și o eroare XX, decurge din același argument de mai sus privind ordinea porților XX și ZZ care ne dă Circuit-uri echivalente cu o fază globală.

Rezultă că codul Shor cu 9 qubiți poate corecta o eroare XX, o eroare ZZ, sau ambele, pe oricare dintre cei nouă qubiți folosiți pentru acest cod. De fapt, putem corecta mai multe erori decât atât, inclusiv erori XX multiple (atâta timp cât cad în blocuri diferite) sau erori ZZ multiple (atâta timp cât cel mult un bloc experimentează un număr impar dintre ele) — dar în continuare, ceea ce va fi cel mai relevant pentru scopurile acestei lecții este că putem corecta o eroare XX, o eroare ZZ, sau ambele pe orice un qubit.

Reducerea erorilor pentru erori aleatoare

Înainte de a trece la ultima secțiune a lecției, care privește erorile cuantice arbitrare, să luăm în considerare pe scurt performanța codului Shor cu 9 qubiți atunci când erorile reprezentate de matricele Pauli apar aleatoriu pe qubiți.

Pentru a fi mai concreți, să luăm în considerare un model de zgomot simplu în care erorile apar independent pe qubiți, cu fiecare qubit experimentând o eroare cu probabilitatea pp, și fără nicio corelație între erorile pe qubiți diferiți — pe linii similare cu un canal simetric binar pentru biți clasici. Am putea atribui probabilități diferite pentru apariția erorilor X,X, Y,Y, și ZZ, dar pentru a păstra lucrurile cât mai simple posibil, vom considera scenariul cel mai defavorabil pentru codul Shor cu 9 qubiți, și anume că o eroare YY apare pe fiecare dintre qubiții afectați. O eroare YY, apropo, este echivalentă (până la un factor de fază globală irelevant) cu o eroare XX și una ZZ apărând pe același qubit, dat fiind că Y=iXZ.Y = iXZ. Aceasta explică aparenta noastră neglijare a erorilor YY până în acest punct.

Acum, presupunând că Q\mathsf{Q} este un qubit într-o anumită stare pe care dorim să o protejăm împotriva erorilor, putem lua în considerare opțiunea de a folosi codul Shor cu 9 qubiți. O întrebare naturală de pus este: „Ar trebui să îl folosim?"

Răspunsul nu este neapărat „da". Dacă există prea mult zgomot, adică în acest context că pp este prea mare, folosirea codului Shor ar putea de fapt înrăutăți lucrurile — la fel cum codul de repetare de 3 biți este mai rău decât niciun cod atunci când pp este mai mare decât o jumătate. Dar, dacă pp este suficient de mic, atunci răspunsul este „da", ar trebui să folosim codul, deoarece va scădea probabilitatea ca starea codificată să devină coruptă. Să vedem de ce este așa, și ce înseamnă ca pp să fie prea mare sau suficient de mic pentru acest cod.

Codul Shor corectează orice eroare Pauli pe un singur qubit, inclusiv o eroare YY desigur, dar nu corectează corect două sau mai multe erori YY. Pentru a fi clar, presupunem că folosim corecțiile pentru erorile XX și ZZ descrise anterior în secțiune. (Desigur, dacă am ști în avans că trebuie să ne îngrijorăm doar de erorile YY, am alege în mod natural corecțiile diferit — dar asta este trișarea modelului de zgomot, și am putea întotdeauna să schimbăm modelul selectând erori Pauli diferite pentru a face această nouă alegere a corecțiilor să eșueze ori de câte ori doi sau mai mulți qubiți sunt afectați de erori.)

Deci, codul protejează Q\mathsf{Q} atâta timp cât cel mult unul dintre cei nouă qubiți este afectat de o eroare, ceea ce se întâmplă cu probabilitatea

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

Altfel, cu probabilitatea

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

codul nu reușește să protejeze Q.\mathsf{Q}.

Mai precis, ceea ce înseamnă asta în acest context este că, până la o fază globală, o operație Pauli non-identitate va fi aplicată qubit-ului nostru Q\mathsf{Q} (ca qubit logic). Adică, dacă erorile XX și ZZ sunt detectate și corectate pentru codul Shor așa cum s-a descris anterior în lecție, vom rămâne cu codificarea unei stări care este echivalentă, până la o fază globală, cu codificarea unei operații Pauli non-identitate aplicate stării originale a lui Q.\mathsf{Q}. Un mod mai succint de a spune asta este că va fi apărut o eroare logică. Aceasta poate sau nu poate afecta starea originală a lui Q\mathsf{Q} — sau cu alte cuvinte qubit-ul logic pe care l-am codificat cu nouă qubiți fizici — dar, în scopul acestei analize, considerăm că acest eveniment înseamnă eșec.

Pe de altă parte, dacă nu am folosi codul, singurul nostru qubit ar suferi un destin similar (de a fi supus unei operații Pauli non-identitate) cu probabilitatea p.p. Codul ajută atunci când prima probabilitate este mai mică decât a doua:

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

Iată un grafic care ilustrează, pentru valori foarte mici ale lui p,p, că codul oferă un avantaj, cu punctul de echilibru apărând la aproximativ 0.0323.0.0323.

Graficul probabilității de eroare pentru erori Y independente folosind codul Shor

Dacă pp este mai mic decât acest punct de echilibru, atunci codul ajută; la punctul de echilibru probabilitățile sunt egale, deci ne irosim pur și simplu timpul și 8 qubiți dacă folosim codul; și dincolo de punctul de echilibru nu ar trebui în mod absolut să folosim acest cod deoarece crește șansa unei erori logice pe Q.\mathsf{Q}.

Trei și un sfert procente sau cam așa ceva poate nu pare un punct de echilibru foarte bun, mai ales comparativ cu 50%,50\%, care este punctul de echilibru analogic pentru codul de repetare de 3 biți pentru informația clasică. Această diferență se datorează, în mare parte, faptului că informația cuantică este mai fragilă și mai greu de protejat decât informația clasică. Dar, de asemenea — recunoscând că codul Shor cu 9 qubiți reprezintă o descoperire strălucită, ca primul cod cuantic de corecție a erorilor din lume — trebuie recunoscut că în termeni practici nu este de fapt un cod foarte bun.