1. Ana sayfa
  2. Algoritmalar
  3. QFT ve faz
  4. Kuantum faz tahmini (QPE)
QFT ve faz · Qiskit

Kuantum Faz Tahmini (QPE)

QPE, bir üniter operatörün özdeğerindeki görünmez fazı θ \theta yakalayıp ölçülebilir bit dizisine çevirir. Temelde iki register’ın “dansı” vardır: üstte hassasiyet (counting) register’ı, altta özvektör (state) register’ı.

  • Girdi: U , ψ U, |\psi\rangle (özvektör)
  • Çıktı: θ 0. b 1 b 2 b t \theta \approx 0.b_1b_2\ldots b_t
  • Kalp: kontrollü U 2 k U^{2^k}
  • Araç: IQFT

Kuantum Faz Tahmini (QPE) Nedir?

QPE, bir üniter operatörün U U özvektörü ψ |\psi\rangle verildiğinde, ilgili özdeğerin normalize faz kesrini θ [ 0 , 1 ) \theta \in [0,1) tahmin etme problemidir. Burada “özdeğerin fazı”, özdeğerin tamamını değil; birim çember üzerindeki konumu ifade eden üssü belirtir (aşağıdaki köşe kutusu).

Sonlu boyutta bir üniter operatörün her özdeğeri λ \lambda , karmaşık düzlemde birim çember üzerindedir: | λ | = 1 |\lambda|=1 . Bu yüzden her özdeğeri tek bir tam tur içindeki konumla kodlamak doğaldır: λ = e 2 π i θ \lambda = e^{2\pi i \theta} . θ \theta bir radyan açısı değildir; 2 π 2\pi radyanın kaçıncı kesrine denk geldiğini söyleyen tam tur kesridir (İngilizce literatürde “phase fraction” / “normalized phase”). Örneğin θ = 1 / 4 \theta=1/4 , karmaşık düzlemde çeyrek tur ( π / 2 \pi/2 radyan) anlamına gelir.

ψ |\psi\rangle tam olarak bu özdeğere ait bir özvektör ise U ψ = λ ψ U|\psi\rangle = \lambda |\psi\rangle yazılır; yukarıdaki parametrizasyonla bu, U ψ = e 2 π i θ ψ U|\psi\rangle = e^{2\pi i \theta}|\psi\rangle ile aynı şeydir. Pratikte ψ |\psi\rangle genelde bir oracle/hazırlık devresiyle yaklaşık olarak hazırlanır; QPE’nin hata analizi bu yakınlığı da hesaba katar.

Temel denklem

U ψ = e 2 π i θ ψ U |\psi\rangle = e^{2\pi i \theta} |\psi\rangle

Özdeğer λ = e 2 π i θ \lambda=e^{2\pi i\theta} olduğunda üssün sanal kısmı fazı taşır; klasik olarak tek ölçümle bu üssü doğrudan okuyamazsınız. QPE’nin yaptığı şey, bu faz bilgisini üst register’a faz geri tepmesi ile “yazmak” ve ardından IQFT ile bit dizisine çevirmektir (3 · Mimari, 4 · Kontrollü‑U, IQFT).

Neden Bu Algoritmayı Kullanıyoruz?

Klasik dünyada devasa bir matrisin tüm özdeğer/özvektör yapısını genel olarak çıkarmak, boyut büyüdükçe çok pahalıdır; tam spektrum ya da çok sayıda özçifti hedefleyen yöntemlerde maliyet sıklıkla boyuta karşı üstel veya en azından “istediğiniz kesinliği her zaman ucuz tutamazsınız” rejimine kayar. QPE ise aynı problemi çözmeyi iddia etmez: tek bir özdeğerin faz kesrini, verilen bir özvektör üzerinde ve kontrollü ünite uygulamalarıyla okumayı hedefler.

