1. Ana sayfa
  2. Algoritmalar
  3. QFT ve faz
  4. Kuantum Fourier dönüşümü (QFT) · Cirq
QFT ve faz · Cirq

Kuantum Fourier Dönüşümü (QFT)

Cirq’te bir devre yalnızca “kapı listesi” değildir; iç yapısı moments diye adlandırılan zaman dilimlerine bölünür: her dilimde, çakışmayan işlemler birlikte — ideal modelde aynı anda — uygulanır. QFT’nin H + kontrollü faz merdivenini burada kurarken, önemli olan hem matematiksel sıra hem de hangi işlemlerin bu dilimlerde üst üste bindiği (veya yan yana çizildiği) düzenidir; böylece faz hizalamasını ve olası paralelliği donanım zamanlamasına yakın düşünmek kolaylaşır.

  • Yapı: H + CZPowGate
  • Bit reversal: SWAP
  • Odak: moments ile paralellik
  • Örnek: 3 kübit QFT

Cirq Perspektifinde QFT

Cirq’te devre okuması çoğu zaman şu soruya döner: kapılar listeye hangi sırada eklendi — yoksa hangi zaman diliminde (bir Moment) yürütülüyor? Python’da append sırası tek başına “tam zaman çizelgesi” değildir; Cirq, aynı kübit üzerinde çakışmayan işlemleri ayırır, çakışanları ardışık momentlere yayar. QFT merdiveninde kontrollü fazlar doğası gereği çoğu kurulumda birbirini izler; yine de diyagramda hangi blokların aynı “sütunda” kaldığını görmek, paralel olabilecek kısımları (örneğin farklı hatlarda ve çakışmayan kapılar) ayırt etmeyi kolaylaştırır.

Pratik teyit: küçük bir devreyi oluşturup print(circuit) veya bir zaman çizelgesi görünümü kullanın — operasyonların hangi satırda (momentte) toplandığı, QFT’nin “üçgen” yapısında hangi derinlikte işlem biriktiğini gösterir. Bu, Qiskit tarafında sırayla çizilen kapılarla aynı matematiksel üniteyi paylaşsa bile, Cirq’te okuma alışkanlığını değiştirir: önce zaman dilimi, sonra kübit hatları.

Moment sezgisi Aynı moment içindeki kapılar, ideal modelde eşzamanlıdır; farklı momentler sırayla gelir. Cirq çatışan işlemleri otomatik olarak sonraki dilime iter — böylece devre hem doğru sırayı korur hem de mümkün olduğunca az “zaman adımı” kullanmaya çalışır. Donanım veya derinlik tartışırken “kapı sayısı” ile “moment sayısı” ayrı metrikler olarak düşünülmelidir.
QFT ile ilişki Merdiven yapısı çoğu kübit üzerinde ortak kullanıldığı için tam paralel bir QFT nadirdir; asıl kazanç, fazların ikilik basamaklarına nasıl yazıldığını moment düzeninde takip edebilmektir. Bir sonraki bölümde (2 · Teknik gereklilikler) hangi Cirq kapılarının bu tabloyu doldurduğunu somutlaştırıyoruz.

Teknik Gereklilikler

QFT, bir register’daki sayısal bilgiyi “frekans spektrumuna” (fazlara) kodlar. Cirq uygulamasında iki bileşen özellikle kritiktir: süperpozisyon için Hadamard ve hassas kontrollü faz döndürmeleri.

  • cirq.H

    Her basamak Hadamard ile başlar: kübiti süperpozisyona alır, faz “hizalaması” için zemini kurar.

  • cirq.CZPowGate

    Kontrollü faz rotasyonlarını esnek biçimde verir. exponent parametresi, fazı π · exponent olarak ayarlar; QFT’deki π/2^k açıları bu sayede doğrudan üretilebilir.

Girdi ve Çıktı Uzayı

QFT, bir |x⟩ durumunu alıp |FT(x)⟩ durumuna dönüştürür. Klasik dünyada bu dönüşüm devasa karmaşık matrislerle yazılır; kuantumda ise işlem, kübitlerin birbirlerine göre olan faz açılarını “hizalamaktan” ibarettir.

Cirq’ün şeffaf devre modeli, bu faz hizalamasının her bir momentte nasıl evrildiğini gözlemlemeyi kolaylaştırır: hangi kapılar aynı anda uygulanabiliyor, hangileri bağımlı?

Cirq Kod Örneği

Aşağıdaki kod, 3 kübitlik QFT devresini Cirq ile kurar. Kontrollü fazlar için CZPowGate(exponent=...) kullanıyoruz; devrenin sonunda ise bit sırasını düzeltmek için SWAP katmanı var.

