ToolDingo

Quantum datamaskinsimulering

Skriv en liten mengde i JavaScript, simuler den direkte i nettleseren, og se kredsdiagram, sannsynligheter og tilstandsvektor. Eller beskriv en beregning på et høyt nivå (f. eks. et tillegg) og se den automatisk om til et mengderom som kan reverseres.

Støymodell

Virkelige kvantedatamaskiner beregner ikke perfekt: qubits er svært følsomme og mister en del av informasjonen (deksel) gjennom enhver uønsket interaksjon med miljøet – varme, magnetiske felt, nabo- qubiter. Gateoperasjoner er aldri perfekt presis, og selv den endelige utløsningen kan gå galt. Denne simulatoren beregner som standard. Her kan du gjøre det mulig å bruke typiske feilmodeller og observere effektene direkte i resultatene.

Anvender på hver simulering på denne siden – for høynivåløp og manuelt skrevet kretser.
%
Per port og involvert qubit, eller per lesebit for utlesingsmodellen. Velg en verdi for scenarioet du vil undersøke.

Programkode

Beskriv en beregning med kvant. add, kvant. subtract, kvant. multiply, kvant. divide eller kvantum. random. Ctrl+Enter starter simuleringen. Full dokumentasjon med « Dokumentasjon » - knappen.

Dokumentasjon

Beskriv en beregning i redigeringen – en virkelig kvante- krets blir automatisk generert fra den og simulert. Maks. 4000- tegn. Ctrl+Enter starter simuleringen.

FormelBeskrivelseGrenser
quantum.add({ a, b })Legg til to tallResultatmaks. 4 bits (0–15)
quantum.subtract({ a, b })Subtraksjona ≥ b, største 4 bits
quantum.multiply({ a, b })MultiplikasjonFactors 0–7 (3 bits)
quantum.divide({ a, b })Divisjon (kvotient + gjenværende)b ≥ 1; svært tett: bit(a) +bit( b) +bit(a)÷b)+1 ≤ 10
quantum.random({ bits })Sannt kvante- tilfeldig tallbits 1–10

Velg et eksempel

Kretskode

Høyeste antall 4000 tegn. Tilgjengelige QuantumCircuit- metoder: x, y, z, h, s, sdg, t, tdg, rx, ry, rz, cnot, cz, ccnot (alias: toffoli), skift, målAll, kjør. Ctrl+Enter starter simuleringen.

Velg et eksempel

Grunnleggende: Hvordan virker det?

Planlagt kvantedatainnretning: En styringsdatamaskin styrer flere laserstråler over en optisk tabell til en qubit inni et vakuumkammer.
Fra den klassiske styringsmaskinen gjennom lasere og optikker til den fysiske qubiten.

Fra program til fysisk qubit

En virkelig kvante kalkulator er mer enn en chip. Klassisk kontrollelektronik omgjør kretsen til nøyaktige pulser. I eksempelet vises, kjøles, pumpes, qubits og utlesningslasere danner disse signalene på en optisk tabell og styrer dem inn i et vakuumkammer som er skylt. Der endrer de og måler qubit- tilstanden, måleresultatet da returneres til den klassiske kalkulatoren.

& Basestatus for Qubit

En klassisk bit er enten 0 eller 1. En qubit kan dessuten finnes i en overposisjon av de to basisstatene |0⟩ og |1⟩Med flere qubiter blir alle basisstater skrevet som en bit tekst, f.eks. |10⟩ for 2 qubits – der q0 i denne simuleringen er alltid den mest signifikante (venstre) bit.

Superposisjon

En qubit i overposisjon samtidig transporterer deler av flere basisstater. Disse komponentene beskrives som komplekse amplituder, den kvadratiske størrelsen av en amplitude gir sannsynligheten for å oppnå den tilsvarende tilstanden i en måling.

Blochsfæren

En enkelt qubits tilstand kan visualiseres som en pil i en kule: den nordlige polen representerer |0⟩, sørpolen |1⟩, og alle punktene på ekvatoren er likevektede overposisjoner – fasen bestemmer retningen langs den der pilen punktene. Rotasjonsportene rx, ry, og rz Roter pilen rundt den tilsvarende aksene, faseporter som S og T roterer den rundt Z- aksene. Med innsmeltede qubiter krymper pilen mot midten av kulen: den enkelte qubit- dem ikke lenger har en ren tilstand – så innsugingen blir bokstavelig talt synlig.

Måle- og skytespill

measureAll() måler alle qubiter på en gang og slutter kredsen. Ettersom en enkelt måling bare gir et tilfeldig resultat, blir kredsen konseptvis målt "skudd" ganger med run({ shots })Så sannsynlighetsfordelingen vises som et histogram. De nøyaktige sannsynlighetene beregnes også direkte fra tilstandsvektoren, uavhengig av tilfeldigheten av skytespillene.