Bu farkı net tutmak önemlidir. QPE’nin girdi modeli kabaca şöyledir: ünite U U ve onun bir özvektörüne yakın bir durum hazırlanabiliyor; devre de U 2 k U^{2^k} biçiminde kontrollü uygulanabiliyor. Bu koşullarda, üst register’a yazılan faz bilgisini IQFT ile bit dizisine çevirmek; hassasiyet kübiti sayısı t t ile seçilen çözünürlükte polinom (tipik olarak O ( t 2 ) O(t^2) kapı, QFT varsayımıyla) ölçeklenir — ama buradaki “polinom”, kontrollü U U bloğunun kendi maliyetine ek olarak gelir; oracle ağırsa QPE de ağırdır.

Özetle motivasyon: faz, birçok ileri algoritmanın “gizli parametresi”dir (1 · QPE nedir?). Klasik yoldan bu parametreyi çıkarmak zor olabilir; QPE ise doğru hazırlık altında onu ölçülebilir bir bit desenine taşımak için standart bir şablondur — sonraki bölümlerde bu şablonun register’lara ve kontrollü güçlere nasıl yayıldığını açıyoruz.

QPE bir “faz dönüştürücü”dür Doğrudan her optimizasyonu veya lineer cebir problemini çözmez; fakat Shor (periyot), kuantum sayımı, kimyasal simülasyonda enerji seviyeleri gibi zincirlerde ünite fazını bir sonraki klasik adıma aktaran ortak katmandır. Beklenti yönetimi: tek başına sihirli hız değil; fazı okunur hâle getiren yapı taşıdır.
Kıyasın dürüstlüğü “Klasik eigen çözemez / kuantum çözer” ikiliğine düşmeyin; doğru soru: elimizde hangi ünite, hangi durum hazırlığı ve hangi kontrollü güç bütçesi var? Bu üçü uygun değilse QPE de cevap üretmez — 3 · Mimari ve 4 · Kontrollü‑U bunun devre yüzünü verir.

Mimari Yapı: İki Register’ın Dansı

QPE devresi iki ayrı register arasında bir köprü kurar: üst hatlar fazı “ölçülebilir biçimde kodlamak” için seçilir; alt hatlar U U ’nun özvektörünü taşıyacak şekilde hazırlanır. Asıl “ağ” ise iki grubu birbirine bağlayan çok kübitli ünite bloklarıdır; klasik anlamda iki kablo arasında veri aktaran bir yol değil, tensör uzayında ortak uygulanan kontrollü kapılardır.

Tipik akış şöyle düşünülür: önce alt register’da ψ |\psi\rangle (veya buna yakın bir durum) hazırlanır; ardından üst register’a Hadamard katmanı gelir ki hassasiyet kübitleri süperpozisyonda “hangi deneyi yapıyorum?” dalını seçebilsin. Köprü aşamasında üstteki her kübit, alttaki register üzerinde üniteyi belirli bir üssün altında koşullu uygular — bu blokların tam sırası ve üssün seçimi 4 · Kontrollü‑U bölümünde açılır; burada önemli olan, iki tarafın tek tek klasik bit dizisi gibi değil, ortak kuantum durumu olarak bağlanmasıdır.

Köprünün taşıdığı şey doğrudan “alt kübitler → üst kübitlere kopyalanan klasik bilgi” değildir: özdeğere bağlı faz, kontrollü U U uygulamaları sırasında faz geri tepmesiyle üst hattaki göreli fazlara yazılır; alt register çoğu kurulumda özvektör üzerinde kalır. Bundan sonra IQFT yalnızca üst register üzerinde çalışır ve faz desenini klasik okunaklı bir bit etiketine dönüştürür — yani “ağın çıktısı” ölçüm öncesi üstte toplanan faz ilişkileridir.

  • Hassasiyet register’ı (counting)

    Üstteki t t kübit, fazı hangi çözünürlükte okuyacağımızı belirler. Kübit sayısı arttıkça, θ \theta ikili kesir olarak daha çok basamakla yakalanır. Başta Hadamard ile açılan bu hatlar, köprü boyunca alttaki ünite deneylerinin sonucunu kendi fazlarında biriktirir; sonda IQFT bu birikimi düzenler.

  • Özvektör register’ı (state)

    Alttaki kübit(ler), U U operatörünün özvektörünü ψ |\psi\rangle taşır. Bu örnekte tek kübitlik ψ = 1 |\psi\rangle = |1\rangle hazırlıyoruz. Köprü sırasında bu hatlar ünite kapılarının hedef uzayıdır; kontrol ise üst hassasiyet kübitlerinden gelir.

  • Çapraz bloklar — köprünün kendisi

    İki register’ı gerçekten birbirine bağlayan şey, çok kübitli kontrollü‑ U 2 k U^{2^k} kapılarıdır: kontrol üstte, ünite gücü altta. Böylece alt özvektör üzerinde yapılan “aynı dal içinde” ünite işlemleri, üstte girişim yapabilecek göreli fazlara dönüşür. Bu mekanizmanın adı literatürde faz geri tepmesidir; iç yüzeyini 4 · Kontrollü‑U özetinde topluyoruz.

