ToolDingo

Simulator kvantnog računala

Napišite mali kvantni sklop ili opišite račun visoke razine pa ga izravno simulirajte i pregledajte rezultate.

Model šuma

Prava kvantna računala ne računaju savršeno: kubiti su vrlo osjetljivi i pri svakoj neželjenoj interakciji s okolinom – toplinom, elektromagnetskim poljima ili susjednim kubitima – gube dio informacije (dekoherencija). Kvantna vrata i očitanje zato mogu dati pogrešne rezultate. Model šuma omogućuje istraživanje tog učinka.

Primjenjuje se na svaku simulaciju na ovoj stranici – na izvođenja programa visoke razine i na ručno napisane sklopove.
%
Primjenjuje se po vratima i uključenom kubitu, odnosno po očitanom bitu za model očitanja. Odaberite vrijednost za scenarij koji želite istražiti.

Programski kod

Opišite izračun funkcijama quantum.add, quantum.subtract, quantum.multiply, quantum.divide ili quantum.random. Ctrl+Enter pokreće simulaciju. Cijela dokumentacija dostupna je gumbom „Dokumentacija”.

Dokumentacija

Opišite izračun u uređivaču – iz njega se automatski stvara i simulira pravi kvantni sklop. Najviše 4000 znakova. Ctrl+Enter pokreće simulaciju.

IzrazOpisOgraničenja
quantum.add({ a, b })Zbrajanje dvaju brojevaRezultat najviše 4 bita (0–15)
quantum.subtract({ a, b })Oduzimanjea ≥ b, najviše 4 bita
quantum.multiply({ a, b })MnoženjeFaktori 0–7 (3 bita)
quantum.divide({ a, b })Dijeljenje (količnik i ostatak)b ≥ 1; vrlo ograničeno: bitovi(a)+bitovi(b)+bitovi(a÷b)+1 ≤ 10
quantum.random({ bits })Pravi kvantni slučajni broj1–10 bitova

Odaberite primjer

Kod sklopa

Najviše 4000 znakova. Dostupne metode QuantumCircuit: x, y, z, h, s, sdg, t, tdg, rx, ry, rz, cnot, cz, ccnot (drugi naziv: toffoli), swap, measureAll i run. Ctrl+Enter pokreće simulaciju.

Odaberite primjer

Osnove: kako to radi?

Shematski prikaz kvantnog računala: upravljačko računalo usmjerava više laserskih zraka preko optičkog stola prema kubitu u vakuumskoj komori.
Od klasičnog upravljačkog računala preko lasera i optike do fizičkog kubita.

Od programa do fizičkog kubita

Pravo kvantno računalo više je od čipa. Klasička upravljačka elektronika pretvara sklop u precizne impulse. U prikazanom primjeru laseri za hlađenje, ponovno pobuđivanje, upravljanje kubitom i očitanje oblikuju te signale na optičkom stolu te ih usmjeravaju kroz vakuumsku komoru prema fizičkom kubitu.

Kubit i bazna stanja

Klasični bit ima vrijednost 0 ili 1. Kubit može dodatno biti u superpoziciji dvaju baznih stanja |0⟩ i |1⟩. Kod više kubita sva se bazna stanja zapisuju kao niz bitova, primjerice |10⟩ za 2 kubita – pri čemu je q0 u ovom simulatoru uvijek najznačajniji lijevi bit.

Superpozicija

Kubit u superpoziciji istodobno sadrži komponente više baznih stanja. One se opisuju kompleksnim amplitudama; kvadrat apsolutne vrijednosti amplitude daje vjerojatnost dobivanja pripadajućeg stanja pri mjerenju.

Blochova sfera

Stanje jednog kubita može se prikazati kao strelica u sferi: sjeverni pol predstavlja |0⟩, a južni pol |1⟩, dok su sve točke na ekvatoru jednako ponderirane superpozicije – faza određuje smjer strelice duž ekvatora. Rotacijska vrata rx, ryi rz zakreću strelicu oko pripadajuće osi, a fazna vrata poput S i T oko osi Z. Kod spregnutih kubita strelica se skraćuje prema središtu sfere: pojedini kubit tada više nema vlastito čisto stanje – njegovo je stanje određeno samo zajedničkim sustavom.

