1. Ana sayfa
  2. Algoritmalar
  3. Grover ve arama
  4. Kuantum sayımı · Qiskit
Grover ve arama · Qiskit

Kuantum sayımı — kaç hedef var?

Kuantum sayımı (Quantum Counting), bir oracle’ın işaretlediği hedeflerin sayısını (M) tahmin etmek için Grover operatörünü bir “faz kaynağı” olarak kullanır. Böylece Grover’ın kaç iterasyon yapması gerektiği sorusu, kör tahminden ölçülebilir bir faz problemine dönüşür.

  • Hibrit: Grover + QPE
  • İlişki: sin²(θ/2)=M/N
  • Ölçek: O(√N) tipik
  • Örnek: N=4 · precision=3

Kuantum Sayımı Nedir? (derinlemesine analiz)

Kuantum sayımı, sıralanmamış bir uzayda arama kriterine uyan toplam kaç öğe olduğunu (M) tahmin eder. Grover araması “bulma” işini yapar; fakat kaç hedef olduğunu bilmiyorsanız (π/4)·√(N/M) iterasyon kuralı körleşir ve yanlış iterasyon sayısı hedef genliği tepeyi geçip düşürdüğü için başarısız olabilirsiniz.

Bir cümlede öz Kuantum sayımı, Grover’ın döndürme açısını ölçer; sonra bu açıdan M’yi çıkarır.

Neden bu algoritmaya ihtiyaç duyarız?

Klasik olarak “kaç tane kırmızı top var?” sorusunu cevaplamak için listeyi tararsınız (O(N)). Kuantum sayımı ise aynı bilgiyi Grover operatörünü tekrar tekrar “faz kaynağı” olarak kullanıp, fazı ölçerek yaklaşık O(√N) ölçeğinde tahmin edebilir.

  • Grover için doğru durma noktası

    M bilinmiyorsa iterasyon sayısı yanlış seçilebilir; “over-cooking” riski doğar. Kuantum sayımı, iterasyonu veriyle seçmeyi mümkün kılar.

  • İstatistiksel keşif ekibi

    Grover’ı sahaya çıkan dedektif gibi düşünürsek; kuantum sayımı sahaya çıkmadan önce “kaç şüpheli var?” bilgisini toplayan keşif ekibidir.

Mimari yapı: Grover ve QPE hibriti

Ana fikir şudur: Grover operatörü G, başarı/başarısızlık altuzayında durumu belirli bir açıyla döndürür. Bu açı, hedef sayısı ile ilişkilidir: sin2(θ/2)=M/N\sin^2(\theta/2)=M/N. Faz tahmini (QPE) ise bu döndürmeyi “okunabilir” bir ikili sayıya çevirmenin aracıdır.

QPE’nin rolü QPE, bir üniterin özdeğer fazını ölçer. Burada üniter G olduğu için “ölçtüğümüz şey” doğrudan Grover’ın döndürme parametresidir.

Adım adım işleyiş

  1. Hassasiyet register’ı (precision qubits) fazı ölçmek için ayrılır. Her ek kübit, faz çözünürlüğünü (dolayısıyla M tahmin hatasını) yaklaşık yarıya indirir.

  2. Arama register’ı uniform süperpozisyona hazırlanır; Grover operatörü bir döndürme kaynağıdır.

  3. Kontrollü Grover adımları uygulanır: G^{2^j}. Bu, döndürmeyi faz bilgisine kodlar.

  4. Ters QFT (IQFT), precision register’daki fazı ikili sayıya çevirir; ölçüm bu sayıyı verir.

  5. Ölçülen değerden θ çıkarılır; sonra klasik olarak M≈N·sin²(θ/2) ile hedef sayısı hesaplanır.

Qiskit kod örneği

Aşağıdaki örnek, Grover operatörünü kontrollü kuvvetlerle uygular ve precision register’da IQFT ile fazı okur. Bu sayfa eğitim amaçlı “iskelet” gösterir; gerçek sayımda oracle’ın işaretlediği hedef sayısı ve Grover operatörünün tanımı daha dikkatli tasarlanır.

quantum_counting_qiskit.py Python
import numpy as np
from qiskit import QuantumCircuit
from qiskit_aer import AerSimulator
from qiskit.circuit.library import GroverOperator, QFT


