1. Ana sayfa
  2. Algoritmalar
  3. Grover ve arama
  4. Genlik güçlendirme · Qiskit
Grover ve arama · Qiskit

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.

  • Desen: oracle + diffüzör
  • Geometri: 2B döndürme
  • Hızlanma: O(1/√p)
  • Örnek: 3 kübit · hedef "101"

Genlik Güçlendirme Nedir? (Derinlemesine Analiz)

Genlik güçlendirme (amplitude amplification), düşük başarı olasılığıyla başlayan bir kuantum prosedürünü — örneğin hedef durumlara çok küçük genlik tahsis eden bir süperpozisyonu — birkaç kontrollü iterasyonla ölçümde anlamlı biçimde güçlendirmek için kullanılan genel bir şablondur. Buradaki hedef tek bir klasik çıktıyı mucizevi şekilde garanti etmek değildir; mesele, işaretlenmiş durumlar kümesinin ölçüm histogramında payını sistematik biçimde büyütmektir. Doğru küme baskınlaştıkça yanlış adaylar görece sönümlenir — olasılığı doğrudan “çarpmak” yerine, önce genlik düzleminde yeniden dağıtırsınız.

Şablon soyuttur: bir işaretleyici ünite “iyi” durumları fazdan ayırır; ardından gelen yansıtıcı (Grover bağlamında diffüzör) genlikleri ortalamaya göre yeniden paketleyerek bu işareti olasılık diline taşır. Aynı ikili, uygun başlangıç ve uygun tekrar sayısıyla Grover aramasının omurgasıdır; fakat iskelet başka başlatmalara ve başka oracle tasarımlarına da taşınabilir. Geometrik resim ve “kaç tur?” sorusunun niceliği sonraki başlıklarda; burada yalnızca üst çerçeve kurulur.

Okuma ipucu Olasılık–genlik bağlantısı temel felsefe bölümünde; ortalama etrafında yansımanın matematiksel yüzü Matematiksel sihir: ortalama etrafında yansıma başlığında; O(1/√p) tartışması hızlanma analizi bölümünde özetlenir — böylece bu giriş, komşu paragrafları tekrar yazmadan yol gösterir.

Grover ve genlik güçlendirme Grover araması bu şablonun sıralanmamış aramaya özel bir örneğidir: işaretli çözüm(ler) oracle ile fazdan seçilir, diffüzör ile genlikçe güçlendirilir. Genlik güçlendirme ise aynı kalıbı daha geniş başlatmalara ve oracle tanımlarına taşıyan üst kavramdır; bu sayfadaki kod ve devre bölümleri üç kübitlik soyut bir örnekle bu üst kalıbı somutlaştırır.

Temel Felsefe

Bir önceki başlıkta genlik güçlendirmeyi üst düzey şablon olarak çerçeveledik. Burada ise neden klasikte doğrudan “olasılığı şişirmeye” çalışırken, kuantumda ara bir nesne olan genlik üzerinde çalıştığımızı netleştiriyoruz; bir sonraki başlıktaki yansıma ve döndürme resmi tam olarak bu perspektifin geometrik/planlı tamamlayıcısıdır — burada formül taşımadan kalıyoruz.