Mjerenje i ponavljanja

measureAll() mjeri sve kubite odjednom i završava sklop. Budući da jedno mjerenje daje samo jedan nasumičan rezultat, sklop se zamišljeno mjeri zadani broj puta pomoću run({ shots }), kako bi se raspodjela vjerojatnosti prikazala kao histogram. Točne se vjerojatnosti dodatno računaju izravno iz vektora stanja, neovisno o slučajnosti pojedinačnih mjerenja.

Hadamardova vrata

Hadamardova vrata h(q) prevode kubit iz određenog stanja (|0⟩ ili |1⟩) u jednako ponderiranu superpoziciju stanja |0⟩ i |1⟩ – pa se pri mjerenju dobiva približno 50 % / 50 %.

Fazna vrata: S i T

Vrata s(q) i t(q) ne mijenjaju vjerojatnosti mjerenja jednog kubita; mijenjaju samo fazu |1⟩ amplitude – S za 90°, a T za 45°. Učinak postaje vidljiv tek u kombinaciji sa superpozicijom: između dvaju Hadamardovih vrata faza određuje kako se amplitude zbrajaju ili poništavaju (interferencija). Varijante s oznakom dagger sdg(q) i tdg(q) zakreću u točno suprotnom smjeru te poništavaju S i T. Pravilo glasi: dva T čine S, a dva S čine Z.

CNOT i uvjetna spregnutost

Vrata CNOT cnot(control, target) preokreću ciljni kubit samo kada je upravljački kubit u stanju |1⟩. Ako je upravljački kubit prethodno u superpoziciji, može nastati spregnutost – dva se kubita više ne mogu opisati neovisno, kao u primjeru Bellova stanja. Ako je upravljački kubit u određenom baznom stanju, CNOT djeluje kao obična uvjetna operacija.

CZ: simetrični srodnik CNOT-a

Vrata CZ cz(a, b) mijenjaju predznak amplitude samo kada su oba kubita u stanju |1⟩. Za razliku od CNOT-a, nema odvojenog upravljačkog i ciljnog kubita – vrata jednako djeluju na oba, pa su u dijagramu prikazana kao dvije povezane točke. CZ i CNOT mogu se pretvoriti jedno u drugo: CNOT je CZ kojem je ciljni kubit prije i poslije okružen Hadamardovim vratima.

GHZ stanje: trostruka spregnutost

GHZ stanje, nazvano prema Greenbergeru, Horneu i Zeilingeru, proširuje načelo Bellova stanja na tri kubita: jedna Hadamardova vrata i dva CNOT-a sprežu sva tri kubita tako da mjerenje daje samo |000⟩ ili |111⟩ – nikada miješane nizove bitova. Nijedan kubit više nema vlastito stanje; informacija postoji isključivo u zajedničkoj korelaciji.

Deutschov algoritam: najmanja kvantna prednost

Deutschov algoritam jednim vrednovanjem nepoznatog proročišta odgovara na pitanje za koje klasičnom računalu trebaju dva vrednovanja: je li funkcija stalna ili uravnotežena? Ulaz prolazi kroz proročište u superpoziciji, a interferencija zatim pretvara globalno svojstvo funkcije u jedan mjerljivi bit.

Groverovo pretraživanje: pojačavanje amplituda

Groverovo pretraživanje pronalazi označenu stavku u nesortiranom skupu s bitno manje upita nego klasični postupak. Proročište označava traženo stanje promjenom faze, ovdje vratima CZ, a operator difuzije zatim pojačava njegovu amplitudu i smanjuje ostale.

Reverzibilno zbrajanje: od quantum.add() do sklopa

Uređivač programa prevodi quantum.add({ a, b }) u sklop vrata X, CNOT i CCNOT (Toffoli) koji izvodi klasično zbrajanje potpuno reverzibilno: svaka se vrata mogu točno poništiti jer se informacije ne odbacuju. Vrata CCNOT (ccnot(c1, c2, target)) preokreću ciljni kubit samo kada su oba upravljačka kubita |1⟩ – to je dovoljno kao gradivni element za reverzibilnu izvedbu svakog klasičnog sklopa, uključujući potpuni zbrajač s prijenosom. Ulazi A i B najprije se vratima X postavljaju u određena bazna stanja bez superpozicije. Budući da cijeli sklop quantum.add() daje određen rezultat unatoč kvantnoj simulaciji, ispod se ne pojavljuje više mogućih stanja s vjerojatnostima manjima od 100 %.

