ToolDingo

Simulator de calculator cuantic

Scrieți un mic circuit cuantic în JavaScript și simulați-l direct în browser pentru a vedea diagrama, probabilitățile și vectorul de stare. Sau descrieți un calcul de nivel înalt și urmăriți transformarea lui automată într-un circuit cuantic reversibil.

Model de zgomot

Calculatoarele cuantice reale nu funcționează perfect: qubiții sunt extrem de sensibili și pierd informație prin interacțiuni nedorite cu mediul, precum căldura, câmpurile electromagnetice sau qubiții vecini. Porțile nu sunt perfect precise, iar citirea finală poate fi și ea eronată. Simulatorul calculează implicit cazul ideal; aici puteți activa modele tipice de eroare și observa efectul lor direct în rezultate.

Setarea se aplică fiecărei simulări de pe pagină, atât programelor de nivel înalt, cât și circuitelor scrise manual.
%
Probabilitatea se aplică fiecărei porți și fiecărui qubit implicat sau fiecărui bit citit în modelul de citire. Alegeți o valoare potrivită scenariului pe care doriți să îl explorați.

Codul programului

Descrieți un calcul cu quantum.add, quantum.subtract, quantum.multiply, quantum.divide sau quantum.random. Ctrl+Enter pornește simularea. Documentația completă este disponibilă prin butonul „Documentație”.

Documentație

Descrieți un calcul în editor; din acesta va fi generat automat și simulat un circuit cuantic real. Maximum 4.000 de caractere. Ctrl+Enter Pornește simularea.

FormulăDescriereLimite
quantum.add({ a, b })Adăugați două numereRezultat de maximum 4 biți (0–15)
quantum.subtract({ a, b })Scăderea ≥ b, max. 4 biți
quantum.multiply({ a, b })ÎnmulțireFactori 0–7 (3 biți)
quantum.divide({ a, b })Împărțire (cât + rest)b ≥ 1; limită strictă: biți(a) + biți(b) + biți(a÷b) + 1 ≤ 10
quantum.random({ bits })Număr aleatoriu cuantic autentic1–10 biți

Alegeți un exemplu

Codul circuitului

Maximum 4.000 de caractere. Metode QuantumCircuit disponibile: x, y, z, h, s, sdg, t, tdg, rx, ry, rz, cnot, cz, ccnot (alias: toffoli), swap, measureAll și run. Ctrl+Enter pornește simularea.

Alegeți un exemplu

Bazele: Cum funcționează?

Schemă a unei instalații cuantice: un computer de control dirijează mai multe fascicule laser pe o masă optică spre un qubit aflat într-o cameră de vid.
De la computerul clasic de control prin lasere și optică până la qubitul fizic.

De la program la qubit fizic

Un computer cuantic real înseamnă mai mult decât un cip. Electronica clasică de control traduce circuitul în impulsuri precise. În exemplul ilustrat, laserele pentru răcire, repompare, controlul qubitului și citire modelează semnalele pe o masă optică și le direcționează spre o cameră de vid ecranată. Acolo modifică și măsoară starea qubiților, iar rezultatul revine la computerul clasic.

Qubitul și stările de bază

Un bit clasic este fie 0, fie 1. Un qubit poate exista suplimentar într-o suprapunere a celor două stări de bază |0⟩ și |1⟩. Pentru mai mulți qubiți, stările de bază se scriu ca șiruri de biți, de exemplu |10⟩ pentru 2 qubiți, unde q0 în acest simulator este întotdeauna cel mai semnificativ (stânga) bit.

Superpoziție

Un qubit în superpoziție conține simultan componente ale mai multor stări de bază. Aceste componente sunt descrise prin amplitudini complexe, iar pătratul modulului unei amplitudini dă probabilitatea de a obține starea corespunzătoare la măsurare.

Sfera Bloch

Starea unui singur qubit poate fi vizualizată ca o săgeată într-o sferă: polul nord reprezintă |0⟩Polul Sud |1⟩, iar toate punctele de pe ecuator reprezintă superpoziții cu ponderi egale. Faza determină direcția săgeții de-a lungul ecuatorului. Porțile de rotație rx, ry, și rz rotesc săgeata în jurul axei respective, iar porțile de fază precum S și T o rotesc în jurul axei Z. Pentru qubiți inseparabili, săgețile se scurtează spre centrul sferei: qubitul individual nu mai are o stare pură proprie, astfel încât inseparabilitatea devine vizibilă.

Măsurare și shots