qft_cirq.py Python
import cirq
import numpy as np

def build_qft_cirq(qubits):
    circuit = cirq.Circuit()
    n = len(qubits)
    
    for i in range(n):
        # 1. Adım: Hadamard kapısı
        circuit.append(cirq.H(qubits[i]))
        
        # 2. Adım: Takip eden her kübit için kontrollü faz döndürme
        for j in range(i + 1, n):
            # Dönüş açısı eksponenti: 1 / 2^(j-i)
            exponent = 1.0 / (2**(j - i))
            circuit.append(cirq.CZPowGate(exponent=exponent)(qubits[j], qubits[i]))
            
    # 3. Adım: Bit sırasını düzeltmek için SWAP kapıları
    for i in range(n // 2):
        circuit.append(cirq.SWAP(qubits[i], qubits[n - i - 1]))
        
    return circuit

# 3 kübitlik bir register hazırlayalım
qubits = cirq.LineQubit.range(3)
qft_circuit = build_qft_cirq(qubits)

print("Cirq QFT Devre Şeması:")
print(qft_circuit)
Not: Cirq, kapıları mümkün olan en paralel şekilde moment’lere böler. Cirq · Moments

Aynı Devre (İki Temsil)

Yukarıdaki editörde LineQubit.range(3) ile kurulan build_qft_cirq çıktısı solda Cirq’ün metin şeması olarak; sağda aynı akışın şematik özeti yer alır. @^t gösterimi kontrollü faz üslerini; × ise SWAP çaprazını işaret eder.

terminal

print(qft_circuit) · Cirq · n=3

                  ┌───────┐
0: ───H───@────────@──────────────────────×───
          │        │                      │
1: ───────@^0.5────┼─────H────@───────────┼───
                   │          │           │
2: ────────────────@^0.25─────@^0.5───H───×───
                  └───────┘

H · merdiven CZPow · faz SWAP · bit reversal

svg

Premium devre çizimi

q0 q1 q2 H H H CZt t=1/2 CZt t=1/4 CZt t=1/2 SWAP

mor · H turuncu · CZPow pembe · CZPow yeşil · SWAP

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? Cirq metin çıktısı moment bloklarını ve kontrol hatlarını gösterir; SVG aynı örneği tek bakışta özetler. Grover · iki temsil, Genlik güçlendirme · iki temsil.
İki çerçeve, aynı merdiven Burada faz katkıları üs olarak (t=1/4, 1/2, …) okunur; aynı katmanları radyan ve iç içe döngüyle adım adım görmek için Qiskit QFT · kod sayfasına geçebilirsiniz.

Kod Analizi

Fonksiyon imzası · neden “qubits listesi”?

build_qft_cirq(qubits) bir qubit listesi alır çünkü Cirq’te kübit “yerleşimi” (LineQubit / GridQubit) devreden bağımsız seçilebilir. Aynı QFT mantığını farklı topolojilere taşımak istediğinizde, fonksiyonun qubit listesiyle çalışması en esnek yaklaşımdır.

Dış döngü (for i) · “merdiven” basamakları

Kodun ana omurgası şu satırlardır: for i in range(n). Her i adımında hedef kübit qubits[i] seçilir ve önce Hadamard uygulanır, sonra bu kübiti “ince ayarlayan” kontrollü fazlar eklenir. Bu, QFT’nin klasik merdiven yapısıdır.

Hadamard · faz dünyasına giriş kapısı

circuit.append(cirq.H(qubits[i])) satırı, ilgili kübiti süperpozisyona alır. QFT’de “bilgi” çoğunlukla genlikten çok fazlarda taşınır; Hadamard katmanı, bu faz işlemlerinin çalışacağı zemini kurar.

CZPowGate · QFT’nin kalbi

cirq.CZPowGate(exponent=e), kontrollü‑Z kapısının “kuvvetli” bir genellemesidir. Cirq’te faz açısı, kavramsal olarak π · exponent ile ayarlanır. QFT’de gereken açılar π/2, π/4, π/8, ... olduğundan, exponent = 1/2, 1/4, 1/8, ... seçimi doğrudan hedefe gider.

İç döngü (for j) · fazların “ağırlığı”

for j in range(i + 1, n) ile, daha “sonraki” kübitleri kontrol olarak kullanıyoruz. QFT’de kontrol‑hedef arasındaki mesafe arttıkça açı küçülür: j - i büyüdükçe, fazın etkisi daha ince bir basamağı temsil eder.

Exponent hesabı · π/2^k nasıl çıkar?

Kod: exponent = 1 / 2**(j - i). Bu seçim, fazı π · exponent olarak ayarladığımız için doğrudan π / 2^{j-i} verir. Yani QFT’nin gereken açıları “formülden” devreye taşınmış olur.

k = (j−i) exponent faz (yaklaşık)
1 1/2 π/2
2 1/4 π/4
3 1/8 π/8

Pratik not: Bu sayfadaki amaç, QFT merdiven mantığını görünür kılmak. Donanımda ise çok küçük açıları (π/16, π/32…) yaklaşıklamak veya kırpmak (approximate QFT) bazı iş akışlarında kabul edilebilir.

Moment yapısı · paralellik nerede?

Cirq, aynı momente yerleştirilebilen kapıları “yan yana” dizer. QFT’de bazı kontrollü fazlar bağımsızdır (farklı kübit çiftleri), bazıları ise aynı kübiti paylaştığı için ardışık kalır. Bu yüzden devre çıktısında dikey bloklar halinde moment’leri görürsünüz.

Neden bazı kapılar aynı momente düşmez?

Aynı kübite dokunan iki kapı, aynı zaman diliminde uygulanamaz. Örneğin qubits[i] hedefi üzerinde birden fazla kontrollü faz ardışık gelir; Cirq bunları farklı moment’lere yerleştirir. Buna karşılık farklı hedef kübitlere giden bağımsız fazlar, uygun olduğunda paralel moment’lerde görülebilir.

Donanım verimliliği notu QFT “merdiven” gibi görünür; ama donanım açısından soru şudur: “Bu merdivenin kaç basamağı aynı anda atılabiliyor?” Cirq’ün moment modeli bu soruyu somutlaştırır.

SWAP katmanı · kodda n//2 neden?

Son döngü: for i in range(n // 2), register’ı baştan ve sondan eşleştirip swap’lar. n//2 ifadesi, her çifti yalnızca bir kez swap’lamak içindir. Bu katman, QFT’nin bit reversal etkisini “klasik okuma” sırasına geri taşır.

Neden SWAP Gereklidir?

QFT doğası gereği bit sırasını ters üretir: en anlamlı bit (MSB), en anlamsız bit (LSB) tarafına kayar. Devrenin sonundaki SWAP katmanı, bu “ayna görüntüsü” etkisini klasik okuma standartlarına geri döndürür.

Bu adımı atlamak, Shor gibi QFT sonrası başka işlemlere geçen algoritmalarda bitlerin yanlış yerde yorumlanmasına neden olabilir. Eğitim amaçlı örneklerde bazen SWAP atlanır; ama gerçek akışta genellikle açıkça ele alınır.

Devre ve Doğrulama

Bu şema 5 · Aynı Devre (İki Temsil) bölümündeki akışı korur; 3 kübitlik QFT merdivenini Cirq kapılarıyla okur: Hadamard ve kontrollü fazlar, en sonda bit reversal için SWAP. Burada kontrollü faz için Cirq karşılığı olarak CZPowGate kullanıyoruz.

QFT merdiveni · n=3 · Cirq H + CZPowGate(exponent=1/2,1/4,...) + SWAP
q0 q1 q2 H H H CZt t=1/2 CZt t=1/4 CZt t=1/2 SWAP

Şemayı adım adım oku

  1. Her basamak H ile başlar; ardından daha küçük açılı kontrollü fazlar gelir.

  2. Cirq’te kontrollü fazı, CZPowGate(exponent=t) ile ifade ederiz. Burada t=1/2, 1/4, ... seçimi π/2, π/4, ... fazlarına karşılık gelir.

  3. Devrenin sonunda SWAP katmanı, bit reversal etkisini düzeltir.

  4. Cirq çıktısında moment’leri izleyerek, hangi kapıların paralel yerleştiğini görebilirsiniz: “zaman dilimi” okuması burada devreyi daha anlaşılır kılar.

Doğrulama

Hedef: şemanın “H + kontrollü faz + SWAP” merdiveni olarak okunabilmesi ve CZPowGate parametresinin anlamının net olması.

  • kapılar: H + CZPow + SWAP
  • exponent: 1/2, 1/4, ...
  • not: moment okuması

Pro Tip

Cirq vs Qiskit Qiskit’te kapıları eklemek biraz “liste yönetimi” gibiyken, Cirq’te kapıları “zaman dilimlerine” yerleştirirsiniz. QFT şemasına bakarken kapıların dikey bloklar (moments) halinde dizildiğini fark edeceksiniz.