def quantum_counting_circuit(oracle: QuantumCircuit, precision: int):
    n_search = oracle.num_qubits
    qc = QuantumCircuit(precision + n_search, precision)

    # 1) Hazırlık: precision + arama register'larını süperpozisyona al
    qc.h(range(precision + n_search))

    # 2) Kontrollü Grover operatörleri: G^(2^j)
    grover_op = GroverOperator(oracle)
    for j in range(precision):
        controlled_grover = grover_op.power(2**j).control()
        qc.append(controlled_grover, [j] + list(range(precision, precision + n_search)))

    # 3) Ters QFT (IQFT): faz → ikili sayı
    qc.append(QFT(precision).inverse(), range(precision))

    # 4) Ölçüm: precision register
    qc.measure(range(precision), range(precision))
    return qc


# Örnek: 2 kübitlik uzay (N=4) — eğitim amaçlı küçük oracle
oracle = QuantumCircuit(2)
oracle.cz(0, 1)  # Basit işaretleme örneği

precision = 3
qc = quantum_counting_circuit(oracle, precision)

simulator = AerSimulator()
counts = simulator.run(qc, shots=1024).result().get_counts()
print(f\"Ölçülen Faz Değerleri: {counts}\")
qiskit AerSimulator · shots=1024 · precision=3 UTF-8 · LF

Kodun derinlemesine analizi

Kod analizi · satır satır

precision register’ı İlk precision kübit, faz tahmini için ayrılır. Bu kübitler “sayacı” taşır; ne kadar çok olursa fazı o kadar ince ölçersiniz.

GroverOperator(oracle) Qiskit, oracle’dan Grover operatörünü üretir. Kuantum sayımında bu operatörün özfazı aradığımız bilgidir; yani Grover burada “bulmak” için değil “faz üretmek” için kullanılır.

power(2**j) + control() QPE şablonu: kontrollü üniterin kuvvetleri uygulanır (G, G², G⁴, ...). Bu kuvvetler, fazı precision register’da ikili basamaklar gibi kodlar.

IQFT QFT(precision).inverse(), birikmiş faz bilgisini ölçülebilir bit desenine dönüştürür. Bu desen doğrudan θ tahminini taşır.

Klasik dönüşüm Ölçülen bit deseninden elde edilen açı ile M≈N·sin²(θ/2) hesaplanır. Bu sayfa devre iskeletine odaklanır; uygulamada birden çok ölçümden medyan/ortalama almak tahmini stabilize eder.

Devre ve doğrulama

Şema iki register’ı gösterir: üstte precision (faz ölçer), altta arama register’ı (oracle + Grover). Kontrollü G^{2^j} blokları fazı biriktirir; ardından IQFT okunabilir hâle getirir.

Kuantum sayımı · precision + arama H → kontrollü Grover kuvvetleri → IQFT → ölçüm
p0 p1 p2 q0 c precision arama H H H H kontrollü Grover G, G², G⁴ ... IQFT faz → bit M M M

Şemayı adım adım oku

  1. Precision kübitleri H ile süperpozisyona alınır; faz “ölçüm alanı” hazırlanır.

  2. Her precision kübit, arama register’ı üzerinde kontrollü G^{2^j} uygular ve faz biriktirir.

  3. IQFT, bu fazı ikili bir sayıya çevirir; ölçüm sonucu θ tahminini taşır.

  4. Klasik tarafta M≈N·sin²(θ/2) ile hedef sayısı elde edilir.

Doğrulama

Hedef: ölçülen faz dağılımının tek bir “bit deseni” etrafında toplanması ve bu desenden tutarlı bir M tahmini üretmek.

  • precision ↑ → hata ↓
  • çıktı faz histogramı
  • not pratikte çoklu deneme önerilir

İçerik geliştirme notları

  • “Kuantumun istatistik memuru”

    Grover’ı “dedektif” gibi anlattıysak, kuantum sayımı sahaya çıkmadan önce istatistiksel keşif yapan ekiptir: hedef sayısını tahmin edip stratejiyi belirler.

  • Hata payı ve precision kübitleri

    Hassasiyet register’ındaki her ek kübit, M tahminindeki çözünürlüğü artırır ve hata payını yaklaşık yarıya indirir. Bu, “kuantum çözünürlüğü” sezgisidir.

  • Shor ile akrabalık

    Bu sayfadaki yapı, Simon/Shor hattındaki “faz tahmini ile bilgi çıkarma” temasına bağlanır. Shor’da fazdan periyot çıkarırız; burada fazdan hedef sayısını çıkarırız.