Oduzimanje: zbrajanje obrnutim redom

Budući da su sva vrata kvantnog sklopa točno invertibilna, cijeli se sklop zbrajača može izvesti unatrag – i zbrajanje postaje oduzimanje: quantum.subtract({ a, b }) upotrebljava upravo vrata zbrajača obrnutim redom i tako računa a − b. To nije trik, nego temeljno načelo reverzibilnog računanja: nijedan korak ne uništava informaciju i svaki se korak može poništiti. U ovoj izvedbi a mora biti veći ili jednak b.

Množenje: quantum.multiply()

Množenje nastaje iz istih reverzibilnih gradivnih elemenata kao zbrajanje: prema školskom postupku faktor a zbraja se više puta na pomaknutim položajima, u skladu s postavljenim bitovima faktora b. Svako djelomično zbrajanje zatim vraća pomoćne kubite u početno stanje.

Dijeljenje: quantum.divide()

I dijeljenje upotrebljava samo reverzibilne gradivne elemente: quantum.divide({ a, b }) izvodi dugo dijeljenje pomaknutim, reverzibilnim oduzimanjima djelitelja iz registra ostatka; rezultat čine količnik i ostatak (a = quotient · b + remainder). Budući da djeljenik, djelitelj, količnik i kubit posudbe zajedno moraju stati u 10 kubita, dijeljenje je najviše ograničena operacija: bits(a) + bits(b) + bits(a÷b) + 1 ≤ 10 mora vrijediti, a djelitelj b mora biti ≥ 1, jer dijeljenje nulom nije dopušteno. Ako unos ne stane u raspoloživi broj kubita, uređivač prikazuje pogrešku umjesto izračuna.

Prava slučajnost: quantum.random()

Klasična računala ne mogu stvarati pravu slučajnost – njihovi „slučajni brojevi” nastaju determinističkim algoritmima, odnosno pseudoslučajno. Kvantno računalo može: quantum.random({ bits }) postavlja svaki bit u superpoziciju 50/50 Hadamardovim vratima, a tek mjerenje – temeljno nepredvidivo – određuje dobivenu vrijednost. Na pravom kvantnom hardveru to je fizički prava slučajnost; simulator je oponaša nasumičnim mjerenjem točne kvantne raspodjele.

Simulator i pravi kvantni hardver

Ovaj simulator točno računa stanje klasičnom aritmetikom s pomičnim zarezom u vašem pregledniku – to je izvedivo samo zato što obrađuje male sklopove s najviše 10 kubita. Prava kvantna računala upotrebljavaju fizičke kubite, izložena su šumu i dekoherenciji te za pouzdane rezultate trebaju složeno upravljanje i ispravljanje pogrešaka.

Česta pitanja

Je li ovo pravo kvantno računalo?
Ne. To je klasični simulator vektora stanja za male sklopove do 10 kubita. Stvarni hardver upotrebljava fizičke kubite.
Koji je kubit q0 u nizu „10”?
q0 je uvijek najznačajniji lijevi bit. Uz 2 kubita x(0) stvara |10⟩.
Što znači shots?
To je broj ponovljenih simuliranih mjerenja od 1 do 10.000. Svako bira ishod prema točnoj raspodjeli.
Zašto neki primjeri prikazuju pogrešku?
Dopušteni su jedan sklop i jedan run() nakon measureAll(). Nevaljani unosi daju razumljivu poruku.
Što rade Hadamardova, X i CNOT vrata?
X zamjenjuje |0⟩ i |1⟩, Hadamard stvara superpoziciju, a CNOT uvjetno preokreće cilj i može stvoriti spregnutost.
Kako nastaje spregnutost?
Hadamard na prvom kubitu pa CNOT na drugom stvara povezane ishode |00⟩ i |11⟩.