measureAll() măsoară simultan toți qubiții și încheie circuitul. Deoarece o singură măsurare produce un singur rezultat aleatoriu, circuitul este măsurat conceptual de mai multe ori, conform valorii shots, prin run({ shots }), astfel încât distribuția rezultatelor să poată fi reprezentată ca histogramă. Probabilitățile exacte sunt calculate separat, direct din vectorul de stare, independent de variația aleatorie a măsurătorilor.

Poarta Hadamard

Poarta Hadamard h(q) ia un qubit dintr-o stare definită (|0⟩ sau |1⟩) într-o suprapunere la fel de ponderată a |0⟩ și |1⟩ deci aproximativ 50% / 50% atunci când sunt măsurate.

Porți de fază: S și T

Porțile s(q) și t(q) nu modifică probabilitățile de măsurare ale unui singur qubit; ele doar rotesc faza de |1⟩ a amplitudinii: S cu 90°, T cu 45°. Efectul devine vizibil în combinație cu superpoziția; între două porți Hadamard, faza determină cum se adună sau se anulează amplitudinile, adică interferența. Variantele inverse sdg(q) și tdg(q) rotesc faza în sens opus și anulează S, respectiv T. Regula este: două porți T echivalează cu S, iar două porți S cu Z.

CNOT și inseparabilitatea condiționată

Poarta CNOT cnot(control, target) inversează qubitul țintă exact atunci când qubitul de control este în starea |1⟩. Dacă qubitul de control a fost pus în superpoziție, poarta poate crea inseparabilitate: cei doi qubiți nu mai pot fi descriși independent, ca în starea Bell. Dacă qubitul de control este într-o stare de bază definită, CNOT produce doar o inversare condiționată a bitului, fără inseparabilitate. Așadar, nu fiecare CNOT creează automat inseparabilitate.

CZ: ruda simetrică a CNOT

Poarta CZ cz(a, b) inversează semnul amplitudinii exact atunci când ambii qubiți sunt în starea |1⟩. Spre deosebire de CNOT, nu există un qubit de control și unul țintă: poarta acționează simetric asupra ambilor qubiți, motiv pentru care este desenată ca două puncte conectate. CZ și CNOT pot fi transformate una în cealaltă: o poartă CNOT este echivalentă cu o CZ al cărei qubit țintă trece printr-o poartă Hadamard înainte și după. CZ este un element central al multor algoritmi, inclusiv căutarea Grover.

Starea GHZ: inseparabilitate în trei

Starea GHZ, numită după Greenberger, Horne și Zeilinger, extinde principiul stării Bell la trei qubiți. O poartă Hadamard și două porți CNOT îi fac inseparabili, astfel încât măsurarea produce numai |000⟩ sau |111⟩ și niciodată șiruri de biți mixte. Niciun qubit nu mai are o stare proprie; informația există numai în corelația comună.

Algoritmul Deutsch: cel mai mic avantaj cuantic

Algoritmul Deutsch răspunde printr-o singură evaluare a unui oracol necunoscut la o întrebare pentru care un calculator clasic are nevoie de două evaluări: funcția este constantă sau echilibrată? Intrarea trece prin oracol în superpoziție, iar interferența codifică fără ambiguitate răspunsul în qubitul de intrare. Principiul folosit, numit phase kickback, este fundamental pentru mulți algoritmi cuantici.

Căutarea Grover: amplificarea amplitudinii

Căutarea Grover găsește o intrare marcată într-un set nesortat cu mai puține interogări decât o metodă clasică. Un oracol marchează starea căutată prin inversarea fazei, aici cu o poartă CZ, iar operatorul de difuzie îi amplifică amplitudinea în detrimentul celorlalte. Pentru 2 qubiți, o singură iterație este suficientă pentru a măsura starea marcată cu probabilitate de 100%.

Adăugare reversibilă: de la quantum.add() la un circuit

Editorul de cod de mai sus traduce quantum.add({ a, b }) într-un circuit de porți X, CNOT și CCNOT (Toffoli) care reproduce adunarea clasică în mod reversibil: fiecare poartă poate fi anulată exact, deoarece nicio informație nu este eliminată. O poartă CCNOT (ccnot(c1, c2, target)) inversează qubitul țintă numai atunci când ambii qubiți de control sunt în starea |1⟩ ceea ce este suficient pentru a construi orice circuit clasic reversibil, inclusiv un sumator complet cu transport. Intrările A și B sunt inițializate ca stări de bază definite, fără superpoziție, folosind porți X. Deoarece circuitul trece numai prin stări definite, măsurarea finală produce un singur rezultat cu probabilitate de 100%: suma clasică corectă. De aceea quantum.add() produce un rezultat determinist în ciuda simulării cuantice, în loc de mai multe stări posibile cu probabilități sub 100%.

Scădere: plus în sens invers

