ToolDingo

Kvanttitietokonesimulaattori

Kirjoita pieni kvanttipiiri JavaScriptiin, simuloi se suoraan selaimeesi ja katso piirtokaavio, todennäköisyydet ja tilavektori. Tai kuvaile laskentaa korkealla tasolla (esim. lisäys) ja katso, kun se muuttuu automaattisesti todelliseksi käännettäväksi kvanttipiiriksi.

Melumalli

Todelliset kvanttitietokoneet eivät laske täydellisesti: kvanttitietokoneet ovat äärimmäisen herkkiä ja menettävät osan tiedoistaan (epäyhtenäisyydestä) jokaisen ei-toivotun vuorovaikutuksen kautta ympäristönsä kanssa – lämmön, sähkömagneettiset kentät, naapurin kvantti. Portin toimintakaan ei ole koskaan täysin tarkkaa, ja jopa lopullinen lukema voi mennä pieleen. Simulaattori laskee mieluiten oletuksena; tässä voit ottaa käyttöön tyypilliset virhemallit ja tarkkailla niiden vaikutusta suoraan tuloksiin.

Koskee jokaista simulaatiota tällä sivulla – korkean tason kierroksia ja käsin kirjoitettuja piirejä.
%
Porttia kohden ja mukana oleva qubit tai lukua kohden lukemanvaihtomalli. Valitse arvo skenaariolle, jota haluat tutkia.

Ohjelman koodi

Kuvaile laskentaa kvantti.add:n, kvantti.add:n, kvantti.add:n, kvantti.add:n, kvantti.add:n, kvantti.add:n, kvantti.add:n, kvantti.difful:n tai kvantti.random:n kanssa. Ctrl+Enter aloittaa simulaation. Täysi dokumentointi.Documentation. -nappiin.

Dokumentointi

Kuvaile laskenta editorissa – siitä syntyy automaattisesti todellinen kvanttipiiri, joka simuloidaan. Suurimmat 4000-merkit. Ctrl+Enter Aloitan simulaation.

KaavaTavaran kuvausRaja-arvot
quantum.add({ a, b })Lisää kaksi numeroaTulos max. 4 bittien (0–15)
quantum.subtract({ a, b })Subtraction≥ b, suurin 4-bitit
quantum.multiply({ a, b })Kertominen0–7-tekijät (3-bitit)
quantum.divide({ a, b })Alue (kpl + jäljellä)b ≥ 1; erittäin tiukka: bitit(a)+bitit(b)+bitit(a)÷b)+1 ≤ 10
quantum.random({ bits })Todellinen kvanttisatunnainen lukubits 1–10

Valitse esimerkki

Kiertokoodi

Enintään 4000 merkkiä. Saatavilla olevat QuantumCircuit -menetelmät: x, y, z, h, s, sdg, t, tdg, rx, ry, rz, cnot, cz, ccnot (alias: toffoli), swap, miteAll, run. Ctrl+Enter aloittaa simulaation.

Valitse esimerkki

Perusasiat: Miten se toimii?

Schematic kvanttitietokoneen asetus: ohjaustietokone ohjaa useita lasersäteitä optisen pöydän läpi tyhjiökammion sisään jäävään kvanttikuppiin.
Klassisesta ohjaustietokoneesta laser- ja optiikka-asennelmasta fyysiseen qubiittiin.

Ohjelmasta fyysiseen qubiittiin

Todellinen kvanttitietokone on enemmän kuin siru. Klassinen ohjauselektroniikka muuntaa piirin tarkkoiksi pulssiksi. Esimerkissä näkyy, että jäähdytys, repliikki, kqubit ja lukemalaser muokkaavat näitä signaaleja optiselle pöydälle ja ohjaavat ne suojattuun tyhjiökammioon. Siellä ne muuttuvat ja mittaavat kvanttitilan; mittaustulos palaa klassiselle tietokoneelle.

Qubit & bound - statukset

Klassinen bitti on joko 0 tai 1. Kvaliitti voi lisäksi olla olemassa kahden perustilan superpositiossa. |0⟩ sekä |1⟩. Useilla kvubilla kaikki perusteet kirjoitetaan hieman jousena, esim. |10⟩ 2-qubitien osalta – missä q0 tässä simulaattorissa on aina se merkittävin (vasemmalla) biisi.

