ToolDingo

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.

Æbler på hver simulering på denne side. for højt niveau kører og manuelt skrevet kredsløb.
%
Pr. port og involverede kvbit, eller pr. læse bit for udlæsning model. Vælg en værdi for det scenario, du ønsker at udforske.

Programkode

Beskriv en beregning med quantum.add, quantum. subtract, quantum.multiply, quantum.divide eller quantum.random. Ctrl + Enter starter simulationen. Fuld dokumentation via.Dokumentering. knap.

Dokumentation

Beskriv en beregning i editoren. Et rigtigt kvante kredsløb genereres automatisk fra det og simuleres. Maksimal 4000 tegn. Ctrl+Enter Starter simulationen.

FormelVarebeskrivelseGrænseværdier
quantum.add({ a, b })Tilføj to talResultat max. 4 bits (0–15)
quantum.subtract({ a, b })Subtraktionen ≥ b, max. 4 bits
quantum.multiply({ a, b })MultiplikationFaktorer 0–7 (3 bits)
quantum.divide({ a, b })Afsnit (quotient + rest)b ≥ 1; meget stram: bits(a) + bits(b) + bits(a÷b)+1 ≤ 10
quantum.random({ bits })Sandt kvante tilfældig talbits 1–10

Vælg et eksempel

Cirkulær kode

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.

Vælg et eksempel

Grundlæggende: Hvordan virker det?

Skematisk kvantecomputeropsætning: En kontrolcomputer leder flere laserstråler over et optisk bord til en qubit inde i et vakuumkammer.
Fra den klassiske kontrolcomputer gennem lasere og optik til den fysiske qubit.

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.

Ofte stillede spørgsmål

Er det en rigtig kvantecomputer?
Nej. Dette værktøj er en klassisk state-vektor simulator, der beregner matematik af en lille kvante kredsløb (op til 10 qubits) præcis, ved hjælp af flydende-punkt aritmetiske i din browser. Real quantum hardware bruger fysiske kvbits og fungerer fundamentalt anderledes.
Hvilken qubit er q0 i en smule streng som "10"?
q0 er altid den mest betydningsfulde (venstre) bit. Med 2 kvbits, x(0) derfor skaber staten |10⟩, ikke |01⟩.
Hvad betyder "skud"?
Skud er antallet af simulerede gentagne målinger (1–10,000). Hvert skud tilfældigt trækker et måleresultat i henhold til den nøjagtige sandsynlighed fordeling af den stat vektor. De nøjagtige sandsynligheder selv ikke afhænger af tilfældigheder og vises separat.
Hvorfor viser nogle eksempler en fejlmeddelelse?
MVP-dækningen giver mulighed for præcis ét kredsløb med præcis ét løb() opkald efter foranstaltningAll().Ugyldige qubit-indekser, gates efter foranstaltningAll(), ugyldige vinkler eller skudtal, og syntaksfejl i koden afvises med en forståelig fejlmeddelelse.
Hvad gør Hadamard, X og CNOT porte?
X swaps |0⟩ og |1⟩. Hadamard forvandler en basisstat til en lige så vægtet superposition. CNOT vender sit mål kun når control er |1⟩ og kan skabe sammenfiltring når kombineret med superposition.
Hvordan skabes en singlement?
Et eksempel gælder Hadamard på den første qubit og derefter CNOT på et sekund. Kvbits kan ikke længere beskrives uafhængigt, og måling producerer korrelerede resultater som |00⟩ eller |11⟩.