ToolDingo

Simulátor kvantového počítača

Napíšte malý kvantový obvod v JavaScripte, simulujte ho priamo v prehliadači a zobrazte si schému obvodu, pravdepodobnosti aj stavový vektor. Alebo opíšte výpočet na vyššej úrovni (napríklad sčítanie) a sledujte, ako sa automaticky zmení na skutočný reverzibilný kvantový obvod.

Model šumu

Skutočné kvantové počítače nepočítajú dokonale: qubity sú mimoriadne citlivé a pri každej nechcenej interakcii s okolím – teplom, elektromagnetickými poľami či susednými qubitmi – strácajú časť informácie (dekoherencia). Ani operácie hradiel nie sú nikdy úplne presné a zlyhať môže aj záverečné odčítanie. Simulátor predvolene počíta ideálne; tu môžete zapnúť typické modely chýb a priamo sledovať ich vplyv na výsledky.

Platí pre každú simuláciu na tejto stránke – pre spustenia na vyššej úrovni aj ručne napísané obvody.
%
Pri každom hradle a zapojenom qubite alebo pri každom odčítanom bite v modeli odčítania. Vyberte hodnotu pre scenár, ktorý chcete preskúmať.

Kód programu

Opíšte výpočet pomocou quantum.add, quantum.subtract, quantum.multiply, quantum.divide alebo quantum.random. Simuláciu spustíte klávesmi Ctrl+Enter. Úplnú dokumentáciu otvoríte tlačidlom „Dokumentácia“.

Dokumentácia

Opíšte výpočet v editore – automaticky sa z neho vygeneruje a odsimuluje skutočný kvantový obvod. Najviac 4 000 znakov. Ctrl+Enter spustí simuláciu.

VzorecOpisObmedzenia
quantum.add({ a, b })Sčítanie dvoch číselVýsledok najviac 4 bity (0–15)
quantum.subtract({ a, b })Odčítaniea ≥ b, najviac 4 bity
quantum.multiply({ a, b })NásobenieČinitele 0–7 (3 bity)
quantum.divide({ a, b })Delenie (podiel + zvyšok)b ≥ 1; veľmi prísne: bits(a)+bits(b)+bits(a÷b)+1 ≤ 10
quantum.random({ bits })Skutočné kvantové náhodné číslobits 1–10

Vyberte príklad

Kód obvodu

Najviac 4 000 znakov. Dostupné metódy QuantumCircuit: x, y, z, h, s, sdg, t, tdg, rx, ry, rz, cnot, cz, ccnot (alias: toffoli), swap, measureAll, run. Simuláciu spustíte klávesmi Ctrl+Enter.

Vyberte príklad

Základy: ako to funguje?

Schematická zostava kvantového počítača: riadiaci počítač usmerňuje niekoľko laserových lúčov cez optický stôl ku qubitu vo vákuovej komore.
Od klasického riadiaceho počítača cez lasery a optiku až k fyzickému qubitu.

Od programu k fyzickému qubitu

Skutočný kvantový počítač je viac než čip. Klasická riadiaca elektronika prevádza obvod na presné impulzy. V zobrazenom príklade chladiaci, repumpovací, qubitový a odčítací laser tvarujú tieto signály na optickom stole a smerujú ich do tienenej vákuovej komory. Tam menia a merajú stav qubitu; výsledok merania sa potom vráti do klasického počítača.

Qubit a bázové stavy

Klasický bit má hodnotu 0 alebo 1. Qubit môže navyše existovať v superpozícii dvoch bázových stavov |0⟩ a |1⟩. Pri viacerých qubitoch sa všetky bázové stavy zapisujú ako bitový reťazec, napríklad |10⟩ pre 2 qubity, pričom q0 je v tomto simulátore vždy najvýznamnejší bit vľavo.

Superpozícia

Qubit v superpozícii súčasne obsahuje zložky viacerých bázových stavov. Tieto zložky opisujú komplexné amplitúdy; druhá mocnina absolútnej hodnoty amplitúdy udáva pravdepodobnosť získania príslušného stavu pri meraní.

Blochova sféra

Stav jedného qubitu možno znázorniť ako šípku vo sfére: severný pól predstavuje |0⟩, južný pól |1⟩a všetky body na rovníku sú superpozície s rovnakými váhami – fáza určuje smer pozdĺž rovníka, ktorým šípka ukazuje. Rotačné hradlá rx, rya rz otáčajú šípku okolo príslušnej osi, zatiaľ čo fázové hradlá S a T ju otáčajú okolo osi Z. Pri previazaných qubitoch sa šípka skracuje smerom k stredu sféry: jednotlivý qubit už nemá vlastný čistý stav, takže previazanosť sa stáva doslova viditeľnou.

Meranie a opakovania

measureAll() zmeria všetky qubity naraz a ukončí obvod. Keďže jedno meranie poskytne iba jeden náhodný výsledok, obvod sa pomocou run({ shots })koncepčne meria niekoľkokrát („shots“), aby sa rozdelenie pravdepodobnosti zobrazilo ako histogram. Presné pravdepodobnosti sa navyše počítajú priamo zo stavového vektora nezávisle od náhodnosti jednotlivých meraní.