Superpositio

Supra-asennossa oleva qubiitti kantaa samanaikaisesti useiden perustilojen osia. Näitä komponentteja kuvataan monimutkaisiksi amplitudeiksi; amplitudin neliömäinen suuruus antaa mahdollisuuden saada vastaava tila mittauksessa.

Blochin pallo

Yhden qubitin tila voidaan visualisoida nuoleksi pallossa: pohjoisnapa edustaa |0⟩Etelänapa |1⟩, ja kaikki päiväntasaajan pisteet ovat yhtä painotettuja superasentoja – vaihe määrittää suunnan, jossa nuoli osoittaa. Kiertoportit rx, ry, ja rz Käännä nuoli kulloisenkin akselin ympäri, vaiheportit, kuten S ja T, pyörittävät sitä Z-akselin ympäri. Kiimaisten qubiittien myötä nuoli kutistuu kohti pallon keskustaa: yksittäisellä qubit thenilla ei ole enää omaa puhdasta tilaa – niin kietoutuminen tulee kirjaimellisesti näkyviin.

Mittaus ja laukaukset

measureAll() Mittaa kaikki qubitit kerralla ja lopettaa piirin. Koska yksi mittaus tuottaa vain yhden satunnaisen tuloksen, piirin käsitteellisesti mitataan "shots" kertaa run({ shots }), jotta todennäköisyysjakauma näkyy histogrammina. Tarkat todennäköisyydet ovat lisäksi suoraan valtiovektorista riippumatta laukausten satunnaisuudesta.

Hadamardin portti

Hadamardin portti h(q) "...on qubiittia tietystä tilasta" (|0⟩ tai |1⟩) yhtä painotettuun |0⟩ sekä |1⟩ – siis 50%/50%, kun se mitataan.

Vaiheportit: S ja T

Portit s(q) sekä t(q) Älä muuta yhden qubitin mittaustodennäköisyyttä; ne kiertävät vain |1⟩ amplitudi – S 90°, T 45°. Ne osoittavat vaikutuksensa vain yhdistettynä superpositioon: kahden Hadamardin portin välissä vaihe päättää, kuinka amplitudit yhdistyvät tai peruuntuvat (häiriö). Tikarivarianttien vahvuinen amplitudi on yksi ja toinen. sdg(q) sekä tdg(q) Käännä täsmälleen vastakkaista tietä ja kumoa S ja T. Sääntö on: kaksi T:tä tekee S:n, kaksi S:ää Z:n.

CNOT ja ehdollinen kietoutuminen

CNOT-portti cnot(control, target) Kääntää kohdequbitin tasan, kun ohjausqubit on tilassa |1⟩Jos kontrollikbitti on superasentona etukäteen, se voi aiheuttaa kietoutumisen – kahta kbitiä ei voi enää kuvata toisistaan riippumatta, kuten Bellin osavaltiossa esimerkissä. Jos kontrolliqubiti on sen sijaan tietyssä perustilassa, CNOT suorittaa vain ehdollisen kääntöliikkeen ilman kietoutumista. Joten jokainen CNOT ei automaattisesti luo sotkeutumista.

CZ: CNOT:n symmetrinen sukulainen

Tšekin portti cz(a, b) Kääntää amplitudin merkin täsmälleen, kun molemmat qubitit ovat |1⟩Toisin kuin CNOT, ei ole mitään kontrollia eikä maalikvaaria – portti toimii molemmilla kvabiteilla samalla tavalla, minkä vuoksi se piirretään kahteen toisiinsa liitettyyn pisteeseen. CZ ja CNOT voidaan muuntaa toisikseen: CNOT on CZ, jonka kohdekvabitti kulkee Hadamardin portin läpi ennen ja jälkeen. CZ on monien algoritmeja, kuten Grover-hakua, kuvaava rakennuspalikka.

GHZ-tila: kolmikko sotkeutuu

