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:

Funkcijaf(0)f(1)Tipas
f100Pastovi (constant)
f211Pastovi (constant)
f301Subalansuota (balanced)
f410Subalansuota (balanced)

Klasikiskai reikia 2 iskvietimu nustatyti ar f pastovi, ar subalansuota. Deutsch algoritmas tai padaro su 1 isskaukymu.

|0> --[H]--[U_f]--[H]-- matavimas Deutsch algoritmo grandine: jei matavimas = |0>, f pastovi; jei |1>, f subalansuota

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.

|0>^n --[H^n]--[U_f]--[H^n]-- matavimas = |s> Bernstein-Vazirani: viena uzklausos pakanka rasti slaptaja eilute s

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>

|0>^n --[H^n]--[ U_f -- R_s ] x sqrt(N) --matavimas Grover algoritmo grandine: N=4 atveju pakanka 1 iteracijos

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

Matavimo rezultatas
|0> -- Pastovi
Orakulo issaukimai
1 (klasikiskai: 2)
Funkcijos tipas
Pastovi

IV Bernstein-Vazirani simuliatorius

Pasirinkite slaptaja 2-bitu eilute s ir stebkite, kaip algoritmas ja atranda vienu orakulo issaukimu.

Bernstein-Vazirani: slaptosios eilutes radimas

Matavimo rezultatas
|00>
Rasta eilute
s = 00
Kvantiniu uzklausa
1 (klasikiskai: 2)

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

Taikinio tikimybe
100%
Iteracijos
1 (sqrt(4) = 2, bet N=4 uztenka 1)
Paspartejimas
4x (klasikiskai: 2.5 vid.)

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

Taikinio busena |11>
Dabartinis zingsnis
Pradine busena |00>
Taikinio amplitude
0.00
Taikinio tikimybe
0%

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 vartaiNMR operacijaNaudojamas
H (Hadamard)90 laipsniu Y sukimas + 180 laipsniu X sukimasVisi algoritmai
X (NOT)180 laipsniu X sukimasGrover (R_s), orakulai
CZ (valdomas Z)Laisva J-rysio evoliucija + vieno kubito sukimaiGrover orakulas, R_s
CNOT (valdomas NOT)CZ + H vartaiBernstein-Vazirani orakulas

Orakulo konstrukcija skirtingiems taikiniams

TaikinysU_f grandis (Grover)Paaiskinimas
|11>CZCZ tiesiogiai apvercia |11> faze
|00>X(x)X -- CZ -- X(x)XX 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:

Q0: |0> --[H]--[ U_f ]--[H]--[X]--[*]--[X]--[H]-- Matavimas | Q1: |0> --[H]--[ U_f ]--[H]--[X]--[CZ]-[X]--[H]-- Matavimas

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?

Teisingai! Klasikiskai reikia 2 uzklausa (patikrinti f(0) ir f(1)), o kvantiskai -- tik 1.
Neteisingai. Klasikiskai reikia patikrinti ir f(0), ir f(1), t.y. 2 uzklausas.

2. Ka Grover algoritmo orakulas U_f daro su taikinio busena?

Teisingai! Orakulas apvercia taikinio busenos faze: |x> -> -|x>, taciau amplitude lieka ta pati. Stiprinima atlieka R_s operatorius.
Neteisingai. Orakulas tik apvercia faze (daugina amplitude is -1), bet amplitudes dydis nesikeicia. Stiprinimas vyksta atskirai.

3. Kiek Grover iteraciju reikia N=4 elementu atveju?

Teisingai! Nors bendra taisykle ~sqrt(N), N=4 atveju viena iteracija tiksliai atveda busena i taikini su tikimybe 1.
Neteisingai. N=4 yra ypatingas atvejis, kur viena iteracija (orakulas + stiprinimas) tiksliai atveda taikinio tikimybe iki 100%.

4. Bernstein-Vazirani algoritme, ka koduoja orakulas f(x) = s . x (mod 2)?

Teisingai! Orakulas apskaiciuoja vidine (scalar) sandauga tarp iejimo x ir slaptosios eilutes s moduliu 2.
Neteisingai. BV orakulas realizuoja f(x) = s . x mod 2, kur "." yra bitine vidine sandauga (XOR po sudauginus).

5. Kokiu vartu pagrindu SpinQ Gemini realizuojamas Grover orakulas taikiniui |11>?

Teisingai! CZ vartai tiesiogiai apvercia |11> busenos faze: CZ|11> = -|11>, o kitos busenos lieka nepakeistos.
Neteisingai. CZ (controlled-Z) vartai yra naturalus pasirinkimas, nes jie apvercia faze tik kai abu kubitai yra |1> busenoje.

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