Pedagojik bölme “İki register” çizimi öğretim içindir; matematiksel olarak durumlar tek bir Hilbert uzayında birleşik yazılır. Yine de devre okurken üst/alt ayrımı, hangi hatların önce hazırlandığını, hangi hatların IQFT ile ölçüme gittiğini takip etmeyi kolaylaştırır.

Algoritmanın Kalbi: Kontrollü‑U Güçleri

Üstteki her kübit, alttaki register üzerine U U operatörünü artan kuvvetlerde kontrollü uygular: U 2 0 , U 2 1 , U 2 2 , U^{2^0}, U^{2^1}, U^{2^2}, \ldots . Bu düzen, θ \theta ’nın (normalize) ikilik kesrini okumak için gereken ikilik ayrıştırmayı devreye gömer: her üst hat, farklı bir 2 j 2^j ölçeğinde bir faz farkı taşır.

ψ |\psi\rangle bir özvektör ve U ψ = e 2 π i θ ψ U|\psi\rangle = e^{2\pi i\theta}|\psi\rangle ise, aynı durum üzerinde U 2 j U^{2^j} özdeğer fazını 2 j θ 2^j\theta tam tur kesrine kadar “büyütür”. Kontrollü uygulama bu fazı — klasik kabloyla değil, dolanıklık ve girişim yoluyla — ilgili üst kübitin göreli fazına aktarır; alttaki dal özvektör üzerinde kalır, bu yüzden ölçüm bazında çoğu zaman “aynı ψ |\psi\rangle ” izlenimi verir.

Sayfadaki öğretici kodda bu güçler, iç içe döngüyle aynı fiziksel kapıyı birden çok kez uygulayarak (repetitions) kurulur; böylece üstteki her counting hattı için toplam etki U 2 j U^{2^j} olur. Satır satır denklem ve cp yorumunu 7 · Kod analizi bölümünde kilitleyeceğiz; burada odak, “neden tam olarak bu üsler?” sorusunun cevabıdır.

Phase kickback (faz geri tepmesi) Kontrollü‑ U U uygulandığında alt register çoğu zaman “değişmiyor gibi” görünür; ancak özdeğer fazı, kontrol kübitinin fazına yazılır. QPE’yi ayakta tutan sihir budur. Üst register Hadamard katmanından sonra süperpozisyonda olduğundan, bu geri tepen fazlar üstte girişim deseni oluşturur; IQFT tam da bu deseni ikilik bir ölçüm sonucuna çevirmek için konur.
IQFT’ye köprü Kontrollü‑ U 2 j U^{2^j} bloğu bittiğinde counting register, faz bilgisini taşıyan bir süperpozisyondadır ama henüz “doğrudan okunaklı bit etiketi” değildir. Bir sonraki bölümdeki örnek kodda IQFT bu bilgiyi ölçümle uyumlu hâle getirir — özetle bu bölümün çıktısı üst hattaki faz ilişkileridir, bir sonraki adımın girdisi ise bu fazların ikilik yoğunluğudur.

Qiskit Kod Örneği

Aşağıdaki örnekte U U ’yu, tek kübitlik bir kontrollü faz kapısı (cp(angle)) ile temsil ediyoruz. Hedef faz olarak θ = 1 / 8 \theta=1/8 seçilirse, 3 bit hassasiyetle beklenen çıktı 001 (ikili) civarında yoğunlaşır.

qpe_qiskit.py Python
import numpy as np
from qiskit import QuantumCircuit
from qiskit_aer import AerSimulator
from qiskit.circuit.library import QFT

