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.b1b2bt\theta \approx 0.b_1b_2\ldots b_t
  • Kalp: kontrollü U2kU^{2^k}
  • Araç: IQFT

Kuantum Faz Tahmini (QPE) nedir?

QPE, bir üniter operatörün UU özvektörü ψ|\psi\rangle verildiğinde, ilgili özdeğerin fazını θ[0,1)\theta \in [0,1) bulma problemidir:

Temel denklem

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

Buradaki faz, tek başına doğrudan “ölçülemez”. QPE’nin yaptığı şey, bu faz bilgisini üst register’a faz geri tepmesi ile “yazmak” ve ardından IQFT ile bit dizisine çevirmektir.

Neden bu algoritmayı kullanıyoruz?

Klasik dünyada büyük bir matrisin özdeğer/özvektör yapısını çıkarmak, boyut arttıkça hızla zorlaşır (çoğu durumda üstel maliyet). QPE ise kuantum paralelliğini kullanarak fazı, seçtiğiniz hassasiyet seviyesine göre polinom zamanda tahmin edebilir.

QPE bir “faz dönüştürücü”dür QPE doğrudan her problemi çözmez; fakat Shor (periyot bulma) ve kuantum sayımı gibi büyük algoritmalarda, “gizli faz”ı ölçümle okunabilir bitlere dönüştürerek kilit rol oynar.

Mimari yapı: iki register’ın dansı

QPE devresi iki ayrı register arasında hassas bir köprü kurar. Üst register fazı “ölçmek” için hazırlanır; alt register ise UU’nun özvektörünü taşır.

  • Hassasiyet register’ı (counting)

    Üstteki tt 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.

  • Özvektör register’ı (state)

    Alttaki kübit(ler), UU operatörünün özvektörünü ψ|\psi\rangle taşır. Bu örnekte tek kübitlik ψ=1|\psi\rangle = |1\rangle hazırlıyoruz.

Algoritmanın kalbi: kontrollü‑U güçleri

Üstteki her kübit, alttaki register üzerine UU operatörünü artan kuvvetlerde kontrollü uygular: U20,U21,U22,U^{2^0}, U^{2^1}, U^{2^2}, \ldots. Bu tasarım “ikili sayı sistemi” mantığıyla fazın basamaklarını üst register’a kodlar.

Phase kickback (faz geri tepmesi) Kontrollü‑UU 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.

Qiskit kod örneği

Aşağıdaki örnekte UU’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)

# 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

Kod analizi: satır satır sezgi

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, U2kU^{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ψ=e2πiθψU|\psi\rangle = e^{2\pi i \theta}|\psi\rangle ise, U2kψ=e2πi(2kθ)ψU^{2^k}|\psi\rangle = e^{2\pi i (2^k\theta)}|\psi\rangle. Yani “kuvvet” büyüdükçe faz da 2k2^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ü‑UU 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
  • Tam ikili kesir olmayan faz

    target_angle için θ=1/10\theta=1/10 gibi bir değer seç. Ölçüm artık tek bir bit deseninde kilitlenmez; en yakın iki/üç desene yayılır.

  • Hassasiyet artır

    precision’ı 3 → 4/5 yapınca dağılımın daha “keskin” hale geldiğini görürsün.

  • IQFT’yi kaldır

    IQFT olmadan counting register faz uzayında kalır; ölçüm, anlamlı bir ikili tahmin vermek yerine daha dağınık görünür.

Devre ve doğrulama

Aşağıdaki şema, 3 bit hassasiyetli QPE iskeletini gösterir: üstte Hadamard katmanı, ortada kontrollü U2kU^{2^k} blokları ve sonda IQFT. Blokların üzerindeki 20,21,222^0,2^1,2^2 etiketleri, “ikili basamak” mantığını görünür kılar.

QPE şeması (3 precision + 1 state): kontrollü U2kU^{2^k} + IQFT.
p0 p1 p2 |ψ⟩ precision state H H H X 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 tt kübite Hadamard uygula. Bu, fazı yazacağımız “boş sayfa”yı açar.

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

    Her üst kübit, alttaki ψ|\psi\rangle üzerine UU’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/80.0012\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 içerik notları

  • Faz geri tepmesi (phase kickback)

    Kontrollü‑UU 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 2t2^{-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ü‑UU bloklarının üstüne 20,21,222^0, 2^1, 2^2 yazmak, algoritmanın ikili sayı sistemiyle nasıl çalıştığını tek bakışta hissettirir.