Kayıt sistemleri — hat kimliği ve sıra sözleşmesi
Qiskit’te her yatay çizgi bir bit nesnesi ile temsil edilir: kuantum tarafında Qubit, klasik tarafta Clbit. Bunlar yalnızca indeks sayısı değildir; hangi QuantumRegister veya ClassicalRegister içinde doğdukları ve devrenin düz listesinde nereye oturdukları, birleştirme ve ölçüm yazarken hata ayıklamanın omurgasıdır. Bu sayfa, taşıyıcı devrenin iskeletini QuantumCircuit yapısı sayfasında anlattık; burada ise kayıtların kendisi, adlandırma disiplini ve çoklu kaynakları tek çatı altında topluyoruz. Ölçümün olasılık yorumu site genelinde ölçüm ve çökme başlığında tutulur; API tarafındaki ayrıntılar ölçüm mantığı sayfasına bırakıldı.
Hat, Bit ve Nesne Kimliği
Çizimde gördüğünüz her yatay çizgi, Python tarafında somut bir nesneye karşılık gelir. Bu nesne, “ben kaçıncı kübitim?” sorusunun yanında “hangi koleksiyonun parçasıyım?” bilgisini de taşır. Aynı sayısal indeks farklı kayıtlarda yeniden kullanılabilir; fakat farklı Qubit örnekleri olarak kalırlar. Bu ayrım, büyük devrelerde gözden kaçan ve birleştirme sırasında patlayan hataların ana kaynağıdır.
Neden yalnızca tamsayı indeksi yetmez?
qc.h(0) notasyonu ergonomiktir; çünkü devredeki düz kübit sırasının sıfırı nettir. Ancak birden fazla QuantumRegister eklediğinizde, aynı yerel indeks iki farklı kayıtta bulunabilir. Derleyici veya insan gözü yerel indekse bakarken, çalışma zamanı düz listeyi kullanır. Kayıt nesneleri üzerinden adreslemek (qr[1]) bu belirsizliği azaltır.
Klasik hatlar ayrı bir dünya
Clbit nesneleri ölçüm sonuçlarını taşır; kuantum durumının matematiksel vektör uzayına ait değillerdir. Bu yüzden klasik genişliği (tek bit mi, çok bitlik bir sözcük mü) seçerken, hangi ölçümün hangi klasik bloğa yazılacağını önceden tasarlamak gerekir. Aksi halde transpiler veya çalıştırıcı beklenmedik şekilde ek klasik hat açabilir veya ölçüm satırını reddedebilir.
QuantumRegister ve ClassicalRegister
Her iki kayıt türü de temelde “sabit uzunluklu bir dizi” soyutlamasıdır: boyut oluşturma anında kilitlenir, her slotta bir bit nesnesi üretilir. İsim alanı isteğe bağlıdır; fakat üretim ve hata günlüklerinde ayırt edicilik sağladığı için anlamlı önekler kullanmak önerilir. Klasik kayıtta “genişlik”, o hatta birikecek ikili sonuçların sayısıdır; kuantum kayıtta ise kübit sayısıdır.
Anonim kayıtlar ve açık kayıtlar
QuantumCircuit(nq, nc) çağrısı, içeride görünmez kayıtlar açarak hızlı prototipleme sunar. Aynı mantığı üretim kodunda sürdürmek mümkündür; fakat kayıt sınırlarını ifade etmek zorlaşır. Açık QuantumRegister / ClassicalRegister kullanımı, modüler tasarımda okunabilirliği ve birleştirme sırasında hat eşlemesini belirginleştirir.
Dilim ve yineleme
Kayıt üzerinde dilim almak (qr[0:2]) yeni bir kayıt üretmez; mevcut Qubit örneklerine bağlı bir görünüm sunar. Bu, ölçüm veya çok kübitli kapıya argüman listesi hazırlarken Python dilinin doğal araçlarını kullanmanızı sağlar. Dilimin sınırları dışına taşmak, diğer Python koleksiyonlarında olduğu gibi anında hata verir.
İsim Alanı ve Çakışmalar
Aynı devre içinde kayıt adlarının çakışması, okunabilirlik sorunundan öte bazen geçersiz durumlar doğurur. Qiskit sürümleri arasında tam davranış farklılaşabilir; savunmacı yaklaşım, her kayda benzersiz ve kısa bir önek vermektir. Özellikle otomatik üretilen alt devreleri birleştirirken, iç içe geçen qr0 isimleri kafa karıştırır; üst devrede anlamlı yeniden adlandırma veya name parametresi ile devre etiketi kullanmak faydalıdır.
Devre adı ile kayıt adı
QuantumCircuit(..., name="vqe_block") gibi bir devre etiketi, iş kuyruğunda ve çizim başlığında görünür; kayıt adlarından farklı bir isim alanıdır. İkisini birlikte düşünmek, laboratuvar defterlerinde ve sürüm kontrolünde iz sürmeyi kolaylaştırır.
Devreye Bağlama: Oluşturucu ve add_register
Kayıtlar ya oluşturucuya doğrudan verilir ya da boş bir iskelet devreye sonradan add_register ile eklenir. İlk yol, çoğu zaman daha okunaklıdır; ikinci yol ise klasik hatları yalnızca ölçüm yaklaştığında açmak gibi geç bağlama senaryolarında kullanılır. Her iki durumda da düz qubits listesi, eklemenin sırasına göre büyür; bu sıra çizimdeki üstten alta hat düzenini belirler.
Mevcut kaydı yeniden kullanma
Aynı QuantumRegister örneğini birden çok devrede paylaşmak teknik olarak mümkündür ve bazen kasıtlıdır (örneğin iki blok aynı fiziksel hatta dokunmalıdır). Fakat yan etkileri vardır: bir devrede yapılan değişiklik diğerinin bağlamını da değiştirir. Çoğu eğitim ve üretim akışında taze kayıt veya copy() ile kopya kullanmak daha güvenlidir; ayrıntılı birleştirme kuralları birleştirme ve ters devre sayfasında işlenir.
Geç eklenen klasik hatlar
Bazı akışlarda önce yalnızca kuantum kayıtları açılır; ölçüm ekleneceği anda ClassicalRegister sonradan bağlanır. Bu, ara aşamalarda geçici olarak “ölçümsüz” devreler taşımanıza izin verir. Unutmayın: çalıştırıcıya göndermeden önce ölçüm veya koşullu yazım için yeterli klasik genişliğin açıldığını doğrulamak sizin sorumluluğunuzdadır; aksi halde iş kuyruğu reddedilir veya otomatik genişletme davranışı sürümünüze bağlı olarak farklılık gösterebilir.
Düz Sıra, Dilim ve Yerel İndeks
qc.qubits listesi, devredeki tüm Qubit örneklerini ekleme sırasına göre verir. Çoklu kayıt kullanıldığında, listenin başı genelde ilk kaydın sıfırıncı kübitidir; fakat bu “fiziksel öncelik” anlamına gelmez, yalnızca veri modeli sözleşmesidir. Çizim çıktısı ile bu listeyi eşleştirmek, transpilasyon öncesi ve sonrası karşılaştırmalarda ilk kontrol adımı olmalıdır.
Yerel indeks ve düz indeks karışması
Bir Qubit nesnesinin yerel indeksi, doğduğu kayıt içindeki konumu gösterir. Düz listedeki konumu ise devre genelinde farklı olabilir. Kapı çağrılarında tamsayı kullanırken düz indeksi, nesne kullanırken kimliği hedeflersiniz; ikisini aynı satırda karıştırmamak için küçük devrelerde birim test yazmak ucuz bir sigortadır.
Çizim sırası ve okuma alışkanlığı
Metin tabanlı çizimde üst satır genelde düz listenin başına yakın olur; fakat stil seçenekleri ve transpilasyon çıktısı bu izlenimi değiştirebilir. Önemli olan, bir kez seçtiğiniz okuma disiplinini deney boyunca sabit tutmaktır: ya daima qc.qubits dökümünü referans alın ya da daima kayıt nesneleri üzerinden gidin. Karışık stil, ekip çalışmasında en sık görülen kayıt hatalarının başlıca kaynağıdır.
Çoklu Kayıt ve Toplu Ölçüm
Birden fazla kuantum kaydı tek devrede birleştiğinde, ölçüm satırları genellikle paralel yazım ister: her kübit sonucu bir klasik bite düşmelidir. Kayıt düzeyinde measure(qr, cr) çağrısı, iki kaydın uzunluğunun eşleştiği durumlarda okunabilirliği artırır. Kısmi ölçüm veya farklı permütasyon gerektiğinde, açık kübit ve klasik bit listeleri vermek daha şeffaftır.
Ancilla ve çalışma alanı ayrımı
Kayıtları “asıl veri” ve “ancilla çalışma alanı” diye ayırmak yalnızca isimlendirme disiplinidir; Qiskit bunu zorunlu kılmaz. Yine de iki ayrı QuantumRegister olarak modellemek, çizimde görsel ayrım ve kod incelemesinde zihinsel yükü düşürür. Geri yükleme (uncompute) desenlerinde ancilla kaydının sonunda tekrar |0⟩ dilimine döndüğünü doğrulamak, kayıt sınırlarını okumayı kolaylaştırır.
Paylaşımlı Hatlar ve Alt Devre Eşlemesi
İki devreyi birleştirirken yalnızca “aynı boyutta oldukları” yetmez; hatların birebir aynı nesneye mi yoksa aynı konuma yeniden numaralandırılmış yeni nesneye mi bağlanacağı ayrı bir karardır. Nesne kimliği ile eşleme, deneyleri tekrarlanabilir kılar; düz indeks ile eşleme ise hızlı prototiplemede kullanılır ve dikkat ister. Bu ayrım, modüler kütüphane tasarımında en sık tartışılan tasarım seçimidir.
Alt devre talimatı ve dış hat listesi
Bir devreyi talimat olarak gömdüğünüzde, içerdeki kayıt adları dış dünyadan izole edilmiş gibi görünse de, hat eşlemesi dışarıdan verilen Qubit listesiyle yapılır. Liste uzunluğu ve sırası uyuşmazsa hata alırsınız; uyuşup anlam yanlışsa ise sessizce yanlış devre çalışırsınız. Bu yüzden birleştirme öncesi küçük şemalar çizmek hâlâ en iyi statik analiz aracıdır.
Klasik Genişlik ve Ölçüm Hedefi Seçimi
Klasik kayıt genişliği, ölçüm sonuçlarının kaç ayrı ikili hatta yazılacağını belirler. Çok kübitlik ölçüm sonucunu tek bir tamsayı olarak okumak isteyen desenlerde, geniş klasik kayıtlar ve bit sırası sözleşmesi birlikte düşünülmelidir. Qiskit’in sonuç sözlüklerinde anahtar dizgilerinin sırası ile kayıt içi bit sırası arasındaki eşleme, deney tasarımında gözden kaçan ikinci bir boyuttur.
Ölçüm satırının anlamsal ayrıntıları ve koşullu yazım için ölçüm mantığı ve klasik kontrol sayfalarına geçilir; burada yalnızca kayıt boyutunun API ile uyumlu seçilmesi vurgulanır.
Kod Laboratuvarı
İlk blok çoklu adlandırılmış kayıt ve toplu ölçüm gösterir. İkinci blok düz kübit listesini dökerek çizim sırası ile zihinsel modeli hizalar.
from qiskit import QuantumCircuit, QuantumRegister, ClassicalRegister
data = QuantumRegister(2, "data")
anc = QuantumRegister(1, "anc")
out = ClassicalRegister(2, "meas")
qc = QuantumCircuit(data, anc, out)
qc.h(data[0])
qc.cx(data[0], data[1])
qc.cx(data[1], anc[0])
# İki kübiti aynı genişlikteki klasik kayda paralel yaz.
qc.measure(data, out)
print(qc)
from qiskit import QuantumCircuit, QuantumRegister, ClassicalRegister
r0 = QuantumRegister(1, "block0")
r1 = QuantumRegister(2, "block1")
qc = QuantumCircuit(r0, r1, ClassicalRegister(1, "c0"))
print("Düz kübit sırası (çizimde üstten alta eşlenir):")
for i, q in enumerate(qc.qubits):
print(i, q)
qc.measure(qc.qubits[0], qc.clbits[0])
print(qc)
İleri Okuma ve Özet
Kayıt disiplini, büyük devrelerde “sessiz yanlış” hatalarını azaltır. Bir sonraki doğal duraklar: kapıların matematiksel modeli (kapılar ve ünite mantığı), birleştirme kuralları (birleştirme ve ters devre) ve ölçüm satırının semantiği (ölçüm mantığı).
- QuantumCircuit yapısı — talimat kuyruğu ile kayıt ilişkisi.
- Parametrik devreler — kayıtlar sabit kalırken kapıların sayısal bağlanması.
- Dinamik devreler — klasik sonuca bağlı yeniden yürütme ve kayıt yaşam döngüsü.