QuantumCircuit — kayıtlar ve zaman çizelgesi
Qiskit’te bir hesap tarifini taşıyan merkezî nesne QuantumCircuit’tir. Bu nesne yalnızca “tek bir ünite matris” değildir: hangi kübit ve klasik hatların mevcut olduğunu envanter olarak tutar; kapıları, bariyerleri ve ölçümleri ise yürütülecek sırayla bir talimat akışı halinde saklar. Böylece soyut kuantum mekaniği anlatımındaki üniter adımlar ile donanımda gerçekten çalıştırılan program arasına net bir köprü kurulur. Teorik kapı cebiri için sitedeki kuantum kapı işlemleri sayfasına; ölçümün olasılık diline ölçüm ve çökme bölümüne dönebilirsiniz — burada odak tamamen Qiskit’in veri modelindedir.
QuantumCircuit Taslağı: Ünite Devreden Farkı
Ders kitabında sık görülen “n kübitlik ünite U” ifadesi, ölçüm ve klasik geri besleme yokken tüm evrimin tek bir blokta toplanabileceğini söyler. Qiskit’in QuantumCircuit sınıfı ise pratik programlamanın ihtiyaçlarını yansıtır: ölçüm satırları, klasik bitlere yazma, bariyer ve zamanlama ipuçları, hatta ileri düzeyde koşullu yürütme gibi ünite olmayan veya ünite dilinde paketlenmemiş öğeler de aynı taşıyıcıda yaşar. Bu yüzden bir devrenin “matrisi” her zaman kapalı formda 2ⁿ×2ⁿ boyutunda yazılamayabilir; doğru soru, listedeki her adımın tanımlı olduğu mimari ve sıranın tutarlı olmasıdır.
İki katman: durum uzayı ile program metni
Soyut olarak |ψ⟩ ∈ (ℂ²)^{⊗n} üzerinde düşünür, somut API’de ise QuantumCircuit bir program metni gibidir. Simülatör veya donanım, bu metni okuyarak sırayla işlemleri uygular; transpiler ise metni hedef makinenin yerel kapı kümesine ve bağlanırlık kısıtına göre yeniden yazar. Devrenin kendisi, çalıştırılmayı bekleyen kayıtlı bir plandır; çoğu zaman bir kez kurulup çok job’ta yeniden kullanılır.
Kayıtlar ve Hatlar: Envanter Görünümü
Oluşturucu çağrısı QuantumCircuit(q, c) biçiminde olabileceği gibi, tamsayılarla QuantumCircuit(nq, nc) şeklinde de yazılır; ikinci durumda kitaplık görünmez kayıtları sizin için açar. Kuantum tarafta her hat bir kübit taşır; klasik tarafta her hat bir tamsayı genişliği (bit sayısı) ile ölçüm sonuçlarını biriktirir. İsim vermek (name=) devreleri hata ayıklamada ve iş kuyruğunda ayırt etmek için önerilir.
Ayrı kayıt nesneleri ve yeniden kullanım
Aynı QuantumRegister örneğini birden çok devrede paylaşmak mümkündür; bu, alt devreleri bağlarken hatların birebir aynı fiziksel çizgiye bağlanmasını garanti eder. Yeni başlayanlar için en güvenli yol, her deney için taze QuantumCircuit üretmektir. Kayıtların nasıl adlandırıldığı, birleştirilirken çakışmaların nasıl çözüldüğü ve ölçüm hedeflerinin nasıl bağlandığı için kayıt sistemleri sayfasına geçilebilir; burada yalnızca ana taşıyıcının bu kayıtları referans aldığı vurgulanır.
Talimat Akışı, Kübit Sırası ve Çizim Okuması
Devrenin “gövdesi”, Python düzeyinde yineleme ile dolaşılan .data öğesinde tutulur; her öğe bir işlem, uygulandığı kübit (ve varsa parametre veya klasik bağımlılık) ile birlikte gelir. Çizim çıktısında yatay eksen zamanı, dikey eksen ise kübit hatlarını temsil eder; en üst satır genelde en düşük indeksli kübittir (q0). Bu sözleşme, compose ve tensör sırası tartışmalarında hata kaynağı olduğundan, küçük devrelerde indeksleri elle kontrol etmek alışkanlık haline getirilmelidir.
Kapılar, bariyer ve ölçüm aynı listede
Ünite kapılar (h, cx, dönüş ailesi vb.) listenin ana yükünü oluşturur. Bariyer matematiksel anlamda genelde kimlikle ilişkilendirilir; fakat donanım ve optimizasyon tarafında “buraya kadar birleştirme” veya zamanlama sınırı işareti olarak kullanılır. Ölçüm ise durumu projeler ve sonucu klasik hatta yazar; bu adım ünite değildir ve durum vektörü resmini tek parça ünite olarak yazmayı imkânsız kılar. Kapıların matematiksel türleri ve ünite kontrolü için kapılar ve ünite mantığı sayfası ayrılmıştır.
Birleştirme, Kopya ve Yerinde Güncelleme
İki devreyi uç uca eklemek için compose kullanılır; varsayılan davranış genelde çağrıyı yapan nesneyi yerinde günceller. Salt okunur bir kopya istiyorsanız copy() ile ayrı bir örnek oluşturup ardından birleştirme yapılır. Hat eşlemesi (qubits= gibi) farklı kayıt adları arasında köprü kurarken hata yapmayı önler. Ters devre, parametre bağlama ve kapsamlı cebirsel birleştirme kuralları birleştirme, ekleme ve ters çevirme başlığında derinleşir.
Genlik ve faz: global faz meta verisi
Kuantum durumları genelde global fazına kadar özdeş kabul edilir; Qiskit bazen bu fazı koruyan veya sıfırlayan iç dönüşümler yapar (özellikle transpilasyon sonrası). Devre üzerinde global_phase özniteliği bu fazı program düzeyinde izlemenize yardım eder. Bu ayrıntı algoritma doğruluğu için sık gerekmese de, kontrollü faz kapıları ve interferometrik devrelerde fark edilir hale gelir.
İlk Devre: Oluşturma ve Doğrulama
Aşağıdaki örnek yalnızca yapıyı gösterir: iki kübit, iki klasik bit, sırayla Hadamard, kontrollü-X ve ölçüm. Çalıştırıcı veya sürüm ayrıntısı bilinçli olarak dışarıda bırakılmıştır; amaç QuantumCircuit nesnesinin nasıl kurulup içeriğinin nasıl inceleneceğini göstermektir.
from qiskit import QuantumCircuit
# İki kübit, iki klasik bit; devreye anlamlı bir etiket verin.
qc = QuantumCircuit(2, 2, name="bell_demo")
qc.h(0)
qc.cx(0, 1)
qc.measure([0, 1], [0, 1])
# Yapısal özeti konsola yazdırır (sürüme duyarlı ayrıntılar olabilir).
print(qc)
print("Kübit sayısı:", qc.num_qubits)
print("Klasik bit sayısı:", qc.num_clbits)
print("Adım sayısı:", len(qc.data))
len(qc.data) değeri, çizimde gördüğünüz dikey “sütun” sayısıyla aynı sırayı takip eder; araçlar arasında küçük farklılıklar (örneğin ölçümün tek satırda birleştirilmesi) görülebilir, fakat yürütme sırası korunur.
İleride ve Yan Sayfalarda Ne Var?
Bu sayfa taşıyıcıyı tanımlar; aşağıdaki başlıklar aynı Qiskit modülünde derinleşen komşu konulardır. Fizik temeli için ise yukarıda verilen kavram sayfalarına dönün — çift anlatımı bilinçli olarak ayırdık.
- Kayıt sistemleri — çoklu kayıt, yeniden adlandırma ve ölçüm bağları.
- Kapılar ve ünite mantığı — hangi nesnelerin ünite olduğu ve matris temsilinin nerede yaşadığı.
- Ölçüm mantığı — ölçüm satırlarının modeldeki yeri ve yorumlanması.
- Parametrik devreler — ağırlık paylaşımı ve gradyan için veri modeli.
- Birleştirme ve ters devre — cebirsel bileşim API’si.