Genlik güçlendirme — Grover’ın genelleştirilmiş iskeleti
Genlik güçlendirme (amplitude amplification), bir kuantum sisteminde “istenen” durumların ölçümde görünme olasılığını, istenmeyen durumları girişimle sönümleyerek sistematik biçimde artıran genel bir operatör desenidir. Grover araması bunun en ünlü uygulamasıdır: özel bir oracle ve özel bir başlangıç dağılımı seçer.
Genlik Güçlendirme Nedir? (Derinlemesine Analiz)
Genlik güçlendirme, bir “başarı” altuzayına düşme olasılığı düşük olan bir kuantum prosedürü, birkaç kontrollü iterasyonla yüksek olasılıkla başarıya taşıyan genel bir şablondur. Buradaki amaç tek bir çıktı değil; istenen durumlar kümesini ölçümde baskın hâle getirmektir.
Temel felsefe
Klasik istatistikte bir olayın olasılığını büyütmek için deneme sayısını artırırız. Kuantum mekaniğinde ise olasılığın kendisi değil, onun karekökü olan genlik üzerinde çalışırız.
-
Genlikler işaret taşıyabilir
Genlikler negatif/karmaşık olabildiği için, istenmeyen sonuçları yıkıcı girişimle birbirini yok edecek şekilde hizalayabiliriz.
-
Ölçüm en sonda
“Başarı”yı büyüten şey ölçüm değil, ölçümden önce uygulanan yansıma/döndürme adımlarıdır; ölçüm sadece sonucu okur.
Matematiksel sihir: ortalama etrafında yansıma
Protokol, Hilbert uzayında iki boyutlu bir düzlemde (başarı altuzayı + başarısız altuzay) döndürme gibi okunabilir. Bir iterasyon, iki yansımanın birleşimidir.
İşaretleme (oracle)Uω
Oracle, istenen durumu |ω⟩ fazdan işaretler: genliğin işaretini çevirir. Sezgi: vektörü “hedef eksenine” göre yansıtmak.
Yansıtma (diffüzör)Us
Diffüzör, genlikleri “ortalama genlik” etrafında yansıtır. İşaretlenmiş durum ortalamadan uzaklaştığı için yansıma sonrası daha büyük pozitif genlik kazanır; diğerleri ortalamaya yakın kaldığı için göreli olarak küçülür.
Hızlanma analizi
Eğer başlangıç prosedürünüzün başarı olasılığı p ise, klasik tekrar denemede beklenen süre O(1/p) ölçeğindedir. Genlik güçlendirme, aynı başarıyı tipik olarak O(1/√p) iterasyon ölçeğine indirir.
| Yaklaşım | Başarı olasılığı | Beklenen deneme / iterasyon |
|---|---|---|
| Klasik tekrar deneme | p | O(1/p) |
| Genlik güçlendirme | p (aynı başlangıç) | O(1/√p) |
Qiskit kod örneği
Aşağıdaki örnek, 3 kübitlik bir sistemde hedef bit dizisini ("101") oracle ile fazdan işaretleyip, diffüzör ile genliğe çeviren tek bir güçlendirme adımı kurar. Ardından ölçüm yapmadan önce durum vektöründen olasılıkları okuruz.
from qiskit import QuantumCircuit
from qiskit.quantum_info import Statevector
def amplitude_amplification_step(qc, target_bitstring: str):
n = qc.num_qubits
# 1) ORACLE (İşaretleme) — hedef durumu fazdan işaretle
for i, bit in enumerate(target_bitstring):
if bit == "0":
qc.x(i)
qc.h(n - 1)
qc.mcx(list(range(n - 1)), n - 1) # Çoklu kontrollü X
qc.h(n - 1)
for i, bit in enumerate(target_bitstring):
if bit == "0":
qc.x(i)
qc.barrier()
# 2) DIFFUSER (Yansıtma) — ortalama etrafında yansıtma
qc.h(range(n))
qc.x(range(n))
qc.h(n - 1)
qc.mcx(list(range(n - 1)), n - 1)
qc.h(n - 1)
qc.x(range(n))
qc.h(range(n))
qc.barrier()
# Uygulama: 3 kübitlik sistemde "101" durumunu güçlendirelim
target = "101"
qc = QuantumCircuit(3)
qc.h(range(3)) # Eşit süperpozisyonla başla
qc.barrier()
# Bir adım güçlendirme uygula
amplitude_amplification_step(qc, target)
# Ölçüm yapmadan önce durum vektöründen olasılıkları oku
state = Statevector.from_instruction(qc)
probs = state.probabilities_dict()
print(f"Hedef durum '{target}' olasılığı: {probs.get(target, 0.0):.4f}")
print("Tüm dağılım:", probs)
Kod analizi · satır satır
Importlar QuantumCircuit devreyi kurar. Statevector ise ölçüm yapmadan önceki genlik/olasılık dağılımını okumak için kullanılır; yani “genlik güçlendirme gerçekten bir şey yaptı mı?” sorusuna doğrudan cevap verir.
amplitude_amplification_step(qc, target) Bu fonksiyon bir iterasyon (Grover step) uygular: önce oracle ile hedefi fazdan işaretler, sonra diffüzör ile bu faz farkını genlik farkına çevirir. Birden çok iterasyon yapmak için bu fonksiyonu döngüyle çağırırsınız.
Oracle kısmı: “0” bitlerini X ile çevirme Hedef bit dizisi "101" iken, çoklu kontrollü kapının “tüm kontroller 1” şartına uyabilmesi için hedefte 0 olan konumlara geçici X uygulanır. Böylece işaretleme, doğrudan hedef duruma hizalanır; sonra aynı X'ler geri alınır.
qc.mcx(...) ile faz işaretleme Burada H–MCX–H sandviçi, çoklu kontrollü Z etkisi üretir: hedef durumun fazı tersine döner. Yani oracle olasılığı değil, fazı değiştirir.
Diffüzör: ortalama etrafında yansıma Diffüzör bloğu standart şablondur: H → X → (çoklu kontrollü faz) → X → H. Sezgi: “uniform” durum ekseni etrafında yansıma yaparak işaretli durumun genliğini büyütür.
qc.barrier() Bariyerler matematiği değiştirmez; devreyi okurken “oracle bitti / diffüzör başladı” gibi sahneleri net ayırır ve transpiler optimizasyonunun bölümleri iç içe geçirmesini engeller.
Statevector ile doğrulama probabilities_dict() çıktısında hedef anahtarın ("101") olasılığının başlangıca göre yükselmesi beklenir. İterasyon sayısını artırırsanız olasılık bir noktada tepe yapar; sonra “over-cooking” nedeniyle tekrar düşebilir.
Devre ve doğrulama
Aşağıdaki şema tek bir güçlendirme iterasyonunu görselleştirir: süperpozisyon → oracle (faz işareti) → diffüzör (ortalama etrafında yansıma) → (opsiyonel) ölçüm. 3 kübitlik örnekte hedef "101" seçilmiştir.
Şemayı adım adım oku
-
Hadamard katmanı, tüm adayları aynı başlangıç genliğiyle hazırlar.
-
Oracle, “başarı” durumlarını fazdan işaretler; olasılık henüz değişmez.
-
Diffüzör, ortalama etrafında yansıma ile faz farkını genlik farkına çevirir.
-
Yeterli iterasyondan sonra ölçüm yapılır; başarı altuzayı baskın hale gelir.
Hedef: tek adım sonunda bile "101" olasılığının uniform başlangıca göre artması.
- başlangıç ≈ 1/8
- sonra > 1/8
- not iterasyon sayısı arttıkça tepe yapar
Tasarım ve içerik geliştirme notları
-
Grover bir uygulama
Grover, genlik güçlendirmenin “arama” problemine uyarlanmış halidir. Aynı şablon, “başarı testi” yazabildiğiniz her yerde yeniden kullanılabilir.
-
Geometrik gösterim
Hilbert uzayındaki vektör döndürmeyi gösteren küçük bir SVG, neden iterasyon sayısını abartmamak gerektiğini (fazla döndürme riski) çok net anlatır.
-
Hızlanma notu
Klasik başarı süresi O(1/p) iken, genlik güçlendirme O(1/√p) ölçeğine indirir. Bu fark, “genlik” ile “olasılık” ayrımını doğrudan görünür kılar.