GHZ-valtio (Named jälkeen Greenberger, Horne ja Zeilinger) laajentaa Bell State -periaatteen kolmeen kwittiin: yksi Hadamardin portti ja kaksi CNOT-järjestelmää sotkevat kaikki kolme niin, että mittaus tuottaa vain tuottoa |000⟩ tai |111⟩ – Ei koskaan sekoittanut bittikieltä. Yhdelläkään qubitilla ei ole enää omaa tilaa, vaan tieto perustuu vain yhteiseen korrelointiin.

Deutsch-algoritmi: pienin kvanttietu

Deutsch-algoritmi vastaa yhdellä ainoalla arvioinnilla tuntemattomasta oraakkelista, johon klassinen tietokone tarvitsee kaksi arviota: onko toiminto vakio vai tasapainoinen? Temppuna on lähettää syöte superasentoon oraakkelin läpi – häiriön ansiosta vastaus on yksiselitteisesti koodattu sisääntulon qubiittiin. Sen taustalla oleva periaate (vaihepotku) on lähes kaikkien kvanttialgoritmien ytimessä.

Grover-haku: vahvistavia amplitudeja

Grover-haku löytää tunnistetun merkinnän valikoimattomaan joukkoon, jossa on huomattavasti vähemmän kyselyitä kuin klassisesti vaaditaan. Oraakkeli merkitsee etsityn tilan vaihekäännöksellä (tässä CZ-portin kautta), ja diffuusiooperaattori vahvistaa merkittyä amplitudia kaikkien muiden kustannuksella. 2 qubitien avulla yksi iterointi riittää mittaamaan osuman 100%-todennäköisyydellä.

Palautuva lisäys: kvantti.add() piiristä

Yllä oleva ohjelmakoodimuokkain kääntää quantum.add({ a, b }) Klassista lisäystä puhtaasti kääntäväksi kierrokseksi toistavien X-, CNOT- ja CCNOT-porttien (Toffoli) piiriin: jokainen portti voidaan tehdä täsmälleen tyhjäksi, koska mitään tietoa ei jätetä pois.ccnot(c1, c2, target)) Kääntää kohdequbitin vain, jos molemmat ohjausqubitit ovat |1⟩ – se riittää rakennuspalkaksi minkä tahansa klassisen piirin rekonstruoimiseen palautuvasti, mukaan lukien täysi lisäosa kantavuudella. A- ja B-tulot alustetaan ensin konkreettisiksi perusmerkeiksi (ei superpositiota) käyttäen X-portteja. Koska koko piiri kulkee siis vain konvergenssien sijaan täsmällisten tilanteiden läpi, mittaus tuo lopulta täsmälleen yhden tuloksen 100%-todennäköisyydellä – klassisesti oikea summa. Siksi quantum.add() Tuottaa determinististä tulosta kvanttisimulaatiosta huolimatta, eikä useita mahdollisia tiloja, joiden todennäköisyys on alle 100%.

Subtraction: lisäys kääntöpuolella

Koska jokainen kvanttipiirin portti on täysin muuttumaton, täydellinen lisäpiiri voidaan suorittaa takaperin – ja lisäyksestä tulee vähennys: quantum.subtract({ a, b }) Käytät täsmälleen lisäosan portteja käänteisessä järjestyksessä ja lasket siten − b. Tämä ei ole kikka vaan käänteisen laskutavan perusperiaate: mikään laskentavaihe ei tuhoa tietoa, jokainen askel voidaan peruuttaa. Tässä versiossa vaaditaan ≥ b, jotta ei tapahdu negatiivista tulosta.

Kertominen: kvantti.kerrannais()

Tässä tulee esiin täysin samoja korvaavia rakennuspalikoita kuin lisänä: koulukirjan menetelmän mukaisesti tekijä a lisätään useaan kertaan siirrettyihin asemiin – tekijän b settien kanssa samaan aikaan. Jokainen osittainen lisäys on sama, joka on palautuva repliikkikantoaine; kanto virtaa seuraavaan tuotteeseen joka kerta. Koska tulosrekisteri kasvaa tuotteen mukana, tekijät rajoittuvat 3 bittien (0–7) tässä – vain n do tekijä, tuote ja kuljettaa qubit yhdessä mahtuvat tämän simulaattorin 10 qubitit.

Jakolasku: quantum.divide()

