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.
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”.
Ovaj je kod automatski generiran iz programa iznad i izravno simuliran. Ovdje ga možete ručno urediti i ponovno pokrenuti.
Generirani je sklop ručno izmijenjen. Grupiranje registara zato je skriveno u dijagramu; ponovno pokretanje programa iznad prebrisat će te promjene.
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.
Dijagram sklopa
Prikaz koraka pokazuje vjerojatnosti i vektor stanja neposredno nakon odabranih vrata. Rezultati mjerenja u nastavku uvijek se odnose na cijeli sklop.
Format OpenQASM 2.0
OpenQASM 2.0 široko je korišten format za razmjenu kvantnih sklopova koji, među ostalima, čita Qiskit. Napomena o redoslijedu bitova: ovaj simulator q0 čita kao najznačajniji lijevi bit, dok Qiskit q[0] čita kao najmanje značajan bit – zato se nizovi bitova prikazuju obrnutim redoslijedom.
Vjerojatnosti
Vjerojatnost mjerenja svakog mogućeg niza bitova, točno izračunana iz vektora stanja. Smjer čitanja: q0 je lijevi, najznačajniji bit.
Blochove sfere
Stanje svakog pojedinog kubita prikazano je strelicom u Blochovoj sferi: sjeverni pol = |0⟩, južni pol = |1⟩, a ekvator = jednako ponderirana superpozicija. Ako je strelica osjetno kraća od polumjera sfere, kubit nema vlastito čisto stanje – spregnut je s drugim kubitima.
Rezultati mjerenja
Koliko se puta svaki niz bitova stvarno pojavio u simuliranim mjerenjima. Kada postoji više mogućih rezultata, brojevi nasumično odstupaju oko točnih vjerojatnosti.
Vektor stanja
Kompleksne amplitude iz kojih proizlaze vjerojatnosti: kvadrat apsolutne vrijednosti amplitude (realni² + imaginarni²) daje vjerojatnost pripadajućeg stanja.
| Stanje | Realni dio | Imaginarni dio |
|---|
Osnove: kako to radi?
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.