Klasik istatistikte bir olayın görülme payını artırmanın doğal yolu daha çok denemedir. Kuantumda Born kuralı gereği bir taban durumunun ölçüm olasılığı, ilgili genliğin kare mutlak değeridir; küçük bir olasılığı büyütmek için önce genlikleri yeniden ayarlamak gerekir. Üniter evrim normu korur; protokol dolayısıyla “toplam şans”ı çarpmak yerine payları işaretli küme lehine kaydırırsınız.

  • Genlikler işaret taşıyabilir

    Genlikler gerçek eksende işaret değiştirebilir veya karmaşık faz taşıyabilir; bu yüzden istenmeyen yolları yıkıcı girişimle birbirini götürecek şekilde hizalamak mümkündür. Yapıcı girişim ise işaretli kümenin genliğini büyütür — olasılık ancak bu süreçten sonra Born ile kareye çekildiğinde yükselir.

  • Ölçüm en sonda

    “Başarı”yı büyüten şey ölçüm değil, ölçümden önce uygulanan üniter yansıma ve döndürme adımlarıdır; ölçüm klasik kaydı seçer ve geri dönüşü genelde zordur. Bu yüzden histogramı şişirmeden önce genlik dağılımını doğru kurmak esastır.

  • Üniterlik · payları kaydırmak

    Kapalı sistemde evrim üniterdir; olasılık vektörünün normu 1 kalır. Genlik güçlendirme “yeni olasılık üretmez”; işaretli ve işaretsiz bölgeler arasındaki iç payları oracle + yansıtıcı tekrarıyla optimize eder — fazla iterasyon tuzağı ise hızlanma analizi bölümünde özetlenir.

  • Bu başlığın sınırı

    İki yansımanın bileşimi, ortalama genlik ve somut kapı düzeni Matematiksel sihir: ortalama etrafında yansıma başlığında açılır. Burada yalnızca neden genlik dilinde düşündüğümüz sabitlenir.

Kısa köprü Bu perspektifi taşıyarak “ortalama etrafında yansıma” bölümüne geçtiğinizde, oradaki yansıtmaların olasılığı değil genlik vektörünü taşıdığını hatırlayın — ölçüm ise en sonda devreye girer.

Matematiksel Sihir: Ortalama Etrafında Yansıma

Önceki başlıkta genlik dilinde düşündüğümüz sabitlendi; burada ise Grover tipi bir turun geometrik kimliği netleşir: tek işaretli hedef için ilginç olan şey, bütün devreyi taşıyan büyük Hilbert uzayında kalmak zorunda olmamanızdır — durum vektörü her adımda, “işaretli taban” ve “geri kalanlar”ın çizdiği iki boyutlu bir düzlem içinde kalır. Bir Grover iterasyonu bu düzlemde iki yansımanın bileşimi olarak yazılır; iki yansımanın bileşimi ise genelde düzlemde bir döndürmedir (yön koruyan açısal kaydırma).

Soyutta işaretli küçük uzayı |ω⟩ ile, onun ortogonal tamamlayıcısındaki “işaretsiz” bileşeni ikinci eksen üzerinde düşünün (tek hedef varsayımında bu resim tam olarak iki boyutludur). Oracle ilk eksende işaret çevirir; diffüzör ise |s⟩ — genelde eşit süperpozisyon — etrafında ikinci bir yansıtma yapar. İkisinin çarpımı, bu iki eksenle gerilen yüzeyde sabit açılı bir döndürme üretir; açının ve optimum tur sayısının ölçekleri bir sonraki başlıkta p ile bağlanır.

İşaretleme (oracle) · Uω

Hesaplama tabanında oracle, işaretlenmiş taban durumlarında genliğin işaretini çevirir; ötekilerde vektörü olduğu gibi bırakır. Tek bir hedef için düşünürsek bu, durumu |ω⟩ doğrultusundaki bileşenin işaretini tersine çeviren bir ünite yansımadır — faz kayması olarak da görülür (ör. −1 çarpanı). Soyut olarak Uω = I − 2|ω⟩⟨ω| biçiminde yazılır: birimden işaretli duruma projeksiyonun iki katını çıkarmak (“hedef projektörü” üzerinden yansıma). Bu adım olasılığı tek başına şişirmez; vektörü başarı / başarısız bileşenlerine göre yeniden etiketler.

Yansıtma (diffüzör) · Us

Standart diffüzör, eşit süperpozisyon durumu |s⟩ (her hesaplama tabanı ketinde genlik 1/√N) etrafında yansıtıcıdır; çoğu kurulumda Us = 2|s⟩⟨s| − I olarak özetlenir. Hesaplama tabanında her bir genlik αj için etki, ortalama etrafında yansıtmadır: α′j = 2μ − αj; burada μ, tüm αj terimlerinin aritmetik ortalamasıdır (toplam N durum). Oracle sonrası hedef genliği ortalamadan yukarı itildiği için bu ikinci yansıma onu daha da büyütür; ortalamaya yakın kalan çok sayıda terim ise göreli olarak küçülür — tam da “ortalama etrafında ayna” sözünün cebirsel karşılığıdır.

