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.
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.
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: . Faz tahmini (QPE) ise bu döndürmeyi “okunabilir” bir ikili sayıya çevirmenin aracıdır.
Adım adım işleyiş
-
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.
-
Arama register’ı uniform süperpozisyona hazırlanır; Grover operatörü bir döndürme kaynağıdır.
-
Kontrollü Grover adımları uygulanır: G^{2^j}. Bu, döndürmeyi faz bilgisine kodlar.
-
Ters QFT (IQFT), precision register’daki fazı ikili sayıya çevirir; ölçüm bu sayıyı verir.
-
Ö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.
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}\")
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.
Şemayı adım adım oku
-
Precision kübitleri H ile süperpozisyona alınır; faz “ölçüm alanı” hazırlanır.
-
Her precision kübit, arama register’ı üzerinde kontrollü G^{2^j} uygular ve faz biriktirir.
-
IQFT, bu fazı ikili bir sayıya çevirir; ölçüm sonucu θ tahminini taşır.
-
Klasik tarafta M≈N·sin²(θ/2) ile hedef sayısı elde edilir.
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.