Deoarece fiecare poartă a unui circuit cuantic este exact inversibilă, circuitul complet de adăugare poate fi executat înapoi – iar adunarea devine o scădere: quantum.subtract({ a, b }) folosește exact porțile sumatorului în ordine inversă și calculează astfel a − b. Acesta este principiul de bază al calculului reversibil: niciun pas nu distruge informație și fiecare pas poate fi anulat. Versiunea actuală necesită a ≥ b, astfel încât rezultatul să nu fie negativ.

Înmulțire: quantum.multiply()

Înmulțirea folosește aceleași elemente reversibile ca adunarea. După metoda clasică, factorul a este adunat în poziții deplasate, conform biților setați ai factorului b. Fiecare sumă parțială folosește același sumator reversibil, iar transportul trece în următorul bit al produsului. Registrul rezultatului crește odată cu produsul, astfel că factorii sunt limitați la 3 biți (0–7), pentru ca factorii, produsul și qubitul de transport să încapă în buget.

Împărțire: quantum.divide()

Împărțirea folosește, de asemenea, numai elemente reversibile: quantum.divide({ a, b }) efectuează împărțirea în scris prin scăderi reversibile și deplasate ale împărțitorului din registrul restului; rezultatul este câtul și Restul (a = quotient · b + remainder). Deoarece dividendul, divizorul, câtul și un qubit auxiliar de împrumut trebuie să încapă împreună în limita de 10 qubiți, împărțirea este operația cu cele mai stricte restricții: bits(a) + bits(b) + bits(a÷b) + 1 ≤ 10 trebuie respectată limita de biți, iar împărțitorul b trebuie să fie ≥ 1 (fără diviziune la zero). Dacă o intrare nu se potrivește bugetului, editorul o raportează în loc să calculeze.

Aleatorism adevărat: quantum.random()

Calculatoarele clasice nu generează în mod obișnuit aleatoriu autentic; numerele lor provin din algoritmi determiniști, adică pseudoaleatorii. Un computer cuantic poate: quantum.random({ bits }) pune fiecare bit într-o superpoziție 50/50 cu o poartă Hadamard, iar numai măsurarea decide, fundamental imprevizibil, valoarea obținută. Pe hardware cuantic real, rezultatul este aleatoriu fizic autentic; simulatorul îl imită folosind generatorul pseudoaleatoriu al browserului.

Simulator vs hardware cuantic real

Simulatorul calculează vectorul de stare prin aritmetică clasică în virgulă mobilă, direct în browser. Acest lucru este posibil numai pentru circuite foarte mici, cu cel mult 10 qubiți. Calculatoarele cuantice reale folosesc qubiți fizici, sunt afectate de erori precum decoerența și zgomotul, iar avantajul lor apare în circuite mult mai mari, care nu mai pot fi simulate clasic în practică. Instrumentul este destinat învățării, nu este un procesor cuantic real.

Întrebări frecvente

Este acesta un computer cuantic real?
Nu. Acest instrument este un simulator clasic bazat pe vectorul de stare. El calculează exact, în limita aritmeticii în virgulă mobilă, circuite cuantice mici cu cel mult 10 qubiți, direct în browser. Hardware-ul cuantic real folosește qubiți fizici și funcționează fundamental diferit.
Care qubit este q0 într-un șir de biți ca "10"?
q0 este întotdeauna bitul cel mai semnificativ, din stânga. Pentru 2 qubiți, x(0) creează astfel starea |10⟩, nu |01⟩.
Ce înseamnă „shots”?
Shots reprezintă numărul de măsurători simulate repetate, între 1 și 10.000. Fiecare măsurătoare extrage aleatoriu un rezultat conform distribuției exacte de probabilitate a vectorului de stare. Probabilitățile exacte nu depind de numărul de shots și sunt afișate separat.
De ce unele exemple arată un mesaj de eroare?
Simulatorul acceptă exact un circuit și un singur apel run() după measureAll(). Indicii de qubit nevalizi, porțile adăugate după măsurare, unghiurile sau valorile shots nevalide și erorile de sintaxă sunt respinse prin mesaje clare.
Ce fac porțile Hadamard, X și CNOT?
X schimbă |0⟩ cu |1⟩. Hadamard transformă o stare de bază într-o superpoziție cu ponderi egale. CNOT inversează qubitul țintă numai când qubitul de control este |1⟩ și poate crea inseparabilitate cuantică atunci când este combinată cu o superpoziție.
Cum se creează inseparabilitatea cuantică?
Un exemplu aplică o poartă Hadamard primului qubit și apoi o poartă CNOT celui de-al doilea. Qubiții nu mai pot fi descriși independent, iar măsurarea produce rezultate corelate precum |00⟩ și |11⟩.