Deutsch–Jozsa algoritması — tek sorguda fonksiyon karakteri
Deutsch–Jozsa algoritması, siyah bir kutu (oracle) içinde saklanan bir fonksiyonun sabit mi yoksa dengeli mi olduğunu tek bir kuantum sorgusuyla belirler. Klasik dünyada en kötü durumda giriş denenirken, kuantum devresi tüm girişleri süperpozisyon içinde aynı anda oracle'a gönderir ve cevabı girişim deseninden okur.
Deutsch–Jozsa Algoritması Nedir?
Oracle algoritması deyince, fonksiyonun iç yapısına ya da kapalı formuna doğrudan erişemediğimiz; onu yalnızca izin verilen bir alt rutin aracılığıyla sorgulayabildiğimiz hesaplama modeli kastedilir. Kuantum bağlamında bu rutin çoğunlukla ile temsil edilir ve performans çoğu zaman kaç oracle çağrısı gerektiği üzerinden ölçülür. Deutsch–Jozsa, işte bu sorgu çerçevesinde gizli bir fonksiyonun küresel olarak sabit mi yoksa dengeli mi olduğunu ayırt eden; klasik en kötü duruma kıyasla sorgu sayısında üstünlük sağlayan tarihsel bir oracle algoritmasıdır.
Burada oracle problemin kendisi değil, fonksiyonu devreye gömen kara kutu ünitedir—sayfadaki devre şemasında ortadaki oracle bloğu ve onu çevreleyen Hadamard–ölçüm akışı tam da bunu somutlaştırır. Deutsch–Jozsa'nın görevi, her giriş için ayrı ayrı ölçüm yapmak yerine bu kutuyu yalnızca bir kez kullanarak küresel kararı vermektir. Sabit ve dengeli sınıfların kesin tanımları bir sonraki bölümde; faz girişimi, phase kickback ve oracle ünitesinin cebiri ise aşağıda, özellikle mantık ve reçete bölümlerinde açılır.
Bu algoritmanın öğretici gücü şuradadır: kuantum bilgisayar sonucu "tüm girdileri deneyerek" değil, tüm girdilerin fazlarını aynı hesaplama içinde çarpıştırarak bulur. Sabit fonksiyonda fazlar başlangıç durumunu geri toplar; dengeli fonksiyonda ise fazlar birbirini söndürür ve ölçümde en az bir görülür.
Problem Tanımı
bitlik bir giriş alan ve tek bitlik sonuç üreten bir fonksiyon düşünelim: . Bu fonksiyonun söz verdiğimiz iki sınıftan birine ait olduğunu biliyoruz; bilmediğimiz tek şey hangisi olduğudur.
-
Sabit (constant)
Oracle'a hangi ile sorarsanız sorun, cevap değişmez: tüm girişler için ya hep ya hep . Kara kutunun tek tutarlı davranışı budur; ara değerler veya karışık bir örüntü yoktur.
-
Dengeli (balanced)
Olası girişlerin tam yarısı için , diğer yarısı için döner; yani oracle farklı değerlerine sorulduğunda iki cevap da eşit sıklıkta görülür. Fonksiyon, uzayını iki eşit büyüklükteki parçaya böler.
-
Klasik maliyet
Klasik tarafta 'ye yalnızca tek tek erişilir: bir seçilir, oracle döndürür; bu bir sorgudur. Kesin karar için en kötü durumda sorgu gerekir: ilk yanıtın hepsi aynı olsa bile dengeli bir fonksiyon, kalan yarıda tek bir farklı değerle gizlenebilir; sabitlik ancak bir sorgu daha ile kesinleşir.
-
Kuantum maliyet
Aynı kara kutu , giriş register'ı süperpozisyondayken tek bir uygulamasıyla sorgulanır; Deutsch–Jozsa bu yüzden tek oracle çağrısına indirger. Ölçüm yalnızca giriş kübitlerine yapılır: sonuç ise fonksiyon sabit; en az bir kübit ölçülürse dengelidir.
Algoritmanın Mantığı: Girişim ve Faz
Algoritmanın kalbinde kuantum girişimi vardır. Klasik bir bilgisayar girdileri tek tek denerken, Deutsch–Jozsa tüm girdileri aynı genlik içinde taşır. Oracle, fonksiyon sonucunu doğrudan ölçüme yazmak yerine faza kodlar; son Hadamard katmanı da bu faz bilgisini ölçülebilir bit desenine dönüştürür.
-
1
Hazırlık
giriş kübitinden oluşan ana register durumunda başlar; yani klasik olarak tüm girişler sıfırdır. Buna eklenen tek yardımcı (ancilla) kübit yapılır—bu, oracle'ın çıktısını ölçümde doğrudan okutmak yerine phase kickback ile ana hatta faz işareti olarak geri yansıtacak standart Deutsch–Jozsa düzenidir.
-
2
Süperpozisyon
Her kübite Hadamard (H) uygulanır; böylece giriş hattı üzerindeki bilgi klasik tek bir bit dizesi değil, tüm olası değerinin eş genlikli süperpozisyonudur. Ancilla ise olur; bu “eksi” durum, bir sonraki adımda XOR ile yazılan bilgisinin fazda çarpanına dönüşmesini sağlar.
-
3
Oracle (kara kutu)
Oracle, gizli fonksiyonu kuantum olarak ile uygular: giriş kübitleri olduğunda yardımcı hatta XOR ile yazılır. Ancilla olduğundan bu XOR, ana register'daki her bileşenine faz çarpanı olarak “geri teper”; yani oracle tek seferde tüm için fonksiyonu klasik anlamda tek tek okumadan işaretler.
-
4
Girişim ve ölçüm
Giriş register'ına ikinci bir Hadamard katmanı uygulanır; bu, süperpozisyondaki genlikleri tekrar toplayıp çıkaran ters Fourier benzeri bir adımdır ve fazlardaki küresel uyum ya da uyumsuzluğu klasik bit desenine çevirir. Sabit için tüm aynı faz işaretini taşır; girişim yapıcı olur ve ölçümde (tüm sıfırlar) baskın çıkar. Dengeli için eşit büyüklükteki artı ve eksi fazlar birbirini yıkıcı girişimle söndürür; tam sıfır dizesi olasılığı sıfırlanır, dolayısıyla en az bir kübit olarak ölçülür.
Derin sezgi · oracle fazı nasıl taşır?
Görsel olarak şöyle düşünebilirsin: klasik bir dilde sonucu bir değişkene yazarsın (). Burada ise yardımcı kübit durumundayken yapılan aynı işlem, yardımcıyı değiştirmek yerine fonksiyonun sonucunu ana kübitlerin vibrasyonuna (fazına) bir eksi işareti olarak yansıtır. Bu, bir duvara top fırlattığında topun yön değiştirmesi — yani geri tepmesi — ama duvarın yerinde kalması gibidir: bilgi yardımcı kübitte birikmez, ana sisteme geri seker.
Algoritmanın Qiskit Reçetesi
Yukarıdaki mantık ve reçeteyle aynı fizik burada yalnızca Qiskit indeksleri ve QuantumCircuit çağrılarına çevrilir; tekrar yerine “hangi satır neye karşılık gelir?” sorusuna odaklanırız. Devre kubit (– giriş, ancilla) ve klasik bit ile kurulur. Ölçüm yalnızca giriş hatlarına yazılır: karar, oracle'ın ancilla üzerinden ile kodladığı faz bilgisinin, son Hadamard sonrası girişim deseninde nasıl göründüğünden okunur. Satır satır gerekçe, bir sonraki “Kod analizi” bölümünde genişletilir.
-
Başlangıç
Kuantum durumu olacak şekilde kurulur: Qiskit'te kübit son hat olduğundan qc.x(n) doğrudan ancilla'yı yapar; diğer hatlar varsayılan ile başlar.
-
Hadamard katmanı
qc.h(range(n + 1)) tüm hatlara birden Hadamard uygular: girişler eş genlikli süperpozisyona girer, ancilla ise olur. Bu, bir sonraki blokta çalıştığında XOR'un fazda olarak görünmesi için gereken standart hazırlıktır.
-
Oracle
Oracle, soyut ünitesini kapılara çevirir; kodda type="constant" dalında ya devreye hiç dokunulmaz ya da yalnızca qc.x(n) ile ancilla çevrilir (global faz farkı, okunan kararı değiştirmez); type="balanced" dalında ise her için qc.cx(i, n) ile girişten ancilla'ya CNOT zinciri kurulur. Böylece kara kutu hâlâ “fonksiyonu tek tek listelemek” değil, tek geçişte bilgisini giriş fazına işler (örnek dengeli fonksiyonun cebiri analiz bölümünde açılır).
-
Son Hadamard ve ölçüm
Oracle'dan sonra yalnızca giriş hatlarına ikinci Hadamard uygulanır: qc.h(range(n)) — ancilla bu aşamada tekrar dönüştürülmez; karar, onun son kuantum durumundan değil, ilk kübitteki girişimden okunur. Ardından qc.measure(range(n), range(n)) ile yalnızca bu hat klasik register'a yazılır. Ölçüm ise sabit; aksi takdirde dengeli sonucu verir.
Qiskit Kodu
Aşağıdaki örnek giriş kübiti için Deutsch–Jozsa devresini kurar. type="constant" yerine type="balanced" yazıldığında oracle dengeli fonksiyon gibi davranır ve ölçümde dışında bir sonuç beklenir.
import numpy as np
from qiskit import QuantumCircuit
from qiskit_aer import AerSimulator
def deutsch_jozsa_circuit(n, type="constant"):
# n giriş kübiti + 1 yardımcı kübit
qc = QuantumCircuit(n + 1, n)
# 1. Hazırlık: yardımcı kübiti |1> yap ve hepsine H uygula.
qc.x(n)
qc.h(range(n + 1))
qc.barrier()
# 2. Oracle (kara kutu) kısmı
if type == "constant":
# Sabit fonksiyon: hiçbir şey yapma veya ancilla'yı çevir.
if np.random.randint(2) == 1:
qc.x(n)
else:
# Dengeli fonksiyon örneği: CNOT zinciri.
for i in range(n):
qc.cx(i, n)
qc.barrier()
# 3. Son işlem: giriş kübitlerine H uygula ve ölç.
qc.h(range(n))
qc.measure(range(n), range(n))
return qc
n = 3
qc = deutsch_jozsa_circuit(n, type="constant")
# Simülasyon
simulator = AerSimulator()
result = simulator.run(qc, shots=1).result()
counts = result.get_counts()
print(f"\nÖlçüm Sonucu: {counts}")
if "0" * n in counts:
print("Sonuç: Fonksiyon SABİT (Constant)")
else:
print("Sonuç: Fonksiyon DENGELİ (Balanced)")
Aynı Devre (İki Temsil)
Editördeki n = 3, type="constant" senaryosuyla üretilen qc için Qiskit metin çizimi solda; sağda aynı akışın şematik özeti yer alır. Sabit oracle dalında kod ara sıra ancilla üzerinde ek bir X ekleyebilir (np.random); tutarlı bir terminal örneği için burada np.random.seed(0) ile aynı çağrıdan alınmış print(qc) kullanıldı (oracle bölümünde yalnızca çift barrier() arası boşluk). Dengeli modda ortaya CNOT zinciri çıkar; metin çizimi de buna göre uzar.
print(qc) çıktısı · n=3 · sabit · seed(0)
┌───┐ ░ ░ ┌───┐┌─┐
q_0: ┤ H ├──────░──░─┤ H ├┤M├──────
├───┤ ░ ░ ├───┤└╥┘┌─┐
q_1: ┤ H ├──────░──░─┤ H ├─╫─┤M├───
├───┤ ░ ░ ├───┤ ║ └╥┘┌─┐
q_2: ┤ H ├──────░──░─┤ H ├─╫──╫─┤M├
├───┤┌───┐ ░ ░ └───┘ ║ ║ └╥┘
q_3: ┤ X ├┤ H ├─░──░───────╫──╫──╫─
└───┘└───┘ ░ ░ ║ ║ ║
c: 3/══════════════════════╩══╩══╩═
0 1 2
Hazırlık · ancilla X · tüm H Oracle · U_f (bu örnekte boş) Girişim · ölçüm
Premium devre çizimi
cyan · kablolar mor · H üst rozet · sabit vs dengeli Oracle · faz · f
Kodun Derinlemesine Analizi
QuantumCircuit(n + 1, n) satırı, giriş kübiti ve bir ancilla oluşturur; klasik register ise yalnızca bittir. Çünkü ancilla algoritmanın iç mekanizmasıdır, sonuç kararını giriş kübitleri taşır.
qc.x(n) ancilla'yı durumuna getirir. Ardından qc.h(range(n + 1)) bütün kübitlere Hadamard uygular. Bu iki adım birlikte ancilla'yı durumuna taşır; phase kickback için gereken hassas ayar budur.
Sabit oracle kısmında devre ya hiçbir şey yapmaz ya da yalnızca ancilla'ya uygular. Her iki durumda da giriş register'ındaki faz deseni tüm girdiler için aynıdır; son Hadamard katmanı sonucunu geri toplar.
Dengeli oracle örneği ise her giriş kübitinden ancilla'ya CNOT gönderir. Bu seçim gibi davranan dengeli bir fonksiyon üretir. Son Hadamard katmanı, sonucunu yıkıcı girişimle bastırır.
Daha somut bakarsak: koddaki CNOT zinciri klasik anlamda parity (eşlik) fonksiyonudur. Girdilerin yarısı bitlerinin sayısı tek olduğu için , diğer yarısı için döner. Bu simetrik yapı, faz geri tepmesinin ardından genliklerin tam olarak yarı yarıya ters işaret kazanmasını sağlar; son Hadamard katmanı bu eşit ama zıt katkıları topladığında sonucu sıfırlanır. Yani dengeli oracle örneği, kuantum bilgisayarın yıkıcı girişim (destructive interference) yeteneğinin matematiksel bir kutlamasıdır — klasik bilgisayarın asla taklit edemediği iptal mekanizması burada karar vermenin aracı olur.
Devre ve Doğrulama
Bu şema 6 · Aynı Devre (İki Temsil) bölümündeki akışı korur; için sabit oracle örneğini yineleyerek gösterir. Dengeli oracle seçildiğinde orta oracle bloğunun içine giriş kübitlerinden ancilla'ya giden CNOT kapıları eklenir; karar kuralı değişmez.
Şemayı adım adım oku
-
En altta ancilla önce X ile |1⟩ yapılır; ardından tüm kübitlere H uygulanarak giriş register’ı süperpozisyona, ancilla ise |−⟩ durumuna alınır.
-
Ortadaki Oracle bloğu, fonksiyonun “sabit mi dengeli mi” karakterini giriş genliklerinin fazlarına işler (phase kickback).
-
Son H katmanı bu faz desenini girişimde birleştirir: sabitte 0…0 geri toplanır, dengelide dağılıp “0…0” dışına kaçar.
-
Giriş kübitleri ölçülür: 0^n ise sabit, aksi halde dengeli kararı verilir.
Karar kuralı: ölçülürse sabit, dışında bir desen ölçülürse dengeli.
- 000 → constant
- 001, 010, ... → balanced
- shots=1 deterministik ideal devre
-
Klasik karşılaştırma
Klasik modelde her sorgu bir seçip döndürmektir. Sabit veya dengeli olduğunu kesin bilmek için en kötü durumda klasik sorgu gerekir. Örnek: iken bu demektir. Deutsch–Jozsa aynı ayrımı tek kuantum oracle uygulaması—tek bir çağrısı—ile tamamlar; fark, sorgu karmaşıklığında üstel düzeydedir.
-
Oracle tasarımı
Koddaki CNOT zinciri, dengeli sınıftan yalnızca bir örnek üretir; başka geçerli dengeli oracle’lar da aynı algoritma iskelesine takılabilir. Vaat şudur: sabit için ölçümde (tüm sıfırlar) baskın çıkar; dengeli için bu desen yıkıcı girişimle ortadan kalkar—hangi dengeli oracle seçilirse seçilsin. örneğinde klasik dizide olarak görünür.
-
Neden ancilla ölçülmüyor?
Ancilla, standart tanımında XOR’u taşıyıp bilgisini phase kickback ile giriş register’ının fazına aktarmak için kullanılır. Karar, son Hadamard’dan sonra giriş hatlarındaki girişim örüntüsünde toplanır; ancilla’nın klasik olarak okunması ek bir karar kuralı sunmaz. Bu yüzden devre QuantumCircuit(n + 1, n) biçiminde kurulur: yalnızca ilk kübit ölçülür.
-
Söz ve güvenilir ölçüm
Karar kuralı, ’nin mutlaka sabit veya dengeli olduğu sözüne dayanır; bu vaat yoksa ölçmek dengeli sınıfa kesin kanıt vermez. Gürültüsüz simülasyonda ve ideal devrede sonuç deterministiktir; shots=1 yeterlidir. Gerçek donanımda okuma ve kapı hataları için shots artırılabilir veya hata azaltımı düşünülür.