def qpe_circuit(precision, angle):
    # Toplam: precision (t) + 1 (state)
    qc = QuantumCircuit(precision + 1, precision)
    
    # 1. State Register Hazırlığı: Özvektörü |1> yapıyoruz
    qc.x(precision)
    
    # 2. Precision Register Hazırlığı: Hadamard katmanı
    qc.h(range(precision))
    qc.barrier()
    
    # 3. Kontrollü-U Uygulaması (Gizli fazı içeren kapı)
    repetitions = 1
    for counting_qubit in range(precision):
        for i in range(repetitions):
            # Buradaki cp(angle) gizli fazımızı temsil eder
            qc.cp(angle, counting_qubit, precision)
        repetitions *= 2
    qc.barrier()
    
    # 4. Ters QFT (IQFT): Fazı bitlere dönüştür
    qc.append(QFT(precision).inverse(), range(precision))
    
    # 5. Ölçüm
    qc.measure(range(precision), range(precision))
    return qc

# 1/8 fazını tahmin edelim (Beklenen sonuç: 001 binary)
target_angle = 2 * np.pi * (1/8)
qc = qpe_circuit(3, target_angle)

# Sayfadaki tek şerit metin şema ile aynı (varsayılan print(qc) bazen »/« böler):
# print(qc.draw(output="text", fold=-1))

# Simülasyon
simulator = AerSimulator()
counts = simulator.run(qc, shots=1024).result().get_counts()
print(f"Tahmin Edilen Faz (Binary): {counts}")
İpucu: Hassasiyet precision arttıkça, çıktı dağılımı “daha keskin” olur. Qiskit · AerSimulator

Terminal çıktısı (print(qc))

Yukarıdaki editördeki qpe_circuit(3, θ) ile kurulan devrenin metin şeması; varsayılan print(qc) çıktısı çok geniş devreleri » / « ile ikinci panele bölebilir. Burada tek yatay şerit için Qiskit çiziminde fold=-1 kullanıldı (qc.draw(output="text", fold=-1)). Özet çizim için 8 · Devre ve Doğrulama SVG’sine bakın.

terminal

draw(text, fold=-1) · Qiskit · t=3 · θ=2π/8

     ┌───┐ ░                                                                 ░ ┌───────┐┌─┐      
q_0: ┤ H ├─░──■──────────────────────────────────────────────────────────────░─┤0      ├┤M├──────
     ├───┤ ░  │                                                              ░ │       │└╥┘┌─┐   
q_1: ┤ H ├─░──┼────────■────────■────────────────────────────────────────────░─┤1 IQFT ├─╫─┤M├───
     ├───┤ ░  │        │        │                                            ░ │       │ ║ └╥┘┌─┐
q_2: ┤ H ├─░──┼────────┼────────┼────────■────────■────────■────────■────────░─┤2      ├─╫──╫─┤M├
     ├───┤ ░  │P(π/4)  │P(π/4)  │P(π/4)  │P(π/4)  │P(π/4)  │P(π/4)  │P(π/4)  ░ └───────┘ ║  ║ └╥┘
q_3: ┤ X ├─░──■────────■────────■────────■────────■────────■────────■────────░───────────╫──╫──╫─
     └───┘ ░                                                                 ░           ║  ║  ║ 
c: 3/════════════════════════════════════════════════════════════════════════════════════╩══╩══╩═
                                                                                         0  1  2 

H · state · X CP · merdiven IQFT · 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? Bu çıktı, kontrollü faz tekrarlarından IQFT ve ölçüme kadar Qiskit’in gördüğü şemayı satır satır verir; görsel özet için Devre ve Doğrulama şemasına bakın — QFT · iki temsil örneğinde olduğu gibi SVG’yi burada tekrarlamıyoruz.

Kod Analizi

Düzen · hangi register neyi yapıyor?

Devrede toplam precision + 1 kübit var. İlk precision kübit “counting” (ölçülecek bitler), son kübit ise “state” register. Kodda bu son kübiti qc.x(precision) ile |1⟩ yapıyoruz.

