Quantum Computer Simulator
Skriv et lille kvantekredsløb i JavaScript, simulere det direkte i din browser, og se kredsløbsdiagrammet, sandsynligheder og tilstandsvektor. Eller beskrive en beregning på et højt niveau (f.eks. en tilføjelse) og se det automatisk blive til et reelt reversibelt kvante kredsløb.
Støjmodel
Virkelige kvantecomputere regner ikke fejlfrit: Qubits er ekstremt følsomme og mister information gennem uønsket påvirkning fra omgivelserne, for eksempel varme, elektromagnetiske felter og andre qubits. Gateoperationer er heller aldrig helt præcise, og selv den afsluttende aflæsning kan give fejl. Simulatoren regner ideelt som standard; her kan du aktivere typiske fejlmodeller og se deres virkning direkte i resultaterne.
Beskriv en beregning med quantum.add, quantum. subtract, quantum.multiply, quantum.divide eller quantum.random. Ctrl + Enter starter simulationen. Fuld dokumentation via.Dokumentering. knap.
Denne kode blev automatisk genereret fra programkoden ovenfor og simuleret direkte. Du kan redigere den her manuelt og køre den igen.
Det genererede kredsløb blev redigeret manuelt. Register gruppering i diagrammet er derfor skjult; kører programkoden ovenfor igen vil overskrive disse ændringer.
Maksimal 4000 tegn. Tilgængelige QuantumCircuit metoder: x, y, z, h, s, sdg, t, tdg, rx, ry, rz, cnot, cz, ccnot (alias: toffoli), swap, measureAll, run. Ctrl + Enter starter simulationen.
Diagram over curnit
Trinvisningen viser sandsynligheder og tilstandsvektor præcis efter den valgte gate. Nedenfor gælder skudresultaterne altid for det komplette kredsløb.
OpenQASM 2.0
OpenQASM 2.0 er den udbredte udveksling format for kvante kredsløb og læses af Qiskit, blandt andre. Bemærk på bit ordre: denne simulator læser q0 som den mest betydningsfulde (venstre) bit, mens Qiskit læser q[0] som den mindst betydningsfulde. målt bit strenge derfor vises spejlet der.
Sandsynligheder
Chancen for at måle hver mulig bitstreng, beregnet præcist fra stat vektor. Læsning retning: q0 er den venstre (mest betydningsfulde) bit.
Bloch Sfærer
Tilstanden af hver enkelt qubit som en pil i Bloch kuglen: nordpol = |0⟩, sydpol = |1⟩, ækvator = lige så vægtet superposition. Hvis pilen er klart kortere end kuglens radius, har qubit ingen ren tilstand af sin egen. den er omgivet af andre qubits. En kort pil kan også komme fra støj: med en aktiv støjmodel qubit mister sammenhæng og pilen krymper indad. Støjende kugler er en tilnærmelse her. Bloch vektor er gennemsnit over støjen trajectories. Med trin visning ovenfor, pilene flytte porten ved gate (støj-fri kun).
Skudresultater
Hvor ofte hver bit streng faktisk opstod i de simulerede målinger. Med flere mulige resultater, numrene spredt tilfældigt omkring de nøjagtige sandsynligheder.
Stat Vector
De komplekse amplitude bag sandsynligheder: firkantet størrelse af en amplitude (real² + imaginary²) giver sandsynligheden for sin tilstand.
| Tilstand | Faktiske dele | Imaginær del |
|---|
Grundlæggende: Hvordan virker det?
Fra program til fysisk qubit
En rigtig kvantecomputer er mere end en chip. Klassisk kontrolelektronik oversætter kredsløbet til præcise impulser. I eksemplet vist, køling, repump, qubit, og udlæsning lasere forme disse signaler på et optisk bord og dirigere dem til et afskærmet vakuumkammer. Der de ændre og måle qubit tilstand; måling resultat derefter vender tilbage til den klassiske computer.
Kvitter & basistilstande
En klassisk bit er enten 0 eller 1. En qubit kan desuden eksistere i en superposition af de to basis stater |0⟩ og |1⟩Med flere qubits er alle basisstater skrevet som en smule streng, f.eks. |10⟩ for 2 qubits. hvor q0 i denne simulator er altid den mest betydningsfulde (venstre) bit.
Superposition
En qubit i superposition bærer samtidig komponenter af flere basistilstande. Disse komponenter er beskrevet som komplekse amplituder; kvadratmeteret af en amplitude giver sandsynligheden for at opnå den tilsvarende tilstand i en måling.
Bloch-sfæren
Status for en enkelt qubit kan visualiseres som en pil i en kugle: den nordlige pol repræsenterer |0⟩, den sydlige pol |1⟩, og alle punkter på ækvator er lige vægtet superpositioner. fasen bestemmer den retning langs ækvator, hvor pilen peger. Rotation porte rx, ry, og rz rotere pilen omkring den respektive akse, fase porte som S og T rotere det rundt om Z-aksen. Med indfiltrede qubits, pilen krymper mod centeret for kuglen: den enkelte qubit så ikke længere har en ren tilstand af sin egen. så indfiltring bliver bogstaveligt talt synlig.
Målebilleder
measureAll() måler alle qubits på én gang og slutter kredsløbet. Da en enkelt måling kun giver et tilfældigt resultat, kredsløbet er begrebsmæssigt målt "skud" gange med run({ shots }), så sandsynlighedsfordelingen viser sig som en histgram. De nøjagtige sandsynligheder er desuden beregnet direkte fra den stat vektor, uafhængig af tilfældighed af de skud.
Hadamard- port
Hadamard- porten h(q) tager en qubit fra en bestemt tilstand (|0⟩ eller |1⟩) til en ensartet vægtet superposition på |0⟩ og |1⟩ . så om 50% / 50% når målt.
Faseporte: S og T
Portene s(q) og t(q) ændrer ikke måle sandsynligheden for en enkelt qubit; de roterer kun fasen af |1⟩ amplitude. S ved 90°, T ved 45°. De viser kun deres effekt i kombination med superposition: mellem to Hadamard porte, fasen beslutter, hvordan amplitudes kombinere eller annullere (interferens). sdg(q) og tdg(q) roterer præcis den modsatte vej og undo S og T. Reglen er: to T gøre et S, to S gøre et Z.
CNOT & betinget indfiltring
CNOT- porten cnot(control, target) vender målqubit præcis når kontrolqubit er i tilstand |1⟩Hvis kontrolqubit er i superposition på forhånd, kan dette skabe envinklethed. de to qubits kan så ikke længere beskrives uafhængigt af hinanden, som i Bell tilstand eksempel. Hvis kontrolqubit er i en bestemt basis tilstand i stedet, CNOT kun udfører en betinget bit flip uden envinkletment. Så ikke hver CNOT automatisk skaber envinkletment.
CZ: den symmetriske relativ for CNOT
CZ-porten cz(a, b) Vender amplitudens tegn, når begge qubits er |1⟩. I modsætning til CNOT, er der ingen kontrol og ingen målqubit. porten fungerer identisk på begge qubits, hvilket er grunden til, at det er trukket som to forbundne prikker i diagrammet. CZ og CNOT kan konverteres til hinanden: en CNOT er en CZ, hvis målqubit er passeret gennem en Hadamard gate før og efter. CZ er en central byggesten af mange algoritmer, såsom Grover søgning.
GHZ-tilstand: indfiltring som trio
GHZ-staten (opkaldt efter Greenberger, Horne og Zeilinger) udvider Bell-statens princip til tre kvbits: en Hadamard-gate plus to CNOT-porte viklet sammen alle tre, så målingen kun giver udbytte |000⟩ eller |111⟩ . aldrig blandet bit strenge. Ingen qubit har en tilstand af sin egen længere; oplysningerne ligger udelukkende i den delte korrelation.
Deutsch algoritme: den mindste kvante fordel
Den Deutsch algoritme svarer, med en enkelt evaluering af et ukendt orakel, et spørgsmål, som en klassisk computer har brug for to evalueringer: er funktionen konstant eller afbalanceret? Tricket er at sende input gennem oraklet i superposition. takket være interferens, svaret bagefter er entydigt kodet i input qubit. Princippet bag det (fase kickback) er kernen i næsten alle kvantealgoritmer.
Grover søgning: forstærker amplitude
Grover søgning finder en markeret indgang i et usortet sæt med betydeligt færre forespørgsler end klassisk påkrævet. Et orakel markerer den ønskede tilstand med en fase flip (her via en CZ gate), så diffusion operatør forstærker den markerede amplitude på bekostning af alle andre. Med 2 qubits, en enkelt iteration er nok til at måle hittet med 100% sandsynlighed.
Vendbar tilføjelse: fra quantum.add() til et kredsløb
Programmets kodeeditor over oversætter quantum.add({ a, b }) i et kredsløb af X, CNOT og CCNOT porte (Toffoli), der gengiver klassisk tilføjelse på en rent reversibel måde: hver port kan fortrydes præcist, fordi ingen oplysninger er kasseret. En CCNOT gate (ccnot(c1, c2, target)) vender målqubit kun når begge kontrolqubits er |1⟩ . det er tilstrækkeligt som en byggesten til at genopbygge enhver klassisk kredsløb reversibly, herunder en fuld adder med bære. Indgangene A og B er først initialiseret som bestemt basis stater (ingen superposition) ved hjælp af X porte. Fordi hele kredsløbet derfor kun passerer gennem bestemte stater i stedet for superpositioner, giver målingen i slutningen nøjagtigt ét resultat med 100% sandsynlighed. det klassisk korrekte beløb. Det er derfor, det er grunden til, at. det er tilstrækkeligt som en byggesten til at genopbygge enhver klassisk kredsløb. quantum.add() producerer et deterministisk resultat på trods af kvante simulation, i stedet for flere mulige stater med sandsynligheder under 100%.
Subtraktion: addition i omvendt
Fordi hver port af et kvante kredsløb er præcis inverterbar, den komplette adder kredsløb kan udføres baglæns. og tilføjelsen bliver en subtraktion: quantum.subtract({ a, b }) bruger præcis portene til adder i omvendt rækkefølge og dermed beregner en − b. Dette er ikke en gimmick, men det grundlæggende princip om reversibel beregning: ingen beregningstrin ødelægger oplysninger, hvert skridt kan fortrydes. I denne version, er en ≥ b påkrævet, så der ikke opstår noget negativt resultat.
Multiplikation: Kvante.multiply()
Multiplikation her opstår fra præcis de samme reversibelt byggeklodser som tilføjelse: efter skolebog metode, faktor a tilføjes flere gange i skiftede positioner. matche de indstillede bits af faktor b. Hver partielle tilføjelse er den samme reversibelt ripple-carry adder; bære strømme ind i det næste produkt bit hver gang. Fordi resultatet register vokser med produktet, er faktorerne begrænset til 3 bits (0–7) her. kun derefter gøre faktor, produkt og bære qubit sammen passer ind i denne simulator 10 qubits.
Division med quantum.divide()
Afsnittet anvender kun reversibelt byggesten: quantum.divide({ a, b }) udfører lang division bygget fra skiftet, reversibelt subtraktioner af divisor fra resten register; resultatet er kvotienten og resten (a = quotient · b + remainder). Fordi udbytte, divisor, kvotient og en lånequbit skal alle passe ind i 10 qubits sammen, division er den mest stærkt begrænset drift: bits(a) + bits(b) + bits(a÷b) + 1 ≤ 10 - Og divisoren. b skal være ≥ 1 (ingen division med nul). Hvis et input ikke passer til budgettet, rapporterer editoren det i stedet for at beregne.
Sand tilfældighed: quantum.random()
Klassiske computere kan ikke generere sand tilfældighed. deres "RANDom numre" kommer fra deterministiske algoritmer (pseudo-randomness). En kvante computer kan: quantum.random({ bits }) sætter hver bit i en 50/50 superposition ved hjælp af en Hadamard gate, og kun målingen beslutter. fundamentalt uforudsigeligt. hvilken værdi kommer ud. På reel kvantehardware er dette fysisk sand tilfældighed; denne simulator efterligner det med pseudo-randomness af din browser.
Simulator vs. ægte kvantehardware
Denne simulator beregner tilstanden præcist ved hjælp af klassisk flydende-punkt aritmetiske i din browser. Dette virker kun, fordi udelukkende meget små kredsløb med op til 10 qubits er overvejet her. Real quantum computere bruger fysiske qubits, er fejl-prone (afsammenhæng, støj), og deres fordel viser kun med meget større kredsløb, der ikke længere kan simuleres klassisk i praksis. Dette værktøj er et læringsværktøj, ikke en reel kvanteprocessor.