I Eksperimento tikslai
Ko isimoksite
- Suprasti kvantinio lygiagretinimo principus ir orakulu savoka
- Ismokti Deutsch algoritma -- pirma kvantini algoritma, rodanti kvantini pranasuma
- Isnagrineti Bernstein-Vazirani algoritma slaptojo bitu eilutes nustatymui
- Suprasti Grover paieskos algoritma -- kvadratini pagreitejima nerikiuotose duomenu bazese
- Istirti amplitudes stiprinimo mechanizma ir juodosios dezes (orakulo) konstrukcija
- Realizuoti algoritmus SpinQ Gemini 2-kubitu sistemoje
II Teorija
Kvantinis pranasumas
Kvantiniai algoritmai naudoja superpozicija ir interferncija, kad isbandytu daug galimybiu vienu metu. Skirtingai nuo klasikiniu algoritmu, kurie tikrina iejimus po viena, kvantinis kompiuteris gali isvertinti funkcija visiems iejimams vienu metu -- tai vadinama kvantiniu lygiagretinimu.
Orakulas (juodoji deze)
Kvantine grandis, igyvendinanti neinoma funkcija f(x). Algoritmo tikslas -- nustatyti f(x) savybes su kuo maziau orakulo iskvietimu. Kvantiskai galima iskvisti orakula visiems iejimams vienu metu naudojant superpozicija.
Kvantine interferncija
Po orakulo issaukimo naudojame vartus (Hadamard ar kitus), kad skirtingos amplitudes konstruktyviai ar destruktyviai interferuotu. Tai leidzia "atsijoti" tinkama atsakyma is superpozicijos be visisko matavimo.
Deutsch algoritmas
Deutsch algoritmas (1985) yra paprasciausias pavyzdys, rodantis kvantini pranasuma. Turime nezinoma 1-bito funkcija f:{0,1} -> {0,1}. Yra 4 galimos funkcijos:
| Funkcija | f(0) | f(1) | Tipas |
|---|---|---|---|
| f1 | 0 | 0 | Pastovi (constant) |
| f2 | 1 | 1 | Pastovi (constant) |
| f3 | 0 | 1 | Subalansuota (balanced) |
| f4 | 1 | 0 | Subalansuota (balanced) |
Klasikiskai reikia 2 iskvietimu nustatyti ar f pastovi, ar subalansuota. Deutsch algoritmas tai padaro su 1 isskaukymu.
Bernstein-Vazirani algoritmas
Turime nezinoma n-bitu "slaptaji eilute" s. Orakulas apskaiciuoja f(x) = s . x (mod 2), kur "." yra vidinis sandauga (XOR po sudauginus bitus). Klasikiskai reikia n uzklausa, kvantiskai -- tik 1 uzklausos.
2-kubitu atveju (SpinQ Gemini) s gali buti: 00, 01, 10 arba 11. Orakulo grandis priklauso nuo s: jei atitinkamas s bitas = 1, taikome CNOT varata tarp to kubito ir pagalbinio kubito.
Grover paieskos algoritmas
Grover algoritmas (1996) sprencia paieskos problema: rasti pazymeta elementa N elementu nerikiuotoje duomenu bazeje. Klasikiskai reikia O(N) uzklausa, kvantiskai -- tik O(sqrt(N)).
Algoritmas susideda is dvieju pagrindiniu operaciju, kartojamu ~sqrt(N) kartu:
1. Orakulas U_f (zymejimas)
Apvercia taikinio busenos amplitude faze: |x> -> (-1)^f(x)|x>. Tai "pazymi" ieskoma busena, bet dar nepadidina matavimo tikimybes. 2 kubitu atveju realizuojamas CZ vartu pagalba.
2. Amplitudes stiprinimas R_s
Atspindi busena apie vidurkio asi: R_s = 2|psi_0>
SpinQ Gemini sistemoje N = 2^2 = 4, todel pakanka tik 1 iteracijos (zymejimas + stiprinimas), kad radus taikini su tikimybe 1.
III Deutsch algoritmo simuliatorius
Pasirinkite funkcija ir stebkite, kaip kvantine grandine vienu orakulo issaukimu nustato, ar funkcija pastovi, ar subalansuota.
Deutsch algoritmas: pastovi vs. subalansuota
IV Bernstein-Vazirani simuliatorius
Pasirinkite slaptaja 2-bitu eilute s ir stebkite, kaip algoritmas ja atranda vienu orakulo issaukimu.
Bernstein-Vazirani: slaptosios eilutes radimas
V Grover paieskos simuliatorius
Pasirinkite taikinio busena ir stebkite, kaip Grover algoritmas sustiprina jos amplitude viena iteracija. Galite eksperimentuoti su skirtingais taikiniais.
Grover paieska: N=4, 2 kubitai
VI Grover algoritmas zingsnis po zingsnio
Stebkite, kaip keiciasi amplitudes kiekviename algoritmo zingsnyje. Naudokite mygtukus, kad pereitumete per kiekviena grandines etapa.
Interaktyvus Grover zingsniu vizualizatorius
VII SpinQ Gemini realizacija
SpinQ Gemini sistemoje visi trys algoritmai realizuojami naudojant branduolinio magnetinio rezonanso (BMR) impulsines sekas. Sistema naudoja du kubitus: vandenilio (H-1) ir fluoro (F-19) branduolius chloroformo molekuleje.
Baziniai vartai ir ju NMR atitikmenys
| Kvantiniai vartai | NMR operacija | Naudojamas |
|---|---|---|
| H (Hadamard) | 90 laipsniu Y sukimas + 180 laipsniu X sukimas | Visi algoritmai |
| X (NOT) | 180 laipsniu X sukimas | Grover (R_s), orakulai |
| CZ (valdomas Z) | Laisva J-rysio evoliucija + vieno kubito sukimai | Grover orakulas, R_s |
| CNOT (valdomas NOT) | CZ + H vartai | Bernstein-Vazirani orakulas |
Orakulo konstrukcija skirtingiems taikiniams
| Taikinys | U_f grandis (Grover) | Paaiskinimas |
|---|---|---|
| |11> | CZ | CZ tiesiogiai apvercia |11> faze |
| |00> | X(x)X -- CZ -- X(x)X | X vartai pavercia |00> i |11>, tuomet CZ |
| |01> | X(Q0) -- CZ -- X(Q0) | X ant Q0 pavercia |01> i |11>, tuomet CZ |
| |10> | X(Q1) -- CZ -- X(Q1) | X ant Q1 pavercia |10> i |11>, tuomet CZ |
Stiprinimo operatorius R_s
Amplitudes stiprinimo operatorius R_s = H^(x2) * R_0 * H^(x2), kur R_0 = X * CZ * X (ignoruojant globalia faze). Pilna grandis N=4 atveju:
VIII Eksperimento procedura
Deutsch algoritmo patikra
Sukurkite grandine kiekvienai is 4 funkciju (f1-f4). Naudokite Hadamard vartus ir atitinkama orakula. Patikrinkite, ar matavimo rezultatas atitinka teorini laukiama: |0> = pastovi, |1> = subalansuota.
Bernstein-Vazirani testas
Sukonstruokite orakula kiekvienai slapatajai eilutei s in {00, 01, 10, 11}. Paleiskite algoritma ir uzsirasyti projekcijos vertes |00>, |01>, |10>, |11> busenoms. Pakartokite 5 kartus ir apskaiciuokite vidurkius.
Grover paieska su taikiniais
Sukonstruokite juodosios dezes U_f grandine kiekvienam taikiniui |00>, |01>, |10>, |11>. Pridekite amplitudes stiprinimo R_s grandine. Paleiskite ir uzsirasyti matavimo rezultatus.
Orakulo konstrukcijos supratimas
Rankiniu budu israsyti CZ + X vartu derinimo logika kiekvienam taikiniui. Patikrinti, ar jusu grandine tikrai apvercia tik numatyto taikinio faze.
Eksperimento vs. simuliacijos palyginimas
Palyginti modeliavimo rezultatus su tikru SpinQ Gemini paleidumu. Apskaiciuoti paklaidas ir nustatyti, kuris eksperimentas arciausiai idealaus rezultato. Analizuoti nukrypimo priezastis (dekoherencija, vartu netikslumas).
Sudeting. analize: N=8 Grover (simuliatoriuje)
Suprojektuokite 3-kubitu Grover algoritma taikiniui |111> (simuliatoriuje). Apskaiciuokite reikiama iteraciju skaiciu: apytiksliai sqrt(8) apie 2.8, todel 2-3 iteracijos. Palyginkite su N=4 atveju.
IX Kontroliniai klausimai
1. Kiek klasikiniu uzklausa reikia isspresti Deutsch problema?
2. Ka Grover algoritmo orakulas U_f daro su taikinio busena?
3. Kiek Grover iteraciju reikia N=4 elementu atveju?
4. Bernstein-Vazirani algoritme, ka koduoja orakulas f(x) = s . x (mod 2)?
5. Kokiu vartu pagrindu SpinQ Gemini realizuojamas Grover orakulas taikiniui |11>?
X Apibendrinimas
Pagrindiniai rezultatai
- Deutsch algoritmas -- pirmas kvantinio pranasuma irodantis algoritmas: 1 uzklausos vietoj 2
- Bernstein-Vazirani -- randa n-bitu slaptaja eilute 1 uzklausos vietoj n
- Grover paieska -- kvadratinis pagreitejimas: O(sqrt(N)) vietoj O(N)
- Visi trys algoritmai sekmingai realizuojami SpinQ Gemini 2-kubitu NMR sistemoje
- Orakulai konstruojami is CZ, CNOT ir X vartu
- N=4 atveju Grover algoritmas randa taikini su 100% tikimybe po 1 iteracijos
XI Programinis pavyzdys ir RQmod alternatyva
Grover paiesos algoritma (taip pat Deutsch ir Bernstein-Vazirani) galima realizuoti
tiek tiesiogine SpinQit/Qiskit grandine Python kalboje, tiek deklaratyviai
.rqmod modelyje, kuri ResilQ Studio
kompiliuoja i ResilQ IR ir QASM2 / SpinQit darba.
Pythonas: Grover paieska N=4 (1 iteracija)
2 kubitu Grover algoritme paslepta busena |11⟩ randama tiksliai vienos iteracijos metu. Orakulas zymejimui naudoja CZ varta, difuzeris — H, X, CZ, X, H seka.
# grover_2q.py — Grover paieska N=4, taikinys |11⟩ (SpinQit) from spinqit import Circuit, BasicSimulator, get_compiler from spinqit.model import H, X, CZ, MEASURE qc = Circuit(2) # 1) Vienoda superpozicija qc.append(H, [0]); qc.append(H, [1]) # 2) Orakulas: pakeicia |11⟩ faze qc.append(CZ, [0, 1]) # 3) Difuzeris: stiprina taikini qc.append(H, [0]); qc.append(H, [1]) qc.append(X, [0]); qc.append(X, [1]) qc.append(CZ, [0, 1]) qc.append(X, [0]); qc.append(X, [1]) qc.append(H, [0]); qc.append(H, [1]) qc.append(MEASURE, [0, 1]) backend = BasicSimulator() exe = get_compiler("native").compile(qc, 0) print(backend.run(exe, 1024).counts) # tikimasi: ~100% |11⟩
Alternatyva: .rqmod modelis
RQmod modelyje algoritmas aprasomas auksciau abstrakcijos lygmeniu — fiksuojamas taikinys, iteraciju skaicius ir sekmes kriterijus. ResilQ Studio sugeneruoja QASM2 grandine ir CBOM iroduma.
// lab8-grover.rqmod audit "lab8-grover-search" { targets = ["spinq-gemini-lab"] layers { use { runtime, openssl } } experiment grover { qubits = [q0, q1] target = "|11⟩" iterations = 1 oracle { gate = cz; on = [q0, q1] } diffuser = standard measure = z_basis shots = 1024 verify { p_target_min = 0.95 } } backend quantum { provider = spinqit emit = qasm2 max_width = 2 } output { formats = [json, cbom, qasm] } }
resilq-q compile lab8-grover.rqmod --out build/lab8
Apie RQmod
RQmod (ResilQ Studio) — autorius prof. dr. Šarūnas
Grigaliūnas — yra deklaratyvi .rqmod kalba ir integruota
aplinka postkvantinės kriptografijos rizikai modeliuoti. Vienu šaltinio failu
aprašomi audito tikslai, sluoksniai (transit / use / rest), QARS-NI
vertinimo langai (Mosca formulė), išvesties formatai (JSON, CBOM, PDF, QASM2)
ir pasirinktinai — kvantinis bekendas (SpinQit, OpenQASM2). Tas pats šaltinio
failas naudojamas tiek saugumo auditui, tiek edukaciniam SpinQ Gemini
eksperimentui.
Daugiau: https://www.rqmod.com