IBM Quantum Composer
Ce este?
IBM Quantum® Composer este un instrument grafic de programare cuantică care îți permite să tragi și să plasezi operații pentru a construi circuite cuantice și a le rula pe hardware cuantic.
Ce poate face?
Vizualizează stările qubit-urilor
Vezi cum modificările aduse circuitului tău afectează starea qubit-urilor, afișată ca o sferă-q interactivă sau ca histograme ce arată probabilitățile de măsurare sau simulările vectorului de stare.
Rulează pe hardware cuantic
Rulează circuitele tale pe hardware cuantic real pentru a înțelege efectele zgomotului dispozitivului.
Generează cod automat
În loc să scrii cod de mână, generează automat cod OpenQASM sau Python care se comportă la fel ca circuitul creat cu Composer.
Tur al interfeței
IBM Quantum Composer dispune de un set personalizabil de instrumente care îți permit să construiești, să vizualizezi și să rulezi circuite cuantice pe unități de procesare cuantică (QPU). Folosește meniul „More options" din fiecare fereastră pentru a accesa instrumente și acțiuni suplimentare.
-
Catalogul de operații - Acestea sunt blocurile de construcție ale circuitelor cuantice. Trage și plasează aceste gate-uri și alte operații în editorul grafic de circuite. Diferite tipuri de gate-uri sunt grupate după culoare. De exemplu, gate-urile clasice sunt albastru închis, gate-urile de fază sunt albastru deschis, iar operațiile non-unitare sunt gri.
Pentru a afla mai multe despre gate-urile și operațiile disponibile, fă clic dreapta pe o operație și selectează Info pentru a-i citi definiția.
-
Editorul de cod - Folosește meniul View pentru a deschide sau a închide editorul de cod, care îți permite să vizualizezi codul OpenQASM sau Qiskit al circuitului. Poți edita codul OpenQASM; codul Qiskit este doar pentru citire.
-
Editorul grafic de circuite - Aici construiești un circuit. Trage gate-uri și alte operații pe „firele" orizontale ale qubit-urilor care alcătuiesc registrul tău cuantic.
Pentru a elimina un gate de pe un fir, selectează gate-ul și dă clic pe pictograma coșului de gunoi.
Pentru a edita parametrii și setările gate-urilor care acceptă editare, selectează gate-ul în editorul grafic și dă clic pe Edit.
-
Bara de instrumente - Accesează instrumente utilizate frecvent pentru a anula și a reface acțiuni, a schimba alinierea gate-urilor și a comuta la modul de inspecție. În modul de inspecție, vezi o vizualizare pas cu pas a stărilor qubit-urilor pe măsură ce calculul circuitului tău evoluează. Pentru mai multe detalii, vezi Inspectează-ți circuitul pas cu pas.
-
Discurile de fază - Faza vectorului de stare al qubit-ului în planul complex este dată de linia care se extinde din centrul diagramei până la marginea discului gri (care se rotește în sens invers acelor de ceasornic față de punctul central).
Folosește meniul View pentru a afișa sau a ascunde discurile de fază.
-
Vizualizări - Vizualizările caracterizează circuitul tău pe măsură ce îl construiești. Ele utilizează un simulator al vectorului de stare cu o singură execuție, care diferă de QPU specificat în setările „Run circuit". Reține că vizualizările ignoră orice operații de măsurare pe care le adaugi. Autentifică-te și dă clic pe Run circuit pentru a obține rezultate de la Backend-ul specificat.
Află mai multe în secțiunea Vizualizări.
Construiește, editează și inspectează circuite cuantice
Dacă vrei să continui să lucrezi cu un circuit ulterior, asigură-te că descarci fișierul circuitului și îl stochezi local înainte de a ieși din Session-ul curent al Composer-ului. Folosește linkul „Save file" din colțul din dreapta sus sau mergi la meniul File și alege „Save file". Când ești gata să lucrezi din nou cu circuitul, mergi la meniul File și alege „Upload .qasm file", apoi navighează la fișierul circuitului de pe unitatea ta locală și dă clic pe Open.
1. Deschide IBM Quantum Composer
- (Opțional) Dacă nu ești autentificat în IBM Quantum, selectează Sign in în colțul din dreapta sus. Apoi, poți fie să te autentifici, fie să creezi un cont IBM Cloud.
Dacă nu te autentifici, vizualizările afișează automat rezultate simulate pentru până la patru qubit-uri. Dacă vrei să rulezi circuitul pe un calculator cuantic sau să vizualizezi un circuit cu mai mult de patru qubit-uri, trebuie să te autentifici.
-
Deschide IBM Quantum Composer dând clic pe linkul din navigarea paginii Learning. Spațiul de lucru afișează un circuit gol fără titlu. Poți fie să creezi un circuit nou, fie să încarci un fișier .qasm pentru a continua lucrul cu un circuit pe care l-ai creat deja.
-
Denumește circuitul dând clic pe textul Untitled circuit și introducând un nume pentru circuit. Dă clic pe bifa pentru a salva numele.
-
(Opțional) Personalizează spațiul de lucru:
- Folosește meniul View pentru a schimba tema implicită cu o temă monocromă. Poți selecta și ce panouri să includă spațiul tău de lucru, apoi folosește meniul din colțul din dreapta al oricărui panou pentru a accesa opțiuni de personalizare suplimentară. Opțiunile de afișare sau ascundere a discurilor de fază, de alegere a alinierii qubit-urilor în circuit și de resetare a spațiului de lucru la setările implicite se află în meniul View.
- Comută între temele de spațiu de lucru întunecat și luminos din colțul din dreapta jos al subsolului.
Pentru a construi un circuit, poți fie să tragi și să plasezi operații, fie să introduci cod OpenQASM în editorul de cod.
2. Construiește-ți circuitul prin drag-and-drop
Catalogul de operații
Trage și plasează operații din catalogul de operații pe registrele cuantice și clasice. Dă clic pe pictograma de căutare și introdu un termen în bara de căutare pentru a găsi rapid o operație.
Restrânge și extinde catalogul de operații dând clic pe pictograma din colțul din dreapta sus al panoului de operații. Dă clic pe pictograma de lângă ea pentru a comuta între vizualizarea grilă și cea listă a catalogului.
Fă clic dreapta pe pictograma unei operații și selectează Info pentru a vedea definiția operației, împreună cu referința sa QASM.
Pentru a anula sau a reface, folosește săgețile curbe din bara de instrumente.
Aliniere
Alege alinierea Freeform pentru a plasa operații oriunde pe circuit. Pentru o vizualizare mai compactă a circuitului, alege alinierea Left. Pentru a vedea ordinea în care operațiile vor fi executate, alege alinierea Layers, care aplică alinierea la stânga și adaugă delimitatori de coloane ce indică ordinea de execuție, de la stânga la dreapta și de sus în jos.
Odată ce operațiile sunt plasate pe circuit, poți continua să le tragi și să le plasezi în poziții noi.
Copiere și lipire
Dă clic pe o operație și folosește pictogramele din meniul contextual pentru a o copia și lipi.
Selectează mai multe operații
Poți selecta mai multe operații pentru a le copia și lipi, a le trage într-o locație nouă sau a le grupa într-o operație unitară personalizată care apare în catalogul de operații și funcționează ca un singur Gate.
Pentru a selecta mai mult de o operație, plasează cursorul chiar în afara uneia dintre operații, apoi dă clic și trage peste zonă pentru a selecta. Dă clic cu tasta Shift apăsată pe operații individuale pentru a le selecta sau deselecta. O linie punctată conturează setul de operații pe care le selectezi, iar fiecare operație care face efectiv parte din selecție este conturată în albastru.
De exemplu, în imaginea de mai jos, gate-ul Hadamard de pe q1 și gate-ul CX sunt selectate. Gate-ul Hadamard de pe q0 nu este selectat.
Selectează Copy din meniul contextual pentru a copia grupul.
Pentru a lipi grupul de operații, fă clic dreapta în circuit și selectează Paste.
Construiește o operație personalizată folosind funcția de grupare
Pentru a grupa mai multe operații și a le salva ca operație personalizată, selectează mai întâi operațiile conform descrierii de mai sus, apoi selectează Group din meniul contextual. Vei fi solicitat să denumești operația personalizată sau poți accepta numele implicit. Dă clic pe OK, iar operația personalizată va fi reprezentată printr-o singură casetă, atât în circuit, cât și în catalogul de operații.
Acum poți trage și plasa noua operație în tot circuitul. Reține că operația este salvată pentru acest circuit, dar nu apare în catalogul de operații pentru alte circuite.
Poți construi o operație personalizată și direct în editorul de cod OpenQASM; vezi Creează o operație personalizată în OpenQASM pentru mai multe informații.
Dezgrupează o operație personalizată sau predefinită
Pentru a dezgrupa gate-urile dintr-o operație personalizată sau predefinită, dă clic pe operație în Composer și selectează Ungroup din meniul contextual. Acum poți muta operațiile separate individual. Când dezgrupezi o operație, fiecare element din fostul grup se execută independent, ceea ce poate înseamnă că se execută într-o ordine diferită față de când erau grupate.
Extinde definiția unei operații
Pentru a vizualiza operațiile care constituie o operație personalizată sau predefinită fără a le dezgrupa, dă clic pe Expand definition din meniul contextual pentru a vedea gate-urile definitorii. Dă clic din nou pe pictogramă pentru a restrânge definiția.
Redenumește sau șterge o operație personalizată
Pentru a redenumi sau șterge o operație personalizată, fă clic dreapta pe operație în catalogul de operații și selectează Rename sau Delete. Ștergerea unei operații personalizate din catalogul de operații șterge și toate instanțele sale din circuit.
Ștergerea unei operații personalizate din circuit în sine nu o șterge din catalogul de operații; poți șterge o operație personalizată din catalog doar folosind clic dreapta și selectând Delete.
Adaugă sau elimină registre
Pentru a adăuga sau elimina registre cuantice sau clasice, dă clic pe Edit → Manage registers. Poți crește sau micșora numărul de qubit-uri sau biți din circuit și redenumi registrele. Dă clic pe Ok pentru a aplica modificările. Poți, de asemenea, să dai clic direct pe numele registrului (de ex., q[0]) și să folosești opțiunile din meniul contextual pentru a adăuga sau șterge rapid registre sau qubit-uri.
Adaugă un condițional
Pentru a adăuga un condițional unui gate, trage operația if pe gate și setează parametrii în panoul Edit operation care se deschide automat. Poți, de asemenea, să dai dublu-clic pe un gate pentru a accesa panoul Edit operation și a seta parametrii condiționalului în acest mod.
Adaugă un modificator de control
Un modificator de control produce un gate a cărui operație originală depinde acum de starea qubit-ului de control. Pentru mai multe detalii, fă clic dreapta pe simbolul modificatorului de control din catalogul de operații, apoi dă clic pe Info.
Trage modificatorul de control pe un gate din circuit pentru a-i adăuga un control. Un punct apare pe qubit-ul de control, iar o linie îl conectează la qubit-ul țintă. Pentru a edita qubit-ul de control sau cel țintă, dă clic pe gate și selectează pictograma Edit operation (sau dă dublu-clic pe gate) pentru a deschide panoul Edit operation, apoi specifică-ți parametrii. Din panoul Edit operation, poți, de asemenea, elimina un control de pe un qubit dând clic pe x de lângă numele qubit-ului.
Vizualizează cu discuri de fază de-a lungul circuitului
Pentru a vizualiza starea tuturor qubit-urilor la orice punct din circuit, trage pictograma discului de fază din catalogul de operații și plaseaz-o oriunde în circuit. Se adaugă o coloană de operații de barieră și o coloană de discuri de fază (câte o operație de barieră și un disc de fază per qubit). Trece cu cursorul peste fiecare disc de fază pentru a citi starea qubit-ului la acel punct al circuitului. Reține că adăugarea discurilor de fază nu modifică circuitul; ele sunt doar un instrument de vizualizare.
Citește mai multe despre vizualizarea cu disc de fază aici.
Exportă o imagine a circuitului
Pentru a exporta o imagine a circuitului, selectează File → Export circuit image. Se deschide fereastra Export options, unde poți alege o temă (light, dark, white on black sau black on white), un format (.svg sau .png) și dacă dorești să aplici o împachetare a liniilor. După ce ai ales opțiunile, dă clic pe Export.
3. Construiește-ți circuitul cu cod OpenQASM
IBM Quantum Composer acceptă în prezent OpenQASM 2.0.
- Pentru a deschide editorul de cod, fă clic pe View → Panels → Code Editor.
- Consultă glosarul operațiunilor Composer pentru referințe OpenQASM la Gate-uri și alte operațiuni.
- Îți poți defini propriile operațiuni personalizate; vezi Creează o operațiune personalizată în OpenQASM.
- Pentru mai multe informații despre utilizarea limbajului OpenQASM, inclusiv exemple de linii de cod, consultă ghidul Introducere în OpenQASM sau citește articolul de cercetare original, Open Quantum Assembly Language. Tabelul instrucțiunilor limbajului OpenQASM din articol este reprodus mai jos. Gramatica OpenQASM se găsește în Anexa A a articolului.
| Instrucțiune | Descriere | Exemplu |
|---|---|---|
OPENQASM 2.0; | Marchează un fișier în format OpenQASM (vezi [a]) | OPENQASM 2.0; |
qreg name[size]; | Declară un registru cu nume de Qubit-uri | qreg q[5]; |
creg name[size]; | Declară un registru cu nume de biți | creg c[5]; |
include "filename"; | Deschide și parsează un alt fișier sursă | include "qelib1.inc"; |
gate name(params) qargs | Declară un Gate unitar | (vezi textul articolului) |
opaque name(params) qargs; | Declară un Gate opac | (vezi textul articolului) |
// comment text | Comentează o linie de text | // oops! |
U(theta,phi,lambda) qubit|qreg; | Aplică Gate-uri integrate pentru un singur Qubit (vezi [b]) | U(pi/2,2*pi/3,0) q[0]; |
CX qubit|qreg,qubit|qreg; | Aplică Gate-uri CNOT integrate | CX q[0],q[1]; |
measure qubit|qreg -> bit|creg; | Efectuează măsurători în baza | measure q -> c; |
reset qubit|qreg; | Pregătește Qubit-ul (Qubit-urile) în starea | reset q[0]; |
gatename(params) qargs; | Aplică un Gate unitar definit de utilizator | crz(pi/2) q[1],q[0]; |
if(creg==int) qop; | Aplică condiționat o operațiune cuantică | if(c==5) CX q[0],q[1]; |
barrier qargs; | Împiedică transformările peste această linie sursă | barrier q[0],q[1]; |
[a] Aceasta trebuie să apară ca prima linie care nu este comentariu din fișier.
[b] Parametrii theta, phi și lambda sunt dați de expresii parametrice; pentru mai multe informații, vezi pagina 5 a articolului și Anexa A.
Create a custom operation in OpenQASM
Poți defini operațiuni unitare noi în editorul de cod (vezi figura de mai jos pentru un exemplu). Operațiunile sunt aplicate folosind instrucțiunea name(params) qargs;, la fel ca operațiunile integrate. Parantezele sunt opționale dacă nu există parametri.
Pentru a defini o operațiune personalizată, introdu-o în editorul de cod OpenQASM folosind acest format: gatename(params) qargs;. Dacă faci clic pe +Add în lista de operațiuni, vei fi solicitat să introduci un nume pentru operațiunea ta personalizată, pe care o poți construi apoi în editorul de cod.
Odată ce ai definit operațiunea personalizată, trage-o în editorul grafic și folosește pictograma de editare pentru a ajusta parametrii cu precizie.
| Exemplu de operațiune personalizată | |
|---|---|
| Gate-urile de inclus în operațiunea personalizată: | |
| Codul pentru noua operațiune: | |
| Noua operațiune în editorul grafic: |
4. Inspectează-ți circuitul, pas cu pas
Modul Inspect demistifică funcționarea internă a circuitelor pe care le creezi. Parcurge o simulare a circuitului tău strat cu strat, astfel încât să poți vedea starea Qubit-urilor pe măsură ce calculul evoluează.
-
În meniul View, selectează panourile pentru vizualizările pe care vrei să le folosești.
-
Fă clic pe butonul Inspect din bara de instrumente. Rețineți că, odată ce modul Inspect este activat, nu mai poți adăuga operațiuni suplimentare până când acesta nu este dezactivat.
-
Dacă ai construit circuitul cu alinierea Freeform activată, rețineți că modul Inspect activează automat alinierea Left.
-
Pentru a parcurge pas cu pas vizualizările componentelor circuitului tău, folosește butoanele de avans și de derulare înapoi.
-
Pentru a inspecta doar unele operațiuni, fă clic pe operațiunile pe care vrei să le inspectezi; deasupra fiecăreia va apărea o suprapunere colorată care indică faptul că vor fi incluse când rulezi în modul Inspect. Pentru a deselecta o operațiune, fă din nou clic pe ea, iar suprapunerea dispare.
-
Pentru a afla mai multe despre interpretarea vizualizărilor, consultă secțiunea Visualizations.
-
Pentru a ieși din modul Inspect și a reveni la editarea circuitului, fă clic pe butonul Inspect din bara de instrumente.
Simulatorul creează aleatorism generând rezultate pe baza unui seed. Seed-ul este valoarea inițială introdusă în algoritmul care generează numere pseudoaleatoare. Poți vedea numărul seed selectând „Visualizations seed" din meniul Edit. De asemenea, poți seta singur seed-ul schimbând valoarea din câmpul corespunzător.
Rulează circuite și vizualizează rezultatele
Urmează pașii de mai jos pentru a rula circuite cuantice pe QPU-uri și a vizualiza rezultatele.
Alege setările jobului tău
Fă clic pe Run circuit în colțul din dreapta sus. În fereastra care se deschide, selectează un QPU disponibil. Poți alege, de asemenea, o instanță, care este asociată cu un plan (cum ar fi planurile Open, Flex sau Premium). Instanța aleasă influențează QPU-urile disponibile. Fă clic pe linkul „View details" din tabelul QPU-urilor pentru a vedea mai multe informații despre fiecare QPU.
În continuare, poți seta numărul de shots (execuții) ale circuitului tău pe care le va efectua backend-ul.
Opțional, poți numi jobul și adăuga etichete în acest panou. Aceasta nu va schimba numele circuitului. O etichetă „Composer" prepopulată facilitează filtrarea tabelului Workloads după joburile Composer. Poți elimina această etichetă.
Când rulezi un circuit, acesta este trimis automat către QPU-ul cel mai puțin ocupat, dacă nu specifici un QPU în setările Run. Dacă rulezi din nou același circuit, fereastra de selectare a QPU-ului va reveni implicit la alegerea anterioară.
Fă clic pe „Run on (QPU name)"
Poți urmări progresul jobului făcând clic pe butonul „View jobs" din colțul din dreapta sus, care va deschide pagina Workloads în IBM Quantum Platform.
Vizualizează rezultatele
Odată ce jobul tău se finalizează, detaliile sunt actualizate în tabelul Workloads din IBM Quantum Platform.
Pagina Jobs results afișează detaliile rulării, diagramele circuitului original și ale circuitului transpilat, o histogramă a rezultatelor, precum și filele OpenQASM și Qiskit pentru a vizualiza atât circuitele originale, cât și cele transpilate în OpenQASM sau Qiskit.
Poți descărca circuitele și histograma făcând clic pe meniu în colțul din dreapta sus al fiecărei diagrame, apoi selectând un format pentru descărcare (PNG, PDF sau SVG; în plus, poți exporta histograma ca fișier CSV). Poți deschide circuitele OpenQASM direct în Composer.
Vizualizări
Vizualizările live din IBM Quantum Composer îți arată diferite perspective asupra modului în care circuitele cuantice afectează starea unei colecții de qubiți. Fiecare tip de vizualizare live este explicat în detaliu mai jos.
Vizualizările live provin dintr-un simulator statevector cu un singur shot, care diferă de QPU-ul specificat în setările Run, ce poate efectua mai multe shots. Simulatorul creează aleatoriu prin generarea de rezultate pe baza unui seed. Seed-ul este valoarea inițială introdusă în algoritmul care generează numere pseudoaleatoare. Poți vedea numărul seed selectând „Visualizations seed" din meniul Edit. De asemenea, poți seta seed-ul tu însuți modificând valoarea din câmp.
Vizualizează vizualizările
Vizualizările live sunt afișate în ferestre la baza spațiului de lucru Composer (cu excepția discului de fază, care apare la capătul firului fiecărui qubit). Poți alege orice combinație de vizualizări statevector, probabilități și q-sphere să apară în partea de jos a spațiului de lucru. Selectează sau deselectează vizualizările din meniul View.
Descarcă vizualizările
Descarcă una dintre vizualizările din partea de jos a spațiului de lucru Composer făcând clic pe meniul „More options" din fereastra de vizualizare. Poți descărca vizualizările ca SVG, PNG sau CSV al datelor de bază. De asemenea, poți descărca imaginile de vizualizare ale probabilităților de măsurare și ale histogramelor statevector ca PDF.
Discul de fază
O stare a unui singur qubit poate fi reprezentată astfel:
unde este probabilitatea ca qubitul să fie în starea , iar este faza cuantică. este puternic analogă cu un bit probabilistic clasic. Pentru , qubitul se află în starea , pentru qubitul se află în starea , iar pentru qubitul este un amestec 50/50. Numim aceasta o suprapunere, deoarece, spre deosebire de biții clasici, acest amestec poate avea o fază cuantică. Discul de fază vizualizează această stare.
Discul de fază de la capătul fiecărui qubit din IBM Quantum Composer oferă starea locală a fiecărui qubit la finalul calculului. Componentele discului de fază sunt descrise mai jos.
Probabilitatea ca qubitul să fie în starea
Probabilitatea ca qubitul să fie în starea este reprezentată de umplutura albastră a discului.
Faza cuantică
Faza cuantică a stării qubitului este dată de linia care se extinde de la centrul diagramei până la marginea discului gri (care se rotește în sens invers acelor de ceasornic în jurul punctului central).
Exemplu: discuri de fază pentru doi qubiți diferiți