Jaottelussa käytetään myös vain korjattavia rakennusosia: quantum.divide({ a, b }) Suorittaa pitkän jaon, joka perustuu siirtyviin, korvaaviin divistorin vähennysten vähennyksiin muusta rekisteristä; tuloksena on quo-int sekä Loppuosa (a = quotient · b + remainder) Koska osinko, jakaja, Quocint sekä Lainanottoqubitin täytyy sopia 10 qubitiin, jako on voimakkaimmin rajoitettu operaatio: bits(a) + bits(b) + bits(a÷b) + 1 ≤ 10 täytyy pitää kiinni, ja jakaja b Täytyy olla ≥ 1 (ei jakoa nollalla). Jos syöttö ei sovi budjettiin, editori ilmoittaa sen tietojenkäsittelyn sijaan.

Todellinen sattumanvaraisuus: kvanttime.random()

Klassiset tietokoneet eivät pysty luomaan todellista sattumanvaraisuutta – niiden "satunnaisluvut" tulevat deterministisistä algoritmeista (pseudo-satunnaisuus). Kvanttitietokone voi: quantum.random({ bits }) Laskee jokaisen palan 50/50-superasetteluun Hadamardin portin avulla, ja vain mittaus päättää – lähtökohtaisesti arvaamattomasti – mikä arvo tulee esiin. Todellisesta kvanttilaitteistosta tämä on fyysisesti todellista sattumanvaraisuutta; tämä simulaattori jäljittelee sitä selaimesi näennäisen sattumanvaraisuuden avulla.

Simulaattori vs. todellinen kvanttilaitteisto

Tämä simulaattori laskee tilan täsmälleen klassisella kelluntapistearitmeettiikalla selaimessasi – tämä toimii vain siksi, että tässä tarkastellaan vain hyvin pieniä piirejä, joissa on jopa 10 qubitit. Todelliset kvanttitietokoneet käyttävät fyysisiä qubitioita, ovat virhealttiita (dekoheerinen, melu), ja niiden etuna on vain paljon suurempia piirejä, joita ei enää voida simuloida klassisesti. Tämä työkalu on oppimistyökalu, ei todellinen kvanttiprosessori.

Usein kysytyt kysymykset

Onko tämä oikea kvanttitietokone?
Ei. Tämä työkalu on klassinen valtion vektorisimulaattori, joka laskee pienen kvanttipiirin (10 qubitiin asti) matematiikan juuri siten, että se käyttää kelluntapistearitmetiikkaa selaimessasi. Todellinen kvanttilaitteisto käyttää fyysisiä kvanttipiirejä ja toimii perustavanlaatuisesti eri tavalla.
Mikä qubit on q0 Vähän narussa kuin "10"?
Q0 on aina merkittävin (vasemmalla) biisi. 2-qubitien avulla x(0) luo tilan |10⟩, ei |01⟩.
Mitä "shotit" tarkoittavat?
Laukauksia on simuloitujen toistuvien mittausten määrä (1–10,000). Jokainen laukaus tekee satunnaisen mittaustuloksen tilavektorin tarkan todennäköisyysjakauman mukaan. Tarkka todennäköisyys ei itse riipu sattumasta ja näytetään erikseen.
Miksi joissakin esimerkeissä näkyy virheilmoitus?
MVP-scope mahdollistaa täsmälleen yhden piirin, jossa on täsmälleen yksi ajo () kutsu toisensa jälkeenKaikki (). Virheelliset qubit-indeksit, portit toisensa jälkeenKaikki (), virheelliset kulmat tai laukauslaskenta, ja koodin nastavirheet hylätään ymmärrettävällä virheilmoituksella.
Mitä Hadamardin, X:n ja CNOT:n portit tekevät?
X-vaihdot |0⟩ ja |1⟩. Hadamard muuttaa perustilan yhtä painotetuksi superpositioksi. CNOT kääntää kohteensa vasta, kun kontrollina on |1⟩ ja voi luoda kietoutumisen, kun se yhdistetään superpositioon.
Miten sotkeutuminen syntyy?
Yksi esimerkki koskee Hadamardia ensimmäiseen kvubiin ja CNOT-tekniikkaan. Kvubiitteja ei voida enää kuvata itsenäisesti, ja mittaus tuottaa korreloivia tuloksia, kuten |00⟩ tai |11⟩.