Hadamard- port

Hadamard- porten h(q) tar en qubit fra en bestemt tilstand (|0⟩ eller |1⟩) i en likevekts overstilling av |0⟩ og |1⟩ – så om 50% / 50% når målt.

Faseporter: S og T

Portene s(q) og t(q) endrer ikke målemulighetene for en enkelt mengde, de roterer bare fasen av |1⟩ amplitude – S ved 90°, T ved 45°. De viser bare deres virkning i kombinasjon med overposisjon: mellom to Hadamard-porter, fasen bestemmer hvordan amplituder kombineres eller annulleres (interferens). Doggervariantene sdg(q) og tdg(q) Roter nøyaktig motsatt vei, og angre S og T. Regelen er: to T gjør en S, to S gjør en Z.

CNOT- og betinget innsetting

CNOT-porten cnot(control, target) glider mål qubit nøyaktig når kontroll qubit er i tilstand |1⟩Dersom kontrollkb-et er i overposisjon før, kan dette skape endepunkt – de to kbbitene kan ikke lenger beskrives uavhengig av hverandre, som i eksempelet på signalet om bell-tilstanden. Hvis kontroll-qubiten er i en bestemt basistilstand i stedet, utfører CNOT bare en vilkårlig bitsving uten innsetting. Derfor oppretter ikke hver CNOT automatisk ende.

CZ: den symmetriske slektningen til CNOT

CZ- porten cz(a, b) Snur om amplituden når begge kvadratene er |1⟩I motsetning til CNOT, er det ingen kontroll og ingen mål qubit – porten virker identisk på begge qubiter, som er hvorfor den tegnes som to sammenknyttede prikker i diagrammet. CZ og CNOT kan konverteres til hverandre: en CNOT er en CNOT hvis mål qubit passeres gjennom en Hadamard-port før og etter. CZ er en sentral bygningsblokk for mange algoritmer, som Grover-søk.

GHZ-stat: innkapsling som trio

GHZ-staten (oppkalt etter Greenberger, Horne og Soulinger) utvider Bel-staten til tre qubiter: en Hadamard-port pluss to CNOT-entangler alle tre slik at målingen bare gir |000⟩ eller |111⟩ – aldri blandet bit-strenger. Ingen qubit har en egen tilstand, informasjonen ligger utelukkende i den delte korrelasjonen.

Tysk algoritme: den minste kvantefordelen

Den tyske algoritmen svarer, med en enkelt vurdering av en ukjent eller et aks, et spørsmål som en klassisk kalkulator trenger to vurderinger: Er funksjonen konstant eller balansert? Trikset er å sende inn inputet gjennom eller klappen i superposisjon – takket være interferensen, svaret etterpå kodes entydig i inngangs qubit. Princippet bak det (fase kickback) er i kjernen av nesten alle kvantealgoritmer.

Grover- søk: forsterker amplituder

Grover- søk finner en markert oppføring i et usortert sett med betydelig færre forespørsler enn den som er nødvendig. En elleracle markerer den oppgitte tilstanden med en fase- glide (here via en CZ- port), da diffusionsoperatøren øker den markerte ambisjonen på kostnaden til alle andre. Med 2 qubits er en enkelt iterasjon nok til å måle treffet med 100% sannsynlighet.

Tilføyelse som kan reverseres: fra kvant. add() til en krets

Redigering av kode over, oversatt quantum.add({ a, b }) I en krets av X, CNOT og CCNOT-porter (Toffoli) som reproduserer klassisk tillegg på en ren reversibel måte: Hver port kan unnlates nøyaktig, fordi ingen informasjon blir kastet. En CCNOT-port (ccnot(c1, c2, target)) slipper mål qubit bare når begge kontrollpunktene er |1⟩ – som er tilstrekkelig som en byggeblokk til å bygge om en klassisk kreds, herunder en full tilhenger med bærer. Inndataene A og B er først initialisert som faste basisstater (ingen overposisjon) ved hjelp av X- porter. Fordi hele kretsen derfor bare passerer gjennom definitive tilstander i stedet for overposisjoner, gir målingen ved slutten nøyaktig ett resultat med 100% sannsynlighet – den klassiske korrekte summen. Det er derfor quantum.add() produserer et deterministisk resultat, til tross for mengdesimuleringen, i stedet for flere mulige stater med sannsynlighet under 100%.

Subtraksjon: tilsetting i omvendt form