Bu örnekte U nedir? Gerçek QPE’de U, üzerinde faz aradığınız üniter operatördür. Bu sayfada ise öğrenme amaçlı olarak U’yu tek kübitlik bir faz kapısıyla temsil ediyoruz: cp(angle). Bu kapı, |11⟩ durumuna faz ekler; state register’ı |1⟩ iken bu faz doğrudan “özdeğer fazı” gibi davranır.

Kontrollü‑U tekrarları · neden 1,2,4…?

repetitions değişkeni her counting kübiti için ikiye katlanır. Bu, U 2 k U^{2^k} uygulamakla aynı etkiye sahiptir. Böylece faz, üst register’a ikili basamaklar şeklinde “katman katman” yazılır.

Burada küçük bir matematiksel resim var: eğer U ψ = e 2 π i θ ψ U|\psi\rangle = e^{2\pi i \theta}|\psi\rangle ise, U 2 k ψ = e 2 π i ( 2 k θ ) ψ U^{2^k}|\psi\rangle = e^{2\pi i (2^k\theta)}|\psi\rangle . Yani “kuvvet” büyüdükçe faz da 2 k 2^k ile büyür; bu büyümeyi IQFT, bit basamaklarına çözer.

Kontrol–hedef yönü · cp(angle) hangi fazı ekliyor?

Qiskit’te qc.cp(angle, control, target), yalnızca control=1 ve target=1 iken faz ekler. Bizim devrede “target” olarak state kübiti var ve onu |1⟩’e hazırlıyoruz. Böylece counting kübiti 1 olduğunda, state üzerinden faz birikir ve phase kickback ile counting fazı değişir.

IQFT · fazı bite çeviren adım

Kontrollü‑ U U katmanından sonra counting register faz bilgisini taşır ama hâlâ “faz uzayı” temsilindedir. QFT(precision).inverse() (IQFT) bunu ölçülebilir bit dizisine dönüştürür.

Bit sırası (endianness) · “001” neyi temsil ediyor?

Ölçüm çıktısındaki bit dizisinin yorumlanması, framework’teki bit sıralamasıyla ilgilidir. Qiskit’te get_counts() anahtarları çoğu zaman “klasik bit dizisini” string olarak verir; bu string’in hangi bitinin p0 / p1 / p2’ye denk geldiğini, measure(q, c) eşlemesi belirler. Bu sayfada measure(range(precision), range(precision)) ile bire bir eşledik; bu yüzden baskın desenin “001” civarında olması, θ = 1 / 8 \theta=1/8 için beklediğimiz ikili kesirle uyumludur.

Hızlı deney · dağılımı “bilerek” boz

Yukarıdaki qpe_circuit(precision, angle) iskeletinde küçük değişiklikler yaparak histogramı (olasılık dağılımını) kasıtlı olarak bozun. Kodda angle, cp için radyan cinsinden fazdır; normalize kesir θ \theta ile bağlantı angle = 2π·θ (örnekteki target_angle = 2*np.pi*(1/8) satırı). Böylece “matematikteki θ” ile “koddaki açı” karışmaz.

  • Tam ikili kesir olmayan faz

    Örneğin normalize faz θ = 1 / 10 \theta=1/10 için target_angle = 2*np.pi*(1/10) verin. t kübitlik hassasiyet, θ \theta ’yı her zaman tam olarak ikili kesir olarak yazamaz; ölçüm tek bir bit string’e kilitlenmek yerine en yakın birkaç desene yayılır — bu, “yuvarlama / yakın rasyonel” davranışının simülatör histogramındaki yüzüdür.

  • Hassasiyet artır

    qpe_circuit(3, …) ile başlayıp ilk argümanı 4 veya 5 yapın (aynı target_angle ile). Daha fazla counting kübiti, θ \theta ’nın ikili genişletmesine daha ince basamak ekler; dağılım genelde daha “keskin” (daha az yayılmış) görünür — devre derinliği ve kapı sayısı da artar.

  • IQFT’yi kaldır

    qc.append(QFT(precision).inverse(), …) satırını geçici olarak yorum satırı yapın veya silin. Kontrollü‑ U U katmanından sonra counting register hâlâ “faz bilgisini taşıyan” bir süperpozisyondadır; IQFT olmadan ölçüm, anlamlı bir ikili tahmin yerine çoğu zaman daha dağınık bir pattern verir — yukarıdaki «IQFT · fazı bite çeviren adım» paragrafının pratik doğrulamasıdır.

  • State’i yanlış hazırla

    Bu öğretici devrede qc.x(precision) satırı, state kübitini |1⟩ yaparak cp(angle, …) yolunu “etkin” kılar. Bu satırı kaldırıp state’i |0⟩’da bırakın: bu küçük modelde faz geri tepmesi beklediğiniz gibi oluşmaz; histogram genelde referans 001 civarından uzaklaşır. Böylece QPE’de özvektör hazırlığının ne kadar kritik olduğunu aynı dosyada izleyebilirsiniz.