Două exemple de vizualizare a discului de fază. Primul exemplu este o stare , iar al doilea arată starea cu o fază relativă nenulă.
Conexiunea cu sfera Bloch
Discul de fază, care conține toate informațiile din sfera Bloch, este o reprezentare bidimensională a unui qubit. Pentru a converti la reprezentarea sferei Bloch: , și .
Stări cu N qubiți: maximum 15 qubiți
O stare cuantică cu N qubiți are forma:
unde este probabilitatea ca qubiții să se afle în starea cu faza cuantică față de starea . este probabilitatea ca qubiții să nu se afle în starea fundamentală . Aici este simplu de observat că pentru o stare cuantică cu N qubiți există probabilități și faze. Discul de fază nu reușește să reprezinte această stare, deoarece discurile de fază cu N qubiți ar conține doar probabilități și faze; aceasta se datorează faptului că majoritatea stărilor sunt intricate și nu pot fi separate în stări cuantice independente de un singur qubit. Pentru a reprezenta că informația completă nu este conținută în această vizualizare, introducem puritatea redusă ca o componentă a discului de fază.
Puritatea redusă a stării qubitului
Raza inelului negru reprezintă puritatea redusă a stării qubitului, care pentru qubitul dintr-o stare cu qubiți este dată de . Puritatea redusă pentru un singur qubit se află în intervalul ; o valoare egală cu unu indică faptul că qubitul nu este intricat cu nicio altă parte. În contrast, o puritate redusă de arată că qubitul se află în starea complet mixtă și are un anumit nivel de intricare cu cei qubiți rămași și, posibil, chiar cu mediul.
Vizualizarea probabilităților
Limită de 8 qubiți
Această vizualizare reprezintă probabilitățile stării cuantice sub forma unui grafic cu bare. Axa orizontală etichetează stările din baza computațională. Axa verticală măsoară probabilitățile în procente. În această vizualizare, fazele cuantice nu sunt reprezentate și, prin urmare, reprezintă o reprezentare incompletă. Cu toate acestea, este utilă pentru a prezice rezultatele dacă fiecare qubit este măsurat și valoarea este stocată în propriul bit clasic.
Consideră următorul circuit cuantic și vizualizarea sa a probabilităților:
Circuitul plasează cei doi qubiți în starea Stările din baza computațională sunt și Probabilitățile pentru fiecare dintre stările computaționale sunt 1/4.
Vizualizarea Q-sphere
Limită de 5 qubiți
Q-sphere-ul reprezintă starea unui sistem format din unul sau mai mulți qubiți, asociind fiecare stare din baza computațională cu un punct de pe suprafața unei sfere. Un nod este vizibil în fiecare punct. Raza fiecărui nod este proporțională cu probabilitatea () stării sale de bază, în timp ce culoarea nodului indică faza cuantică ().
Nodurile sunt dispuse pe q-sphere astfel încât starea de bază cu toți zeroii (de ex., ) se află la polul nord al acestuia, iar starea de bază cu toți unii (de ex., ) se află la polul sud. Stările de bază cu același număr de zerouri (sau unuri) se află pe o latitudine comună a q-sphere-ului (de ex., ). Începând de la polul nord al q-sphere-ului și avansând spre sud, fiecare latitudine succesivă conține stări de bază cu un număr mai mare de unuri; latitudinea unei stări de bază este determinată de distanța Hamming față de starea zero. Q-sphere-ul conține informații complete despre starea cuantică într-o reprezentare compactă.
Consideră următorul circuit cuantic și q-sphere-ul său, care reprezintă starea creată de circuit:
Poți selecta, ține apăsat și trage pentru a roti q-sphere-ul. Pentru a reveni la orientarea implicită a q-sphere-ului, selectează butonul cu săgeată de revenire din dreapta sus a q-sphere-ului.
Este important să subliniem că q-sphere-ul nu este același lucru cu sfera Bloch, chiar și pentru un singur qubit. Într-adevăr, la fel ca discul de fază, sfera Bloch oferă o perspectivă locală asupra stării cuantice, unde fiecare qubit este privit independent. Atunci când vrei să înțelegi cum se comportă registrele de qubiți (stări cu mai mulți qubiți) la aplicarea circuitelor cuantice, este mai instructiv să adopți o perspectivă globală și să privești starea cuantică în ansamblul său. Q-sphere-ul oferă o reprezentare vizuală a stării cuantice și, prin urmare, această perspectivă globală. Prin urmare, atunci când explorezi aplicații și algoritmi cuantici pe un număr mic de qubiți, q-sphere-ul ar trebui să fie metoda principală de vizualizare.
Vizualizarea statevector
Limită de 6 qubiți
Este obișnuit să numim amplitudinea cuantică. Această vizualizare reprezintă amplitudinile cuantice sub forma unui grafic cu bare. Axa orizontală etichetează stările din baza computațională. Axa verticală măsoară magnitudinea amplitudinilor () asociate cu fiecare stare din baza computațională. Culoarea fiecărei bare reprezintă faza cuantică ().
Consideră următorul circuit cuantic și vizualizarea sa statevector:
Circuitul plasează cei doi qubiți în starea . Stările din baza computațională sunt , , și . Magnitudinile amplitudinilor sunt , iar fazele cuantice față de starea fundamentală sunt pentru și , și pentru .
Glosar de operații Composer
Această pagină este un material de referință care definește diversele operații clasice și cuantice pe care le poți folosi pentru a manipula qubiți într-un circuit cuantic. Operațiile cuantice includ porți cuantice, precum poarta Hadamard, dar și operații care nu sunt porți cuantice, cum ar fi operația de măsurare.
Fiecare intrare de mai jos oferă detalii și referința OpenQASM pentru fiecare operație. Consultă subiectul despre Construiește-ți circuitul cu cod OpenQASM pentru mai multe informații.
Imaginea q-sphere din fiecare intrare de poartă de mai jos arată starea după ce poarta acționează asupra stării inițiale de superpoziție egală , unde este numărul de qubiți necesari pentru a suporta poarta. Consultă subiectul despre q-sphere pentru mai multe informații despre această vizualizare.
Poți defini o operație personalizată pentru a o folosi în IBM Quantum Composer. Pentru instrucțiuni, consultă subiectul Creează o operație personalizată în OpenQASM.
The gate colors are slightly different in the light and dark themes. The colors from the light theme are shown here.
Apasă pe o operație cuantică de mai jos pentru a-i vedea definiția.
Porți clasice
Poarta NOT
Poarta NOT, cunoscută și sub numele de poarta Pauli X, transformă starea în și invers. Poarta NOT este echivalentă cu RX pentru unghiul sau cu „HZH".
| Referință Composer | Referință OpenQASM | Q-sphere | Notă despre reprezentările q-sphere |
|---|---|---|---|
x q[0]; | Reprezentarea q-sphere arată starea după ce poarta acționează asupra stării inițiale de superpoziție egală unde este numărul de qubiți necesari pentru a suporta poarta. |
Poarta CNOT
Poarta controlled-NOT, cunoscută și sub numele de poarta controlled-x (CX), acționează asupra unei perechi de qubiți, unul jucând rolul de „control", iar celălalt de „țintă". Aplică un NOT asupra țintei ori de câte ori qubit-ul de control se află în starea . Dacă qubit-ul de control se află în superpoziție, această poartă creează entanglement.
Toate circuitele unitare pot fi descompuse în porți cu un singur qubit și porți CNOT. Deoarece poarta CNOT cu doi qubiți necesită mult mai mult timp de execuție pe hardware real față de porțile cu un singur qubit, costul circuitului este uneori măsurat în numărul de porți CNOT.
| Referință Composer | Referință OpenQASM | Q-sphere | Notă despre reprezentările q-sphere |
|---|---|---|---|
cx q[0], q[1]; | Reprezentarea q-sphere arată starea după ce poarta acționează asupra stării inițiale de superpoziție egală unde este numărul de qubiți necesari pentru a suporta poarta. |
Poarta Toffoli
Poarta Toffoli, cunoscută și sub numele de poarta double controlled-NOT (CCX), are doi qubiți de control și o țintă. Aplică un NOT asupra țintei doar când ambii qubiți de control se află în starea .
Poarta Toffoli împreună cu poarta Hadamard formează un set universal de porți pentru calculul cuantic.
| Referință Composer | Referință OpenQASM | Q-sphere | Notă despre reprezentările q-sphere |
|---|---|---|---|
ccx q[0], q[1], q[2]; | ![]() | Reprezentarea q-sphere arată starea după ce poarta acționează asupra stării inițiale de superpoziție egală unde este numărul de qubiți necesari pentru a suporta poarta. |
Poarta SWAP
Poarta SWAP interschimbă stările a doi qubiți.
| Referință Composer | Referință OpenQASM | Q-sphere | Notă despre reprezentările q-sphere |
|---|---|---|---|
swap q[0], q[1]; | Reprezentarea q-sphere arată starea după ce poarta acționează asupra stării inițiale de superpoziție egală unde este numărul de qubiți necesari pentru a suporta poarta. |
Poarta identitate
Poarta identitate (numită uneori Id sau poarta I) este de fapt absența unei porți. Ea garantează că nu se aplică nimic unui qubit pe durata unei unități de timp de poartă.
| Referință Composer | Referință Qasm |
|---|---|
id q[0]; |
Porți de fază
Poarta T
Poarta T este echivalentă cu RZ pentru unghiul . Calculatoarele cuantice tolerante la erori vor compila toate programele cuantice până la nivelul porții T și inversului acesteia, precum și al porților Clifford.
| Referință Composer | Referință OpenQASM | Q-sphere | Notă despre reprezentările q-sphere |
|---|---|---|---|
t q[0]; | Reprezentarea q-sphere arată starea după ce poarta acționează asupra stării inițiale de superpoziție egală unde este numărul de qubiți necesari pentru a suporta poarta. |
Poarta S
Poarta S aplică o fază de stării . Este echivalentă cu RZ pentru unghiul . Rețineți că S=P().
| Referință Composer | Referință OpenQASM | Q-sphere | Notă despre reprezentările q-sphere |
|---|---|---|---|
s q[0]; | Reprezentarea q-sphere arată starea după ce poarta acționează asupra stării inițiale de superpoziție egală unde este numărul de qubiți necesari pentru a suporta poarta. |
Poarta Z
Poarta Pauli Z acționează ca identitate asupra stării și înmulțește semnul stării cu -1. Prin urmare, inversează stările și . În baza +/-, joacă același rol ca poarta NOT în baza /.
| Referință Composer | Referință OpenQASM | Q-sphere | Notă despre reprezentările q-sphere |
|---|---|---|---|
z q[0]; | Reprezentarea q-sphere arată starea după ce poarta acționează asupra stării inițiale de superpoziție egală unde este numărul de qubiți necesari pentru a suporta poarta. |
Poarta
Cunoscută și sub numele de poarta Tdg sau T-dagger.
Inversul porții T.
| Referință Composer | Referință OpenQASM | Q-sphere | Notă despre reprezentările q-sphere |
|---|---|---|---|
tdg q[0]; | Reprezentarea q-sphere arată starea după ce poarta acționează asupra stării inițiale de superpoziție egală unde este numărul de qubiți necesari pentru a suporta poarta. |
Poarta
Cunoscută și sub numele de poarta Sdg sau S-dagger.
Inversul porții S.
| Referință Composer | Referință OpenQASM | Q-sphere | Notă despre reprezentările q-sphere |
|---|---|---|---|
sdg q[0]; | Reprezentarea q-sphere arată starea după ce poarta acționează asupra stării inițiale de superpoziție egală unde este numărul de qubiți necesari pentru a suporta poarta. |
Poarta de fază
Poarta de fază (numită anterior poarta U1) aplică o fază de stării . Pentru anumite valori ale lui , este echivalentă cu alte porți. De exemplu, P()=Z, P(/)=S și P()=T. La o fază globală de , este echivalentă cu RZ().
| Referință Composer | Referință OpenQASM | Q-sphere | Notă despre reprezentările q-sphere |
|---|---|---|---|
p(theta) q[0]; | Reprezentarea q-sphere arată starea după ce poarta acționează asupra stării inițiale de superpoziție egală unde este numărul de qubiți necesari pentru a suporta poarta. |
În IBM Quantum Composer, valoarea implicită pentru theta este .
Poarta RZ
Poarta RZ implementează . Pe sfera Bloch, această poartă corespunde rotirii stării qubitului în jurul axei z cu unghiul dat.
| Referință Composer | Referință OpenQASM | Q-sphere | Notă despre reprezentările q-sphere |
|---|---|---|---|
rz(angle) q[0]; | Reprezentarea q-sphere arată starea după ce poarta acționează asupra stării inițiale de superpoziție egală unde este numărul de qubiți necesari pentru a suporta poarta. |
În IBM Quantum Composer, valoarea implicită pentru angle este . Prin urmare, acesta este unghiul folosit în vizualizarea q-sphere.
Operatori non-unitari și modificatori
Operația de resetare
Operația de resetare returnează un qubit la starea , indiferent de starea sa înainte de aplicarea operației. Nu este o operație reversibilă.
| Referință Composer | Referință OpenQASM |
|---|---|
reset q[0]; |
Măsurătoare
Măsurătoarea în baza standard, cunoscută și ca baza z sau baza computațională. Poate fi folosită pentru a implementa orice tip de măsurătoare atunci când este combinată cu porți. Nu este o operație reversibilă.
| Referință Composer | Referință OpenQASM |
|---|---|
measure q[0]; |
Modificatorul de control
Un modificator de control produce o poartă a cărei operație originală este condiționată de starea qubitului de control. Când controlul se află în starea , qubit(urile) țintă suferă evoluția unitară specificată. În schimb, nicio operație nu este efectuată dacă controlul se află în starea . Dacă controlul se află într-o stare de superpozițe, atunci operația rezultată decurge din liniaritate.
Trage modificatorul de control pe o poartă pentru a-i adăuga un control. Vor apărea puncte deasupra și dedesubtul porții, pe firele de qubit care pot fi ținte de control; fă clic pe unul sau mai multe puncte pentru a atribui ținta unuia sau mai multor qubiți. Poți atribui și un control dând clic dreapta pe o poartă.
Pentru a elimina un control, dă clic dreapta pe poartă și selectează opțiunea de eliminare a controlului.
| Referință Composer | Referință OpenQASM |
|---|---|
c |
Operația barieră
Pentru a face programul tău cuantic mai eficient, compilatorul va încerca să combine porțile. Bariera este o instrucțiune dată compilatorului pentru a preveni aceste combinații. În plus, este utilă pentru vizualizări.
| Referință Composer | Referință OpenQASM |
|---|---|
barrier q; |
Poarta Hadamard
Poarta H
Poarta H, sau Hadamard, rotește stările și în și respectiv . Este utilă pentru crearea superpozițiilor. Dacă ai un set de porți universal pe un calculator clasic și adaugi poarta Hadamard, acesta devine un set de porți universal pe un calculator cuantic.
| Referință Composer | Referință OpenQASM | Q-sphere | Notă despre reprezentările q-sphere |
|---|---|---|---|
h q[0]; | Reprezentarea q-sphere arată starea după ce poarta acționează asupra stării inițiale de superpozițe egală unde este numărul de qubiți necesari pentru a susține poarta. |
Porți cuantice
Poarta
Cunoscută și ca poarta rădăcină pătrată a lui NOT.
Această poartă implementează rădăcina pătrată a lui X, . Aplicând această poartă de două ori consecutiv se obține poarta standard Pauli-X (poarta NOT). La fel ca poarta Hadamard, creează o stare de superpozițe egală dacă qubitului se află în starea , dar cu o fază relativă diferită. Pe unele dispozitive hardware, este o poartă nativă care poate fi implementată cu un puls sau X90.
| Referință Composer | Referință OpenQASM | Q-sphere | Notă despre reprezentările q-sphere |
|---|---|---|---|
sx q[0]; | Reprezentarea q-sphere arată starea după ce poarta acționează asupra stării inițiale de superpozițe egală unde este numărul de qubiți necesari pentru a susține poarta. |
Poarta
Cunoscută și ca poarta SXdg sau rădăcina pătrată a lui NOT-dagger.
Aceasta este inversul porții . Aplicând-o de două ori consecutiv se obține poarta Pauli-X (poarta NOT), deoarece poarta NOT este propriul său invers. La fel ca poarta , această poartă poate fi folosită pentru a crea o stare de superpozițe egală și este, de asemenea, implementată nativ pe unele dispozitive hardware folosind un puls X90.
| Referință Composer | Referință OpenQASM | Q-sphere | Notă despre reprezentările q-sphere |
|---|---|---|---|
sxdg q[0]; | Reprezentarea q-sphere arată starea după ce poarta acționează asupra stării inițiale de superpozițe egală unde este numărul de qubiți necesari pentru a susține poarta. |
Poarta Y
Poarta Pauli Y este echivalentă cu Ry pentru unghiul . Este echivalentă cu aplicarea lui X și Z, până la un factor de fază global.
| Referință Composer | Referință OpenQASM | Q-sphere | Notă despre reprezentările q-sphere |
|---|---|---|---|
y q[0]; | Reprezentarea q-sphere arată starea după ce poarta acționează asupra stării inițiale de superpozițe egală unde este numărul de qubiți necesari pentru a susține poarta. |
Poarta RX
Poarta RX implementează . Pe sfera Bloch, această poartă corespunde rotației stării qubitului în jurul axei x cu unghiul dat.
| Referință Composer | Referință OpenQASM | Q-sphere | Notă despre reprezentările q-sphere |
|---|---|---|---|
rx(angle) q[0]; | Reprezentarea q-sphere arată starea după ce poarta acționează asupra stării inițiale de superpozițe egală unde este numărul de qubiți necesari pentru a susține poarta. |
În IBM Quantum Composer, valoarea implicită pentru angle este . Prin urmare, acesta este unghiul folosit în vizualizarea q-sphere.
Poarta RY
Poarta RY implementează . Pe sfera Bloch, această poartă corespunde rotației stării qubitului în jurul axei y cu unghiul dat și nu introduce amplitudini complexe.
| Referință Composer | Referință OpenQASM | Q-sphere | Notă despre reprezentările q-sphere |
|---|---|---|---|
ry(angle) q[0]; | Reprezentarea q-sphere arată starea după ce poarta acționează asupra stării inițiale de superpozițe egală unde este numărul de qubiți necesari pentru a susține poarta. |
În IBM Quantum Composer, valoarea implicită pentru angle este . Prin urmare, acesta este unghiul folosit în vizualizarea q-sphere de mai jos.
Poarta RXX
Poarta RXX implementează . Poarta Mølmer–Sørensen, poarta nativă pe sistemele cu capcane ionice, poate fi exprimată ca o sumă de porți RXX.
| Referință Composer | Referință OpenQASM | Q-sphere | Notă despre reprezentările q-sphere |
|---|---|---|---|
rxx(angle) q[0], q[1]; | Reprezentarea q-sphere arată starea după ce poarta acționează asupra stării inițiale de superpozițe egală unde este numărul de qubiți necesari pentru a susține poarta. |
În IBM Quantum Composer, valoarea implicită pentru angle este .
Poarta RZZ
Poarta RZZ necesită un singur parametru: un unghi exprimat în radiani. Această poartă este simetrică; schimbând cei doi qubiți pe care acționează nu se modifică nimic.
| Referință Composer | Referință OpenQASM | Q-sphere | Notă despre reprezentările q-sphere |
|---|---|---|---|
rzz(angle) q[0], q[1]; | Reprezentarea q-sphere arată starea după ce poarta acționează asupra stării inițiale de superpozițe egală unde este numărul de qubiți necesari pentru a susține poarta. |
În IBM Quantum Composer, valoarea implicită pentru angle este .
Poarta U
(Anterior numită poarta U3) Cei trei parametri permit construirea oricărei porți cu un singur qubit. Are o durată de o unitate de timp de poartă.
| Referință Composer | Referință OpenQASM | Q-sphere | Notă despre reprezentările q-sphere |
|---|---|---|---|
u(theta, phi, lam) q[0]; | Reprezentarea q-sphere arată starea după ce poarta acționează asupra stării inițiale de superpozițe egală unde este numărul de qubiți necesari pentru a susține poarta. |
În IBM Quantum Composer, valoarea implicită pentru angle este .
Poarta RCCX
Poarta Toffoli simplificată, denumită și poarta Margolus.
Poarta Toffoli simplificată implementează poarta Toffoli până la faze relative. Această implementare necesită trei porți CX, care este numărul minim posibil, conform https://arxiv.org/abs/quant-ph/0312225. Rețineți că Toffoli simplificat nu este echivalent cu Toffoli, dar poate fi folosit în locurile unde poarta Toffoli este decomputată din nou.
| Referință Composer | Referință OpenQASM | Q-sphere | Notă despre reprezentările q-sphere |
|---|---|---|---|
rccx a, b, c; | Reprezentarea q-sphere arată starea după ce poarta acționează asupra stării inițiale de superpozițe egală unde este numărul de qubiți necesari pentru a susține poarta. |
Poarta RC3X
Poarta Toffoli simplificată cu 3 controale.
Poarta Toffoli simplificată implementează poarta Toffoli până la faze relative. Rețineți că Toffoli simplificat nu este echivalent cu Toffoli, dar poate fi folosit în locurile unde poarta Toffoli este decomputată din nou.
| Referință Composer | Referință OpenQASM | Q-sphere | Notă despre reprezentările q-sphere |
|---|---|---|---|
rc3x a, b, c, d; | ![]() | Reprezentarea q-sphere arată starea după ce poarta acționează asupra stării inițiale de superpozițe egală unde este numărul de qubiți necesari pentru a susține poarta. |