Fordi hver port i en mengde krets er nøyaktig uvendbar, kan hele tilføyerkretsen utføres bakover – og tillegget blir en subtraksjon: quantum.subtract({ a, b }) bruker nøyaktig portene til tilføyeren i omvendt rekkefølge og beregner dermed en - b. Dette er ikke en gimmick, men det grunnleggende prinsippet om reversibel beregning: ingen datasteg ødelegger informasjon, hver steg kan angres. I denne versjonen kreves en ≥ b slik at det ikke skjer noe negativt resultat.

Multiplikasjon: kvant. multiply ()

Multiplikasjon her kommer fra nøyaktig samme reversible byggeklosser som tillegg: etter skolebokmetoden, legges faktor a flere ganger i skiftende posisjoner – som passer med de sette bitene av faktor b. Hver del av tillegget er samme reversible tilsettingsmiddel til rippevogner; transportstrømmene inn i neste produktbit hver gang. Fordi resultatregisteret vokser med produktet, er faktorene begrenset til 3 bit (0–7) her – bare de som gjør faktor, produkt og bærer qubit sammen i denne simulatorens 10 qubits.

Divisjon: quantum.divide()

Divisjon bruker også bare reversible bygningsblokker: quantum.divide({ a, b }) utfører lang oppdeling basert på skiftede, reversible fradrag fra divisoren fra gjenværende register, resultatet er kvotienten og resten (a = quotient · b + remainderFordi utbytte, divisor, kvotient og en lånekvote skal alle være i samsvar med 10-verdiene, og den del av en slik virksomhet som er mest begrenset: bits(a) + bits(b) + bits(a÷b) + 1 ≤ 10 skal holdes, og divisoren b må være ≥ 1 (ingen divisjon med null). Hvis en innsats ikke passer budsjettet, så melder redigereren den i stedet for å beregne.

Sann tilfeldighet: kvant. random ()

Klassiske datamaskiner kan ikke lage sann tilfeldighet – deres « tilfeldige tall» kommer fra deterministiske algoritmer (pseudorandomitet). En kvantedatamaskin kan: quantum.random({ bits }) setter hver bit inn i en 50/50 overposisjon ved hjelp av en Hadamard-port, og bare målemåten bestemmer hvilken verdi som blir utledet. På ekte kvantemaskin er dette fysisk sann tilfeldighet; denne simulatoren etterligner den med pseudo- tilfeldighet i nettleseren.

Simulator mot ekte kvante- maskinvare

Denne simuleringen beregner tilstanden nøyaktig ved bruk av klassisk flytende punkt aritmetikk i nettleseren – dette virker bare fordi svært små kretser med opp til 10 qubits blir betraktet her. Virkelige kvante datamaskiner bruker fysiske qubiter, er feil- prone (deksjon, støy), og deres fordel viser bare med mye større kretser som ikke lenger kan simuleres klassisk i praksis. Dette verktøyet er et læringsverktøy, ikke en virkelig kvanteprosess.

Vanlige spørsmål

Er dette en virkelig kvante kalkulator?
Nei. Dette verktøyet er en klassisk simulering av tilstandsvektorer som beregner matematikken til en liten kvante- krets (opp til 10 qubits) nøyaktig, ved hjelp av flytende punkt aritmetikk i nettleseren. Virkelig kvantemaskin bruker fysiske qubiter og fungerer i hovedsak forskjellig.
Hvilken qubit er q0 i en bit streng som "10"?
q0 er alltid den mest signifikante (venstre) biten. Med 2 qubits, x(0) lager derfor staten |10⟩, ikke |01⟩.
Hva betyr "skudd"?
Shots er antall simulerte gjentatte målinger (1–10,000). Hvert bilde tegner tilfeldig et målresultat i henhold til den nøyaktige sannsynlighetsfordelingen for tilstandsvektoren. De nøyaktige sannsynlighetene for selve sannsynligheten avhenger ikke av tilfeldighet og vises separat.
Hvorfor viser noen eksempler en feilmelding?
MVP- området tillater nøyaktig en krets med nøyaktig én run () - kall etter målingenAll(). Ugyldige qubit- indekser, porter etter målAll (), ugyldige vinkler eller antall skot- tall, og syntaksfeil i koden blir avvist med en forståelig feilmelding.
Hva gjør Hadamard, X og CNOT porter?
X bytter |0⟩ og |1⟩. Hadamard omgjør en basistilstand til en likevekts overposisjon. CNOT slipper målet bare når kontrollen er |1⟩ og kan opprette endepunkt når den kombineres med overposisjon.
Hvordan er innbyggingen opprettet?
Et eksempel på dette gjelder Hadamard for første qubit og da CNOT for et sekund. qubitene kan ikke lenger beskrives uavhengig, og målingen gir tilhørende resultater som |00⟩ eller |11⟩.