Grover Arama Algoritması

QBronze — S16

Öğr. Gör. Oktay Cesur

2026-01-01

Geçen Konudan Köprü

  • Süperpozisyon, girişim, dönme, yansıma, dolanıklık
  • Phase kickback, çoklu kontrollü kapılar
  • Şimdi: tüm bu araçlar algoritmik bir yapıda

Problem: Yapılandırılmamış Arama

\(N\) elemanlı bir listede \(M\) hedef eleman var (\(M \ll N\)). Listeye yalnızca “bu eleman hedef mi?” sorusu sorulabiliyor.

  • Klasik: En kötü durumda \(O(N)\) sorgu
  • Grover: \(O(\sqrt{N})\) sorgu — kare kök hızlanma

\(N = 1.000.000\), \(M = 1\): - Klasik: ~500.000 sorgu beklenen - Grover: ~785 sorgu (\(\approx \pi/4 \cdot \sqrt{N}\))

Ortalama Etrafında Yansıma (Inversion About the Mean)

Bir vektörün bileşenleri: \([v_1, v_2, \ldots, v_N]\), ortalaması \(\bar{v}\).

Yansıma:

\[ v_i \to 2\bar{v} - v_i \]

  • Ortalamanın üstündekiler aşağı çekiliyor
  • Ortalamanın altındakiler yukarı itiyor

Note

Görsel eklenecek: bar grafiği — amplitüdler, ortalama çizgisi, yansıma sonrası büyüyen hedef amplitüdü.

Grover İterasyonunun Geometrik Anlamı

Grover her adımda iki yansıma yapıyor:

  1. Oracle yansıması: hedef durumun amplitüdünü negatife çevirir
  2. Diffüzör yansıması: \(|+\rangle\) durumuna göre yansıma (inversion about the mean)

İki yansımanın bileşimi = dönme

Note

Görsel eklenecek: iki boyutlu Hilbert uzayında hedef vektör, iki yansıma eksenini ve her iterasyondaki açı artışını gösteren geometrik diyagram.

Grover Algoritmasının Genel Yapısı

  1. Hazırlık: tüm olası durumlarda eşit amplitüdlü süperpozisyon: \(H^{\otimes n}|0\rangle^n\)
  2. Oracle: hedef durumun amplitüdünü negatife çevir
  3. Diffüzör: ortalama etrafında yansıma uygula
  4. Tekrar: adım 2-3’ü \(\lfloor \pi\sqrt{N/M}/4 \rfloor\) kez
  5. Ölçüm: yüksek olasılıkla hedef durum ölçülür
|0⟩^n → H^⊗n → [Oracle → Diffüzör]^k → Ölçüm → hedef

Tek Qubit Temsili — Geometrik Sezgi

İki boyutlu alt uzay: \(|w\rangle\) (hedef durumlar), \(|w^\perp\rangle\) (hedef olmayan durumlar)

Başlangıç durumu bu iki yönün kombinasyonu:

\[ |s\rangle = \sin\theta |w\rangle + \cos\theta |w^\perp\rangle, \quad \sin\theta = \sqrt{M/N} \]

Her Grover iterasyonu \(2\theta\) döndürüyor. \(k\) iterasyon sonrası:

\[ \sin\left((2k+1)\theta\right) \approx 1 \text{ için } k \approx \frac{\pi}{4\theta} \approx \frac{\pi}{4}\sqrt{\frac{N}{M}} \]

Note

Görsel eklenecek: iki boyutlu Bloch benzeri görsel — başlangıç açısı, her iterasyon dönme, hedef yönüne yaklaşma.

Qiskit ile Grover Uygulaması

from qiskit import QuantumCircuit, QuantumRegister, ClassicalRegister
from qiskit_aer import AerSimulator
from qiskit.visualization import plot_histogram

n = 3  # 8 elemanlı liste (2^3)
target = '101'  # hedef eleman

q = QuantumRegister(n)
c = ClassicalRegister(n)
qc = QuantumCircuit(q, c)

# Hazırlık: süperpozisyon
qc.h(q)

# Grover iterasyonu (tek iterasyon, N=8, M=1 için ~π/4*√8≈2.2 → 2 iterasyon)
for _ in range(2):
    # Oracle: hedef durumun fazını işaretle
    # ... (hedef bağlı MCX yapısı)
    
    # Diffüzör: ortalama etrafında yansıma
    qc.h(q)
    qc.x(q)
    qc.h(q[-1])
    qc.mcx(list(q[:-1]), q[-1])
    qc.h(q[-1])
    qc.x(q)
    qc.h(q)

qc.measure(q, c)

Dikkat — Karıştırılabilecek Noktalar

İterasyon sayısı önemli — çok fazla bozuyor
\(k_{\text{opt}} \approx \pi\sqrt{N/M}/4\). Fazlası amplitüdü tekrar düşürüyor.

Oracle hedef bilmiyor, sadece tanıyor
Oracle “bu hedef mi?” sorusunu cevaplayabiliyor ama listeyi gezmiyoruz. Bu ayrım önemli.

Kare kök hızlanma eksponansiyel değil
\(O(\sqrt{N})\)\(O(\log N)\). Grover güçlü ama her problemi üstel hızlandırmıyor.

Özet

  1. Grover \(O(\sqrt{N})\) sorguda yapılandırılmamış aramayı çözüyor
  2. Oracle: hedef durumun amplitüdünü negatife çeviriyor (phase kickback)
  3. Diffüzör: ortalama etrafında yansıma (inversion about the mean)
  4. Her iterasyon \(2\theta\) döndürüyor — \(\pi/(4\theta)\) iterasyon yeterli
  5. Geometrik yorum: iki boyutlu alt uzayda hedef yönüne yaklaşma

QBronze hattı tamamlandı.