Devre ve Doğrulama

Aşağıdaki şema, 3 bit hassasiyetli QPE iskeletini gösterir: üstte Hadamard katmanı, ortada kontrollü U 2 k U^{2^k} blokları ve sonda IQFT. Blokların üzerindeki 2 0 , 2 1 , 2 2 2^0,2^1,2^2 etiketleri, “ikili basamak” mantığını görünür kılar. Qiskit’in tam metin şeması (IQFT ve ölçüm kolonları dahil) için 6 · Terminal çıktısı (print(qc)) bölümüne bakın.

QPE şeması (3 precision + 1 state): kontrollü U 2 k U^{2^k} + IQFT.
p0 p1 p2 |ψ⟩ precision state H H H X özvektör |1⟩ kontrollü U güçleri U, U², U⁴ ... U 2^0 U 2^1 U 2^2 IQFT faz → bit M M M

Şemayı adım adım oku

  1. Counting register’ı süperpozisyona al

    Üstteki t t kübite Hadamard uygula. Bu, fazı yazacağımız “boş sayfa”yı açar.

  2. Kontrollü U 2 k U^{2^k} katmanını uygula

    Her üst kübit, alttaki ψ |\psi\rangle üzerine U U ’yu artan kuvvetlerde uygular. Faz bilgisi phase kickback ile üst register’a kodlanır.

  3. IQFT ile fazı bite çevir

    Counting register faz uzayındadır; IQFT, bunu ölçümle okunabilir ikili sayıya çevirir.

  4. Ölç ve en olası bit desenini oku

    Ölçüm sonucundaki baskın bit dizisi, θ \theta ’nın ikili kesir tahminidir. θ \theta tam ikili kesir değilse dağılım “komşu” değerlere yayılır.

Doğrulama

Hedef: θ = 1 / 8 0.001 2 \theta = 1/8 \Rightarrow 0.001_2

  • precision: 3 bit
  • beklenen baskın çıktı: 001
  • faz kapısı: cp(angle)

Simülasyonda counts sözlüğünde 001 etrafında yoğunlaşma görmelisiniz. Açı tam ikili kesir değilse, iki komşu bit desenine doğru dağılım oluşabilir.

Teknik Derinlik ve İçerik Notları

  • Faz geri tepmesi (phase kickback)

    Kontrollü‑ U U uygulandığında alt register özvektör olarak kalır; fakat faz, kontrol kübitinin fazına yazılır. QPE’nin “ölçemediğini ölçer gibi” yapmasının ana nedeni budur.

  • Hassasiyet vs. hata

    θ \theta her zaman 2 t 2^{-t} biçiminde olmayabilir. Bu durumda ölçümde tek bir bit dizisi yerine en yakın değerlere yayılan bir dağılım görürsünüz. Her ek precision kübiti çözünürlüğü artırır, dağılımı daraltır.

  • Shor’a köprü

    Shor algoritmasının periyot bulma kısmı, QPE mekanizmasının modüler aritmetik operatörüne uygulanmış halidir. Bu yüzden QPE, “periyot teması”nın merkezinde durur.

  • Görsel tasarım ipucu

    Şemada kontrollü‑ U U bloklarının üstüne 2 0 , 2 1 , 2 2 2^0, 2^1, 2^2 yazmak, algoritmanın ikili sayı sistemiyle nasıl çalıştığını tek bakışta hissettirir.