Hadamardovo hradlo

Hadamardovo hradlo h(q) uvedie qubit z jednoznačného stavu (|0⟩ alebo |1⟩) do superpozície stavov |0⟩ a |1⟩ s rovnakými váhami, teda pri meraní približne 50 % / 50 %.

Fázové hradlá: S a T

Hradlá s(q) a t(q) nemenia pravdepodobnosti merania jedného qubitu; otáčajú iba fázu |1⟩ amplitúdy – S o 90°, T o 45°. Ich účinok sa prejaví až v kombinácii so superpozíciou: medzi dvoma Hadamardovými hradlami fáza určuje, ako sa amplitúdy spoja alebo navzájom vyrušia (interferencia). Dagger varianty sdg(q) a tdg(q) otáčajú presne opačným smerom a rušia účinok S a T. Platí: dve hradlá T vytvoria S a dve hradlá S vytvoria Z.

CNOT a podmienená previazanosť

Hradlo CNOT cnot(control, target) preklopí cieľový qubit presne vtedy, keď je riadiaci qubit v stave |1⟩. Ak je riadiaci qubit predtým v superpozícii, môže tak vzniknúť previazanosť – dva qubity už potom nemožno opisovať nezávisle, ako v príklade Bellovho stavu. Ak je však riadiaci qubit v jednoznačnom bázovom stave, CNOT vykoná iba podmienené preklopenie bitu bez previazanosti. Nie každé CNOT teda automaticky vytvorí previazanosť.

CZ: symetrický príbuzný hradla CNOT

Hradlo CZ cz(a, b) obráti znamienko amplitúdy presne vtedy, keď sú oba qubity v stave |1⟩. Na rozdiel od CNOT nemá riadiaci ani cieľový qubit – na oba qubity pôsobí rovnako, preto sa v schéme znázorňuje ako dve spojené bodky. CZ a CNOT možno navzájom previesť: CNOT je CZ, ktorého cieľový qubit prejde pred hradlom aj po ňom cez Hadamardovo hradlo. CZ je základným stavebným prvkom mnohých algoritmov, napríklad Groverovho vyhľadávania.

Stav GHZ: previazanosť trojice

Stav GHZ, pomenovaný podľa Greenbergera, Horna a Zeilingera, rozširuje princíp Bellovho stavu na tri qubity: jedno Hadamardovo hradlo a dve hradlá CNOT previažu všetky tri qubity tak, že meranie poskytne iba |000⟩ alebo |111⟩ – nikdy nie zmiešané bitové reťazce. Žiadny qubit už nemá vlastný stav; informácia spočíva výlučne v spoločnej korelácii.

Deutschov algoritmus: najmenšia kvantová výhoda

Deutschov algoritmus jediným vyhodnotením neznámeho orákula odpovie na otázku, na ktorú klasický počítač potrebuje dve vyhodnotenia: je funkcia konštantná alebo vyvážená? Trik spočíva v odoslaní vstupu cez orákulum v superpozícii – vďaka interferencii je potom odpoveď jednoznačne zakódovaná vo vstupnom qubite. Tento princíp, nazývaný spätný prenos fázy, tvorí jadro takmer všetkých kvantových algoritmov.

Groverovo vyhľadávanie: zosilňovanie amplitúd

Groverovo vyhľadávanie nájde označenú položku v nezoradenej množine s podstatne menším počtom dotazov než klasický postup. Orákulum označí hľadaný stav preklopením fázy (tu hradlom CZ) a difúzny operátor potom zosilní označenú amplitúdu na úkor ostatných. Pri 2 qubitoch stačí jediná iterácia, aby sa hľadaný výsledok zmeral so 100 % pravdepodobnosťou.

Reverzibilné sčítanie: od quantum.add() k obvodu

Editor kódu programu preloží quantum.add({ a, b }) na obvod hradiel X, CNOT a CCNOT (Toffoliho), ktorý vykoná klasické sčítanie čisto reverzibilne: každé hradlo možno presne zvrátiť, pretože sa nestratí žiadna informácia. Hradlo CCNOT (ccnot(c1, c2, target)) preklopí cieľový qubit iba vtedy, keď sú oba riadiace qubity v stave |1⟩ – to postačuje ako stavebný prvok na reverzibilné zostavenie ľubovoľného klasického obvodu vrátane úplnej sčítačky s prenosom. Vstupy A a B sa najprv pomocou hradiel X inicializujú ako jednoznačné bázové stavy (bez superpozície). Keďže celý obvod preto prechádza iba jednoznačnými stavmi, nie superpozíciami, záverečné meranie poskytne presne jeden výsledok so 100 % pravdepodobnosťou – klasicky správny súčet. Preto quantum.add() napriek kvantovej simulácii poskytne deterministický výsledok namiesto viacerých možných stavov s pravdepodobnosťou pod 100 %.

Odčítanie: sčítanie v opačnom smere