Bileşik resim Bir tam tur G = UsUω olarak okunur. İki yansımanın çarpımı genelde düzlemde bir döndürmedir; bu yüzden iterasyon sayısı “ne kadar çok o kadar iyi” değildir. Optimum tur ve klasik O(1/p) ile kuantum O(1/√p) karşılaştırması hızlanma analizi bölümünde özetlenir.

Over-cooking uyarısı Süreç birikimli doğrusal bir yığılma değil; vektörü aynı iki boyutlu düzlemde tekrar tekrar döndürürsünüz. Fazla iterasyon hedef genliğini tepe noktayı geçirip yeniden düşürebilir — durma noktası hem geometrik hem pratik bir tasarım parametresidir (sayısal örnek kod ve devre bölümlerinde somutlaşı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.

quantum_amplitude_amplification.py Python
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)
qiskit Statevector · ölçümsüz UTF-8 · LF

Aynı Devre (İki Temsil)

Yukarıdaki editörde n = 3, hedef "101" ve tek amplitude_amplification_step ile kurulan qc için Qiskit metin çizimi solda; sağda aynı özet şema yer alır. satırları barrier() sınırlarını gösterir; oracle tarafında orta kübitteki X hizalamaları ve H–MCX–H sandviçi metin çıktısında üst üste okunur.

terminal

print(qc) çıktısı · n=3 · hedef "101"

     ┌───┐ ░                 ░ ┌───┐┌───┐          ┌───┐┌───┐      ░ 
q_0: ┤ H ├─░────────■────────░─┤ H ├┤ X ├───────■──┤ X ├┤ H ├──────░─
     ├───┤ ░ ┌───┐  │  ┌───┐ ░ ├───┤├───┤       │  ├───┤├───┤      ░ 
q_1: ┤ H ├─░─┤ X ├──■──┤ X ├─░─┤ H ├┤ X ├───────■──┤ X ├┤ H ├──────░─
     ├───┤ ░ ├───┤┌─┴─┐└───┘ ░ ├───┤├───┤┌───┐┌─┴─┐├───┤├───┤┌───┐ ░ 
q_2: ┤ H ├─░─┤ H ├┤ X ├──────░─┤ H ├┤ X ├┤ H ├┤ X ├┤ H ├┤ X ├┤ H ├─░─
     └───┘ ░ └───┘└───┘      ░ └───┘└───┘└───┘└───┘└───┘└───┘└───┘ ░ 

H · süperpozisyon oracle · faz işareti diffüzör · MCX

svg

Premium devre çizimi

q0 q1 q2 c H H H başlangıç Oracle faz işareti · hedef "101" Diffüzör ortalama etrafında yansıma M M M Statevector · 1 adım hedef · "101" P · uniform ≈ 12.5% Pₘₐₓ · sonra ≈ 25.0% kazanç (tepe / P₀) ≈ 2× uniform → tepe · tipik akış

mor · Hadamard oracle / diffüzör blokları mavi · ölçüm

Canlı devre paneli bu sayfada yok. Aşağıdaki terminal ve SVG (veya özet şema) tam referans görselidir; tarayıcıda simülatör veya örnek histogram çalışmaz. Canlı devre, moment turu ve örnek sayım şu an şu sayfalarda: Bell · Qiskit, GHZ · Qiskit, Bell · Cirq, QRNG · Qiskit, Süper yoğun kodlama, BB84, Teleportasyon, Bernstein–Vazirani ve Grover.
Ne öğreniyoruz? Terminal çıktısı her kübit hattında kapı sırasını verir; SVG aynı örneği bloklar halinde okunaklı özetler. Grover · iki temsil, Deutsch–Jozsa · iki temsil.

