Simulátor kvantového počítače
Napište malý kvantový obvod v JavaScriptu, simulujte jej přímo ve svém prohlížeči a podívejte se na schéma obvodu, pravděpodobnosti a vektor stavu. Nebo popište výpočet na vysoké úrovni (např. přidání) a sledujte, jak se automaticky změní v skutečný reverzibilní kvantový obvod.
Model hluku
Skutečné kvantové počítače nevypočítávají dokonale: qubity jsou extrémně citlivé a ztrácejí část svých informací (decherence) přes každou nežádoucí interakci s jejich prostředím - teplo, elektromagnetická pole, sousední qubity. Operace brány nejsou nikdy dokonale přesné, a dokonce i konečné čtení může jít špatně. Tento simulátor počítá ideálně ve výchozím nastavení; zde můžete povolit typické chybové modely a sledovat jejich účinek přímo ve výsledcích.
Popište výpočet s quantum.add, quantum.subtract, quantum.multiply, quantum.divide nebo quantum.random. Ctrl+Enter spustí simulaci. Kompletní dokumentace pomocí tlačítka "Dokumentace".
Tento kód byl automaticky generován z programového kódu výše a simulován přímo. Zde jej můžete ručně upravit a spustit znovu.
Vygenerovaný obvod byl upraven manuálně. Seskupování registrů v diagramu je proto skryto; spuštění kódu programu nad ním bude tyto změny přepisovat.
Maximální 4000 znaků. Dostupné metody QuantumCircuit: x, y, z, h, s, sdg, t, tdg, rx, ry, rz, cnot, cz, ccnot (alias: toffoli), swap, measureAll, run. Ctrl+Enter spustí simulaci.
Schéma obvodu
Pohled na krok ukazuje pravděpodobnost a stav vektoru přesně po zvolené bráně. Výsledky snímku se vždy vztahují na celý obvod.
OpenQASM 2.0
OpenQASM 2.0 je široce používaný formát interchange pro kvantové obvody a je čtena Qiskit, mimo jiné. Poznámka na bit pořadí: tento simulátor čte q0 jako nejvýznamnější (vlevo) bit, zatímco Qiskit čte q [0] jako nejméně významné - naměřené bitové řetězce se tam proto objevují zrcadlově.
Pravděpodobnost
Šance změřit každý možný bitový řetězec, vypočtený přesně ze stavového vektoru. Čtení směru: q0 je levý (nejvýznamnější) bit.
Blochovy sféry
Stav každého qubitu je zobrazen jako šipka v Blochově kouli: severní pól = |0⟩, jižní pól = |1⟩ a rovník = rovnoměrná superpozice. Je-li šipka výrazně kratší než poloměr koule, qubit nemá vlastní čistý stav a je provázán s jinými qubity. Krátkou šipku může způsobit také šum: při aktivním modelu šumu qubit ztrácí koherenci a šipka se zkracuje směrem do středu. Zobrazení hlučné koule je zde přibližné; Blochův vektor se průměruje přes trajektorie šumu. V krokovém zobrazení se šipky posouvají bránu po bráně (pouze bez šumu).
Výsledky střelby
Jak často se každý bitový řetězec skutečně objevil v simulovaných měřeních. S několika možnými výsledky, čísla rozptylují náhodně kolem přesné pravděpodobnosti.
Stavový vektor
Komplexní amplituda za pravděpodobností: na druhou velikost amplituda (reálný ² + imaginární ²) dává pravděpodobnost jeho stavu.
| Stát | Reálná část | Imaginární část |
|---|
Základy: Jak to funguje?
Z programu na fyzický qubit
Skutečný kvantový počítač je více než čip. Klasická řídící elektronika překládá obvod do přesných impulsů. V ukázce zobrazených, chlazení, repump, qubit, a odečítání laserů tvarují tyto signály na optickém stole a nasměrují je do stíněné vakuové komory. Tam změní a změří stav qubit; výsledek měření se pak vrátí do klasického počítače.
Qubit a bázové stavy
Klasický bit je buď 0 nebo 1. Kvt může navíc existovat v superpozici dvou základních stavů |0⟩ a |1⟩. S několika qubity, všechny základní stavy jsou zapsány jako bit řetězec, např. |10⟩ pro 2 bity - kde q0 v tomto simulátoru je vždy nejvýznamnější (vlevo) bit.
Superpozice
Kvót v superpozici současně nese komponenty několika základních stavů. Tyto komponenty jsou popsány jako komplexní amplitudy; na druhou velikost amplituda dává pravděpodobnost získání odpovídajícího stavu v měření.
Bloch sféra
Stav jednoho qubitu může být zobrazen jako šipka v kouli: severní pól představuje |0⟩, jižní pól |1⟩, a všechny body na rovníku jsou stejně vážené superpozice - fáze určuje směr podél rovníku, ve kterém šipka bodů. rx, ry, a rz otočte šipku kolem příslušné osy, fázové brány jako S a T otočte ji kolem osy Z. Se zamotanými qubity se šipka scvrkne směrem ke středu koule: individuální qubit pak již nemá čistý stav vlastní - takže provázanost se stává doslova viditelným.
Měření a snímání
measureAll() Měří všechny qubity najednou a končí obvod. Vzhledem k tomu, že jediné měření přináší pouze jeden náhodný výsledek, obvod je koncepčně měřen "záběry" krát s run({ shots }), takže rozdělení pravděpodobnosti se ukáže jako histogram. Přesné pravděpodobnosti jsou navíc vypočteny přímo ze státního vektoru, nezávisle na náhodnosti snímků.
Hadamardova brána
Hadamardova brána h(q) bere qubit z určitého stavu (|0⟩ nebo |1⟩) do stejně vážené superpozice |0⟩ a |1⟩ - při měření přibližně 50% / 50%.
Fázové brány: S a T
Brány s(q) a t(q) nemění pravděpodobnost měření jednoho qubitu; pouze otáčí fází |1⟩ amplituda - S o 90 °, T o 45 °. Ukazují pouze svůj účinek v kombinaci se superpozicí: mezi dvěma Hadamardovými branami, fáze rozhoduje o tom, jak amplitudy kombinují nebo vyruší (rušení). sdg(q) a tdg(q) otočte přesně opačným směrem a zrušte S a T. Pravidlo je: dva T je S, dva S je Z.
CNOT & podmíněné propojení
Brána CNOT cnot(control, target) přesune cílový qubit přesně, když je ovládací qubit ve stavu |1⟩. Je-li ovládací qubit je v superpozici předem, to může vytvořit provázanost - dva qubity pak již nelze popsat nezávisle na sobě, jako v Bell stavu příklad. Je-li kontrolní qubit je v určitém stavu, místo toho, CNOT provádí podmíněný bit flip bez proplétání. Takže ne každý CNOT automaticky vytváří proplétání.
CZ: symetrický příbuzný CNOT
Brána CZ cz(a, b) invertuje znamení amplitudy přesně v případě, že oba qubity jsou |1⟩. Na rozdíl od CNOT, není žádná kontrola a žádný cílový qubit - brána působí identicky na obou kvadratech, což je důvod, proč je nakreslena jako dvě propojené tečky v diagramu. CZ a CNOT mohou být přeměněny na sebe: CNOT je CZ, jehož cílový kvabit je předán přes Hadamardova brána před a po. CZ je centrální stavební blok mnoha algoritmů, jako je Grover vyhledávání.
Stav GHZ: provázanost jako trio
Stav GHZ (pojmenovaný po Greenberger, Horne, a Zeilinger) rozšiřuje princip zvonu státu na tři části: jedna Hadamardova brána plus dva CNOT zaplést všechny tři tak, že měření pouze výnosy |000⟩ nebo |111⟩ Žádný qubit už nemá vlastní stav, informace leží výhradně ve sdílené korelaci.
Deutsch algoritmus: nejmenší kvantová výhoda
V Deutsch algoritmus odpovědi, s jediným hodnocením neznámé věštkyně, otázka, pro které klasický počítač potřebuje dvě hodnocení: je funkce konstantní nebo vyvážený? Trik je poslat vstup přes věštkyně v superpozici - díky rušení, odpověď poté je jednoznačně zakódována v vstupní qubit. Princip za ním (fáze kickback) je v jádru téměř všech kvantových algoritmů.
Grover vyhledávání: zesilovat amplitudy
Grover vyhledávání najde označený záznam v netříděném souboru s podstatně menším počtem dotazů, než je klasicky požadováno. Orákulum označí požadovaný stav s fázovým posunem (zde přes CZ bránu), pak difuzní operátor zesílí označenou amplitudu na úkor všech ostatních. S 2 body, jedna iterace je dost pro měření hit s 100% pravděpodobností.
Vratné přidání: od quantum.add () do obvodu
Editor kódu programu výše překládá quantum.add({ a, b }) do obvodu X, CNOT, a CCNOT brány (Toffoli), který reprodukuje klasické sčítání čistě vratným způsobem: každá brána může být odčiněn přesně, protože žádné informace jsou vyřazeny. CCNOT brána (ccnot(c1, c2, target)) převrací cíl qubit pouze tehdy, když oba ovládací qubity jsou |1⟩ - to je dostačující jako stavební blok k rekonstrukci jakéhokoliv klasického obvodu reverzibilně, včetně plné zmije s care. Vstupy A a B jsou nejprve inicializovány jako definitivní základní stavy (bez superpozice) pomocí X bran. Vzhledem k tomu, že celý obvod tedy prochází pouze určitými stavy namísto superpozic, měření na konci přináší přesně jeden výsledek se 100% pravděpodobností - klasicky správný součet. Proto quantum.add() produkuje deterministický výsledek navzdory kvantové simulaci, namísto několika možných stavů s pravděpodobností pod 100%.
Odčítání: sčítání obráceně
Protože každá brána kvantového obvodu je přesně nezvratná, může být celý obvod s dresem proveden pozpátku - a sčítání se stává odečtením: quantum.subtract({ a, b }) používá přesně brány zmije v opačném pořadí, a tím počítá a − b. To není trik, ale základní princip reverzibilního výpočtu: žádný krok výpočtu ničí informace, každý krok může být odebrán. V této verzi, a ≥ b je vyžadována tak, aby nedošlo k žádné negativní výsledek.
Násobení: quantum.multiply ()
Násobení zde vyplývá z přesně stejných reverzibilních stavebních bloků jako sčítání: podle metody školní knihy, faktor a se přidává několikrát v posunutých pozicích - odpovídající nastaveným bitům faktoru b. Každé částečné přidání je stejný reverzibilní ripple- carry zmije; přenášet toky do dalšího produktu bit pokaždé. Vzhledem k tomu, že rejstřík výsledků roste s produktem, faktory jsou omezeny na 3 bity (0-7) zde - pouze pak se faktor, produkt a nést qubit dohromady zapadnout do tohoto simulátoru 10 kbit.
Divize: quantum.divide ()
Divize také používá pouze vratné stavební bloky: quantum.divide({ a, b }) provádí dlouhé dělení postavené z posunutých, vratných odstínů dělitele ze zbytkového registru; výsledkem je kvocient a zbytek (a = quotient · b + remainder). Protože dividenda, dělitel, kvocient a Výpůjční qubit se musí vejít do 10 qubitů dohromady, dělení je nejvíce silně omezena operace: bits(a) + bits(b) + bits(a÷b) + 1 ≤ 10 musí držet, a dělitel b musí být ≥ 1 (bez dělení na nulu). Pokud vstup nevyhovuje rozpočtu, editor ji místo výpočtu nahlásí.
Skutečná náhodnost: quantum.random ()
Klasické počítače nemohou generovat skutečnou náhodnost - jejich "náhodná čísla" pocházejí z deterministických algoritmů (pseudo- náhodnost). kvantový počítač může: quantum.random({ bits }) Každý bit do 50 / 50 superpozice pomocí Hadamardovy brány, a pouze měření rozhodne - v zásadě nepředvídatelně - která hodnota vyjde ven. Na skutečném kvantovém hardwaru je to fyzicky pravda náhodnost; tento simulátor imituje to s pseudo- náhodnost vašeho prohlížeče.
Simulátor vs. skutečný kvantový hardware
Tento simulátor počítá stav přesně pomocí klasické floating- bod aritmetika ve vašem prohlížeči - to funguje pouze proto, že výhradně velmi malé obvody s až 10 bitů jsou považovány zde. Skutečné kvantové počítače používají fyzické qubity, jsou error-náchylné (decoherence, hluk), a jejich výhoda ukazuje pouze s mnohem větší obvody, které již nemohou být simulované klasicky v praxi. Tento nástroj je nástroj učení, není skutečný kvantový procesor.