Keďže každé hradlo kvantového obvodu je presne invertovateľné, celý sčítací obvod možno vykonať odzadu – a sčítanie sa zmení na odčítanie: quantum.subtract({ a, b }) použije presne tie isté hradlá sčítačky v opačnom poradí a vypočíta a − b. Nejde o trik, ale o základný princíp reverzibilných výpočtov: žiadny krok výpočtu nezničí informáciu a každý krok možno zvrátiť. Táto verzia vyžaduje a ≥ b, aby nevznikol záporný výsledok.

Násobenie: quantum.multiply()

Násobenie tu vzniká z rovnakých reverzibilných stavebných prvkov ako sčítanie: podľa školského postupu sa činiteľ a opakovane sčíta na posunutých pozíciách zodpovedajúcich nastaveným bitom činiteľa b. Každé čiastkové sčítanie používa tú istú reverzibilnú sčítačku s postupným prenosom; prenos zakaždým pokračuje do nasledujúceho bitu súčinu. Keďže výsledkový register rastie so súčinom, činitele sú tu obmedzené na 3 bity (0–7). Iba vtedy sa činiteľ, súčin a qubit prenosu spolu zmestia do 10 qubitov simulátora.

Delenie: quantum.divide()

Aj delenie používa iba reverzibilné stavebné prvky: quantum.divide({ a, b }) vykoná dlhé delenie zostavené z posunutých reverzibilných odčítaní deliteľa od registra zvyšku; výsledkom je podiel a zvyšok (a = quotient · b + remainder). Keďže sa delenec, deliteľ, podiel a qubit výpožičky musia spolu zmestiť do 10 qubitov, delenie je najviac obmedzenou operáciou: bits(a) + bits(b) + bits(a÷b) + 1 ≤ 10 musí platiť a deliteľ b musí byť ≥ 1 (delenie nulou nie je možné). Ak sa vstup nezmestí do limitu, editor to oznámi namiesto vykonania výpočtu.

Skutočná náhodnosť: quantum.random()

Klasické počítače nedokážu vytvárať skutočnú náhodnosť – ich „náhodné čísla“ pochádzajú z deterministických algoritmov (pseudonáhodnosť). Kvantový počítač to dokáže: quantum.random({ bits }) uvedie každý bit pomocou Hadamardovho hradla do superpozície 50/50 a až meranie zásadne nepredvídateľne rozhodne, aká hodnota vznikne. Na skutočnom kvantovom hardvéri ide o fyzikálne skutočnú náhodnosť; tento simulátor ju napodobňuje pseudonáhodnosťou vášho prehliadača.

Simulátor a skutočný kvantový hardvér

Tento simulátor presne počíta stav pomocou klasickej aritmetiky s pohyblivou rádovou čiarkou vo vašom prehliadači. Funguje to iba preto, že sa tu používajú výlučne veľmi malé obvody s najviac 10 qubitmi. Skutočné kvantové počítače používajú fyzické qubity, podliehajú chybám (dekoherencii a šumu) a ich výhoda sa prejaví až pri oveľa väčších obvodoch, ktoré už v praxi nemožno simulovať klasicky. Tento nástroj slúži na učenie, nie je to skutočný kvantový procesor.

Časté otázky

Je to skutočný kvantový počítač?
Nie. Tento nástroj je klasický simulátor stavového vektora, ktorý v prehliadači presne počíta matematiku malého kvantového obvodu (najviac 10 qubitov) pomocou aritmetiky s pohyblivou rádovou čiarkou. Skutočný kvantový hardvér používa fyzické qubity a funguje zásadne odlišne.
Ktorý qubit je q0 v bitovom reťazci, napríklad „10“?
q0 je vždy najvýznamnejší bit vľavo. Pri 2 qubitoch preto x(0) vytvorí stav |10⟩, nie |01⟩.
Čo znamená „shots“?
Shots je počet simulovaných opakovaných meraní (1–10 000). Každé opakovanie náhodne vyberie výsledok merania podľa presného rozdelenia pravdepodobnosti stavového vektora. Samotné presné pravdepodobnosti nezávisia od náhody a zobrazujú sa samostatne.
Prečo niektoré príklady zobrazujú chybové hlásenie?
Rozsah tejto verzie povoľuje presne jeden obvod s presne jedným volaním run() po measureAll(). Neplatné indexy qubitov, hradlá po measureAll(), neplatné uhly alebo počty opakovaní a syntaktické chyby v kóde sa odmietnu so zrozumiteľným chybovým hlásením.
Čo robia Hadamardovo hradlo a hradlá X a CNOT?
X vymení |0⟩ a |1⟩. Hadamardovo hradlo zmení bázový stav na superpozíciu s rovnakými váhami. CNOT preklopí cieľový qubit iba vtedy, keď je riadiaci qubit v stave |1⟩, a v kombinácii so superpozíciou môže vytvoriť previazanosť.
Ako vzniká kvantová previazanosť?
Jeden príklad použije Hadamardovo hradlo na prvý qubit a potom CNOT na druhý. Qubity už nemožno opisovať nezávisle a meranie vytvára korelované výsledky, napríklad |00⟩ alebo |11⟩.