Kod Analizi

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 HMCXH 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: HX → (çoklu kontrollü faz) → XH. 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

Bu şema 6 · Aynı Devre (İki Temsil) bölümündeki akışı korur; 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.

Genlik güçlendirme · 3 kübit · hedef "101" H → oracle → diffüzör → ölçüm
q0 q1 q2 c H H H başlangıç Oracle faz işareti · hedef "101" Diffüzör ortalama etrafında yansıma M M M Statevector · 1 adım hedef · "101" P · uniform ≈ 12.5% Pₘₐₓ · sonra ≈ 25.0% kazanç (tepe / P₀) ≈ 2× uniform → tepe · tipik akış
Neden hedef "101"? Kodda "101" dizisindeki 0 olan bit için (orta kübit) uygulanan X kapıları, oracle’ın “tüm kontroller 1” şartını bu özel desene hizalar. Böylece oracle sadece "101" durumunu fazdan işaretler. Diffüzör ise bu faz farkını kullanarak "101"’in “sesini yükseltir”.

Şemayı adım adım oku

  1. Hadamard katmanı, tüm adayları aynı başlangıç genliğiyle hazırlar.

  2. Oracle, “başarı” durumlarını fazdan işaretler; olasılık henüz değişmez.

  3. Diffüzör, ortalama etrafında yansıma ile faz farkını genlik farkına çevirir.

  4. Yeterli iterasyondan sonra ölçüm yapılır; başarı altuzayı baskın hale gelir.

Doğrulama

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 İçerik Geliştirme Notları

  • Grover bir uygulama

    İçerik hattında Grover’ı, soyut şablonda “iyi” durumları seçen karakteristik χ ile tanımlayıp oracle’ı Uω = I − 2|ω⟩⟨ω| (veya çoklu hedefte iyi altuzaya projeksiyon üzerinden) yazmak tutarlıdır. Başlangıçta eşit süperpozisyon |s⟩ hazırlanır; arama uzayı N = 2n iken tek işaretli çözüm özelinde sayfadaki G = UsUω döngüsü, genlik güçlendirme metnindeki genel “başarı testi” kalıbının somut örneğidir — diyagramlarda oracle kutusu mutlaka bu faz işareti diline uyumlu çizilmelidir.

  • Geometrik gösterim

    İki yansımanın bileşimi tek işaretli durumda “iyi / kötü” düzleminde sabit açılı bir döndürme üretir; çizilecek SVG’de vektörün |ω⟩ ile |s⟩ arasında kaldığı 2B düzlem, tur başına açı ve başlangıçta sin θ = 1/√N (tek hedef, eşit başlangıç) ile etiketlenirse metinle çakışma olmaz. Fazla iterasyonu “daha fazla ok” yerine, tepeyi geçen açı olarak göstermek Gk uyarısıyla aynı dili konuşur.

  • Hızlanma notu

    Born kuralı P ≈ |α|2 olduğundan, başarı olasılığı p mertebesinde tutmak için genlik ölçeği tipik olarak √p ister; klasik bağımsız tekrar bu yüzden beklenen sürede O(1/p) doğrusallığı üretir. Genlik güçlendirmede her tur genliği yaklaşık sabit açıyla döndürdüğü için aynı hedefe ulaşmak O(1/√p) oracle çağrısı ölçeğine iner — tablo veya infografikte bu iki satırı yan yana koyarken “olasılık ↔ genlik karesi” köprüsünü küçük bir notla sabitleyin; aksi halde sayılar yüzeysel görünür.

  • İki yansımanın özü

    İçerik hattında bir Grover turu G = UsUω biçiminde özetlenir; diffüzörün hesaplama tabanındaki satır etkisi α′j = 2μ − αj ile “ortalama etrafında yansıma”yı tek satırda sabitler. Ek diyagram veya kısa animasyon düşünülürse bu iki ifade, metinle çelişmeyecek şekilde referans alınabilir; fazla iterasyon uyarısı da aynı geometrik dilde kalmalıdır.