Controlul propagării erorilor
Computația cuantică tolerantă la erori seamănă cu o cursă între erori și corecția erorilor. Dacă numărul de erori este suficient de mic, corecția erorilor le va corecta cu succes; dar dacă există prea multe erori, corecția erorilor va eșua.
Din acest motiv, trebuie acordată suficientă atenție modului în care sunt efectuate computațiile cuantice în implementările tolerante la erori ale circuitelor, pentru a controla propagarea erorilor. Adică, o eroare pe un qubit poate fi propagată potențial la mai mulți qubiți prin acțiunea Gate-urilor dintr-un Circuit cuantic, ceea ce poate face ca numărul de erori să crească dramatic. Aceasta este o preocupare primordială, deoarece dacă nu reușim să controlăm propagarea erorilor, eforturile noastre de corecție a erorilor vor fi rapid copleșite de erori. Dacă, pe de altă parte, suntem capabili să ținem sub control propagarea erorilor, atunci corecția erorilor are o șansă reală să țină pasul, permițând corectarea erorilor la o rată suficient de ridicată pentru a permite computației cuantice să funcționeze conform intenției.
Punctul de plecare pentru o discuție tehnică a acestei probleme este recunoașterea că Gate-urile cu doi qubiți (sau Gate-urile cu mai mulți qubiți, în general) pot propaga erori, chiar și atunci când funcționează perfect. De exemplu, consideră un Gate CNOT și presupune că o eroare apare pe qubitul de control chiar înainte ca Gate-ul CNOT să fie executat. Așa cum am observat deja în lecția „Corectarea erorilor cuantice", acest lucru este echivalent cu o eroare care apare pe ambii qubiți după ce este executat Gate-ul CNOT. Situația este similară și pentru o eroare care acționează asupra qubitul țintă în loc de cel de control, înainte ca Gate-ul CNOT să fie executat.
Aceasta este o propagare a erorilor, deoarece locația nefericită a unei erori sau înainte de Gate-ul CNOT o transformă efectiv în două erori după Gate-ul CNOT. Acest lucru se întâmplă chiar și atunci când Gate-ul CNOT este perfect, și nu trebuie să uităm că un anumit Gate CNOT poate fi el însuși zgomotos, ceea ce poate crea erori corelate pe doi qubiți.
Pe lângă aceasta, ne preocupă și faptul că Gate-urile cu doi qubiți ulterioare ar putea propaga aceste erori și mai departe, așa cum sugerează figura următoare.
Într-un anumit sens, nu putem evita niciodată acest lucru; atât timp cât folosim Gate-uri cu mai mulți qubiți, va exista un potențial pentru propagarea erorilor. Totuși, așa cum vom discuta în subsecțiunile ce urmează, se pot lua măsuri pentru a limita daunele cauzate de aceasta, permițând gestionarea erorilor propagate.
Implementări transversale ale Gate-urilor
Cea mai simplă metodă cunoscută pentru a atenua propagarea erorilor în circuitele cuantice tolerante la erori este implementarea Gate-urilor transversal, ceea ce înseamnă construirea de gadget-uri pentru acestea care au o formă simplă specifică. Mai concret, gadget-urile trebuie să fie un produs tensorial de operații (sau, cu alte cuvinte, un Circuit cuantic de adâncime unu), unde fiecare operație poate acționa doar pe o singură poziție de qubit în cadrul fiecărui bloc de cod pe care îl atinge. Aceasta este poate cel mai ușor de explicat prin câteva exemple.
Exemple de implementări transversale ale Gate-urilor
Consideră figura următoare, care sugerează o implementare transversală a unui Gate CNOT. (Această implementare particulară, în care Gate-urile CNOT sunt executate qubit cu qubit, funcționează doar pentru coduri CSS — dar funcționează, de fapt, pentru toate codurile CSS.)
Există două blocuri de cod în această figură, fiecare reprezentat ca fiind compus din cinci qubiți (deși ar putea fi mai mulți, așa cum a fost deja sugerat). Circuitul din dreapta are adâncimea unu, iar fiecare dintre Gate-urile CNOT acționează pe o singură poziție de qubit în cadrul fiecărui bloc: atât controlul cât și ținta pentru primul CNOT sunt qubitul de sus (adică qubitul 0, folosind convenția de numerotare Qiskit), atât controlul cât și ținta pentru al doilea CNOT sunt al doilea qubit de sus (adică qubitul 1), și tot așa. Prin urmare, acesta este un gadget transversal.
Pentru un al doilea exemplu — de fapt o clasă de exemple — consideră orice Gate Pauli. Gate-urile Pauli pot fi întotdeauna implementate transversal, pentru orice cod Stabilizer, prin construirea de gadget-uri compuse din operații Pauli. În particular, orice operație Pauli pe un qubit logic codificat printr-un cod Stabilizer poate fi implementată transversal prin alegerea unei operații Pauli corespunzătoare pe qubiții fizici folosiți pentru codificare. Acest lucru este consistent cu un fapt menționat în treacăt în lecția „Formalismul Stabilizer": cu excepția unei faze globale, operațiile Pauli care comută cu fiecare generator de Stabilizer al unui cod Stabilizer acționează ca operații Pauli pe qubitul sau qubiții codificați de acel cod.
Ca exemplu specific, consideră codul Shor cu qubiți, pentru care stările din baza standard ar putea fi codificate astfel.
Un Gate pe qubitul logic codificat de acest cod poate fi implementat transversal prin operația Pauli cu qubiți
în timp ce un Gate pe qubitul logic poate fi implementat transversal prin operația Pauli cu qubiți
Ambele aceste operații Pauli au greutatea care este greutatea minimă necesară. (Codul Shor cu qubiți are distanța deci orice operație Pauli non-identitate de greutate sau mai mică este detectată ca eroare.)
Și, pentru un al treilea exemplu, codul Steane cu qubiți (și într-adevăr orice cod de culoare) permite o implementare transversală a tuturor Gate-urilor Clifford. Am văzut deja cum sunt implementate transversal Gate-urile CNOT pentru orice cod CSS, deci rămâne să luăm în considerare Gate-urile și . Un Gate Hadamard aplicat tuturor celor qubiți ai codului Steane este echivalent cu aplicarea lui pe qubitul logic pe care îl codifică, în timp ce un Gate (în loc de un Gate ) aplicat tuturor celor qubiți este echivalent cu un Gate logic.
Propagarea erorilor pentru gadget-uri transversale
Acum că știm ce sunt implementările transversale ale Gate-urilor, să discutăm legătura lor cu propagarea erorilor.
Pentru o implementare transversală a unui Gate cu un singur qubit, avem pur și simplu un produs tensorial de Gate-uri cu un singur qubit în gadget-ul nostru, care acționează pe un bloc de cod de qubiți fizici pentru codul ales de corecție a erorilor cuantice. Deși oricare dintre aceste Gate-uri ar putea eșua și introduce o eroare, nu va exista nicio propagare a erorilor deoarece nu sunt implicate Gate-uri cu mai mulți qubiți. Imediat după aplicarea gadget-ului, se efectuează corecția erorilor; și dacă numărul de erori introduse de gadget (sau în timp ce gadget-ul este executat) este suficient de mic, erorile vor fi corectate. Deci, dacă rata erorilor introduse de Gate-uri defecte este suficient de mică, corecția erorilor are o șansă bună de succes.
Pentru o implementare transversală a unui Gate cu doi qubiți, pe de altă parte, există potențialul pentru propagarea erorilor — pur și simplu nu există nicio modalitate de a evita acest lucru, așa cum am observat deja. Punctul esențial, totuși, este că un gadget transversal nu poate cauza niciodată o propagare a erorilor în cadrul unui singur bloc de cod.
De exemplu, luând în considerare implementarea transversală a unui Gate CNOT pentru un cod CSS descrisă mai sus, o eroare ar putea apărea pe qubitul de sus al blocului de cod superior chiar înainte ca gadget-ul să fie executat, iar primul CNOT din cadrul gadget-ului va propaga acea eroare la qubitul de sus din blocul inferior. Totuși, cele două erori rezultante se află acum în blocuri de cod separate. Deci, presupunând că codul nostru poate corecta o eroare , pașii de corecție a erorilor care au loc după gadget vor corecta individual cele două erori — deoarece apare doar o singură eroare în fiecare bloc de cod. În contrast, dacă propagarea erorilor ar avea loc în interiorul aceluiași bloc de cod, ar putea transforma o eroare de greutate mică într-una de greutate mare pe care codul nu o poate gestiona.
Non-universalitatea Gate-urilor transversale
Pentru două coduri Stabilizer diferite, se poate întâmpla ca un anumit Gate să poată fi implementat transversal cu un cod, dar nu cu celălalt. De exemplu, deși nu este posibil să implementezi un Gate transversal folosind codul Steane cu qubiți, există alte coduri pentru care acest lucru este posibil.
Din nefericire, nu este niciodată posibil, pentru niciun cod de corecție a erorilor cuantice non-trivial, să implementezi transversal un set universal de Gate-uri. Acest fapt este cunoscut sub numele de teorema Eastin-Knill.
Demonstrația acestei teoreme nu va fi explicată aici. (Nu este o demonstrație complicată, dar necesită cunoștințe de bază despre grupuri Lie și algebre Lie, care nu se numără printre cerințele preliminare ale seriei.) Ideea de bază, totuși, poate fi transmisă în termeni intuitivi: Familiile infinite de operații transversale nu pot rămâne în spațiul de cod al unui cod non-trivial deoarece diferențele minuscule dintre operațiile transversale sunt bine aproximate de operații Pauli de greutate mică, pe care codul le detectează ca erori.
Pe scurt, gadget-urile transversale oferă o implementare simplă și inerent tolerantă la erori a Gate-urilor — dar pentru orice alegere rezonabilă a unui cod de corecție a erorilor cuantice, nu va exista niciodată un set universal de Gate-uri care să poată fi implementat în acest mod, ceea ce necesită utilizarea unor gadget-uri alternative.
Stări magice
Dat fiind că nu este posibil, pentru nicio alegere non-trivială a unui cod de corecție a erorilor cuantice, să implementezi transversal un set universal de Gate-uri cuantice, trebuie să luăm în considerare alte metode pentru a implementa Gate-uri în mod tolerant la erori. O metodă bine-cunoscută se bazează pe noțiunea de stări magice, care sunt stări cuantice ale qubiților ce permit implementări tolerante la erori ale anumitor Gate-uri.
Implementarea Gate-urilor cu stări magice
Să începem prin a lua în considerare Gate-urile și , care au descrierile matriciale următoare.
Prin definiție, este o operație Clifford, în timp ce nu este; nu este posibil să implementezi un Gate cu un Circuit compus din Gate-uri Clifford (Gate-uri , Gate-uri și Gate-uri CNOT).
Totuși, este posibil să implementezi un Gate (cu excepția unei faze globale) cu un Circuit compus din Gate-uri Clifford dacă, în plus, avem o copie a stării
și permitem măsurători în baza standard și Gate-uri controlate clasic. În particular, Circuitul următor arată o modalitate de a face acest lucru. Fenomenul ilustrat aici este un exemplu oarecum simplificat de teleportare cuantică a Gate-urilor.
Pentru a verifica că acest Circuit funcționează corect, putem calcula mai întâi acțiunea Gate-ului CNOT asupra intrării.
Măsurătoarea oferă prin urmare rezultatele și cu probabilitate egală. Dacă rezultatul este Gate-ul nu este executat, iar starea de ieșire este și dacă rezultatul este Gate-ul este executat, iar starea de ieșire este
Starea este numită stare magică în acest context, deși nu este unică în această privință: și alte stări sunt numite stări magice atunci când pot fi folosite în mod similar (pentru Gate-uri posibil diferite și folosind Circuite diferite). De exemplu, înlocuind starea cu starea și înlocuind Gate-ul din Circuitul de mai sus cu un Gate se implementează un Gate — ceea ce este potențial util pentru computația cuantică tolerantă la erori folosind un cod pentru care Gate-urile nu pot fi implementate transversal.
Gadget-uri tolerante la erori din stări magice
S-ar putea să nu fie clar că utilizarea stărilor magice pentru implementarea Gate-urilor este utilă pentru toleranța la erori. Pentru implementarea Gate-ului descrisă mai sus, de exemplu, se pare că tot avem nevoie să aplicăm un Gate pe o stare pentru a obține o stare magică, pe care o folosim apoi pentru a implementa un Gate . Deci care este avantajul utilizării acestei abordări pentru toleranța la erori?
Iată trei puncte cheie care oferă un răspuns la această întrebare.
-
Crearea stărilor magice nu necesită aplicarea Gate-ului pe care încercăm să îl implementăm pe o anumită stare. De exemplu, aplicarea unui Gate pe o stare nu este singura modalitate de a obține o stare .
-
Crearea stărilor magice poate fi realizată separat de computația în care sunt utilizate. Aceasta înseamnă că erorile care apar în procesul de creare a stărilor magice nu se vor propaga la computația propriu-zisă care este efectuată.
-
Dacă Gate-urile individuale din Circuitul care implementează un Gate ales folosind o stare magică pot fi implementate tolerant la erori, și presupunem disponibilitatea stărilor magice, obținem o implementare tolerantă la erori a Gate-ului ales.
Pentru a simplifica discuția care urmează, să ne concentrăm pe Gate-urile în mod specific — ținând minte că metodologia poate fi extinsă la alte Gate-uri. O implementare tolerantă la erori a unui Gate folosind stări magice are forma sugerată de figura următoare.
Qubiții din Circuitul original cu Gate-ul corespund qubiților logici din această diagramă, care sunt codificați de orice cod pe care îl folosim pentru toleranța la erori. Intrările și ieșirile din diagramă trebuie prin urmare înțelese ca codificări ale acestor stări. Aceasta înseamnă, în particular, că de fapt nu avem nevoie doar de stări magice — avem nevoie de stări magice codificate. Gate-urile din Circuitul original cu Gate-ul sunt înlocuite aici de gadget-uri, pe care le presupunem tolerante la erori.
Această figură particulară sugerează astfel că avem deja gadget-uri tolerante la erori pentru Gate-uri CNOT și Gate-uri . Pentru un cod de culoare, aceste gadget-uri ar putea fi transversale; pentru un cod de suprafață (sau orice alt cod CSS), CNOT-ul poate fi executat transversal, în timp ce gadget-ul pentru Gate-ul ar putea fi el însuși implementat folosind stări magice, așa cum a fost sugerat anterior că este posibil. (Figura sugerează, de asemenea, că avem un gadget tolerant la erori pentru efectuarea unei măsurători în baza standard, pe care l-am ignorat până acum. Aceasta ar putea fi de fapt o provocare pentru unele coduri selectate să o facă astfel, dar pentru un cod CSS este o chestiune de a măsura fiecare qubit fizic urmată de post-procesare clasică.)
Implementarea este prin urmare tolerantă la erori, presupunând că avem o codificare a unei stări magice