Ölçüm mantığı — klasik yazma ve talimat sırası
Qiskit’te ölçüm yalnızca “sonunda bir göz atma” değildir; devre metninde açık bir talimat olarak durur ve kuantum durumu ile klasik sonuçlar arasında köprü kurar. Bu sayfa, Born kuralının matematiğini tekrar etmez — o anlatım ölçüm ve çökme başlığında tutulur. Burada ise measure çağrılarının imzası, klasik bitlere yazımın nasıl kodlandığı, aynı hatta ardışık ölçümlerin anlamı ve simülatör çıktısının nasıl okunacağı üzerinde duruyoruz. Kayıt ve hat modeli için kayıt sistemleri, ünite kapılar için kapılar ve ünite mantığı sayfalarına dönüş yapılabilir.
Ölçüm Talimatı ve Ünite Dilinden Kopuş
Devredeki üniter adımlar durum vektörünü döndürür veya yansıtır; ölçüm ise Born kuralına göre bir sonucu seçer ve bunu klasik dünyaya yazar. Qiskit modelinde bu adım, .data listesinde diğer kapılarla aynı hiyerarşide bir satır olarak bulunur. Dolayısıyla “ölçüm yokmuş gibi” ünite matrisi çıkarmak veya durum vektörü ile tüm yürütmeyi tek blokta temsil etmek genelde mümkün olmaz; araçlarınızı seçerken bu kopuş bilinçli olarak uygulanmalıdır.
Çizim ve sembol seti
Metin çiziminde ölçüm kutusu, hangi kübitin hangi klasik çizgiye yazıldığını gösterir. Çoklu ölçüm tek satırda birleştirilebilir veya ayrı satırlara bölünebilir; bu yalnızca sunum farkıdır, sıra ve eşleme aynı kalır. Okuyucu için asıl mesele, çizimin estetiği değil CircuitInstruction düzeyindeki argüman listesidir.
measure İmzaları ve measure_all
En yaygın çağrı biçimi, tamsayı indeksleri veya Qubit / Clbit nesneleri ile çift liste vermektir: her kübit, sırayla bir klasik bite bağlanır. Kayıt nesneleriyle measure(qr, cr) yazımı okunabilirlik sağlar; uzunlukların birebir eşleşmesi zorunludur. measure_all ise tüm kübitleri, devrede yeterli klasik kapasite varsa otomatik eşler — hızlı prototipleme için uygundur, fakat hangi klasik satırın hangi veriyle dolduğunu ince deneylerde manuel yazmak daha güvenlidir.
inplace ve devre kopyası
Ölçüm satırı eklemek devreyi yerinde değiştirir. Aynı “şema”yı hem ölçümlü hem ölçümsüz kullanacaksanız, copy() ile ayrı örnekler oluşturun. Bu disiplin, ünite doğrulama ve ölçümlü deney akışını yan yana tutarken sık atlanan bir adımdır.
Hedef Eşleme: Permütasyon ve Kayıt Düzeyi
measure([q0, q1], [c1, c0]) gibi bir permütasyon, aynı fiziksel Bell deneyinde bile sonuç dizgisinin nasıl yorumlanacağını değiştirir: hangi kübitin hangi klasik sütuna düştüğü, histogram eksenlerinde görünür. Kayıt düzeyinde yazmak, uzun listelerde indeks kaymasını azaltır; yine de ekip içi sözleşme gerektirir: “sol bit mi sağ bit mi önce yazılıyor?” sorusunun yanıtı yalnızca koda değil, get_counts anahtar dizgilerine de yansır.
Taban dönüşümü ve ölçüm
Hesaplama tabanı dışında ölçmek için önce ünite dönüşümle tabanı döndürüp sonra standart ölçüm uygulanır. Bu, kapı cebiri ile aynı hikâyenin devamıdır; burada yalnızca şunu vurguluyoruz: ölçüm satırı her zaman “standart ölçüm kutusu” olarak çizilebilir, çünkü dönüşüm ünite kısımda tüketilmiştir. Ayrıntılı kapı tarafı kapılar ve ünite mantığı sayfasında toplanır.
Sayım Anahtarı ve Bit Dizgisi Sırası
Simülatör veya donanım işi tamamladığında, çoğu kullanıcı counts benzeri bir sözlükle karşılaşır: anahtarlar ikili dizgiler, değerler tekrar sayılarıdır. Bu dizgideki karakter sırasının, devredeki clbits düzenine nasıl oturduğu sürüm ve çalıştırıcıya göre ince farklar gösterebilir. Bu yüzden üretim öncesi küçük bir devrede tek atışlık deneyle “hangi karakterin hangi klasik bite denk geldiğini” tabloya dökmek, yanlış yorumlamayı kökten keser.
Kenar dağılımlar
Çok kübitlik sistemde yalnızca bir alt kümenin marjinal dağılımına bakmak istiyorsanız, ya ilgili kübitleri ölçüp diğerlerini yok sayarsınız ya da tam durumdan marjinalize edersiniz — ikinci yol ölçüm sonrası ham sayımlarla doğrudan verilmez. Bu ayrım, “neden histogram tek başına yeterli değil?” sorusunun pratik cevabıdır.
Çoklu klasik kayıt ve birleşik anahtar
Birden fazla ClassicalRegister kullanıldığında, ham sayım anahtarının hangi kaydın hangi bitlerine denk geldiği yine sözleşme meselesidir. Çözüm, ya kayıtları tek bir geniş kayıtta birleştirmek ya da sonuçları çözümlendikten sonra kendi tablonuzu üretmektir. Otomatik çizimler güzel görünse de, raporlama katmanında insan okunur etiketler şarttır.
Zamanda Yeri: Erken veya Gecikmeli Ölçüm
Ölçüm satırı devrenin sonuna yazılmak zorunda değildir: ara ölçüm, ancilla temizliği veya hata ayıklama akışlarında ortaya çıkar. Ölçümden sonra aynı kübitte yeni ünite kapılar çalıştırmak mümkündür; bu, o kübit için yeni bir kuantum hazırlık–evrim döngüsü başlatır (klasik sonuç elinizdeyken bir sonraki adımı planlamak farklı bir konudur ve dinamik akış gerektirir).
Klasik geri besleme
Ölçüm sonucuna bağlı olarak farklı ünite blokların çalışması, Qiskit’in dinamik devre özellikleriyle modellenir; bu sayfada yalnızca arayüzün ölçümle birleştiği noktayı işaretliyoruz. Koşullu yürütme ve yazım semantiği için dinamik devreler ve klasik kontrol sayfalarına geçilir.
Tekrar Ölçüm, Reset ve Karıştırılmaması Gerekenler
Aynı klasik bite ikinci kez yazan yeni bir ölçüm, önceki sonucun üzerine yazar; bu, “iki kez ölçtüm, iki sonuç sakladım” beklentisiyle çelişebilir. Çoklu sonuç saklamak için ya daha geniş bir klasik kayıt açmalı ya da sonuçları dışarıda (örneğin iş kuyruğu meta verisinde) birleştirmelisiniz. reset ise kübiti bilinçli olarak |0⟩ hazırlığına döndürür; ölçümle karıştırılmamalıdır: biri klasik bilgi üretir, diğeri kuantum durumunu yeniden kurar.
Ancilla temizliği
Çok gövdeli devrelerde ancilla kübitlerini ölçümle “serbest bırakmak” yerine ünite geri sarma ile temizlemek sık bir desendir; hangi yolun seçileceği hata modeli ve doğrulama stratejisine bağlıdır. Ölçüm, ancillayı klasik dünyaya atanır; geri sarma ise kuantum bilgisini ünite yolla geri alır.
Shots, Bellek Örnekleri ve İstatistik
Ölçüm içeren bir iş çalıştırıldığında, çoğu arka uç çoklu tekrar (shots) üzerinden frekans toplar. Shot sayısı arttıkça olasılıkların kestirimi iyileşir; fakat her shot bağımsız bir yürütmeyi temsil eder ve ara ölçümler varsa aynı devre metni tekrar tekrar baştan işlenir. Bellekte saklanan örnek dizileri (shot başına klasik sonuç dizisi) isteğe bağlıdır; büyük deneylerde G/Ç maliyetini artırır, fakat hata ayıklamada paha biçilmezdir.
Gürültü ve istatistiksel yorum
Donanımda ölçüm hataları ve okuma yanlılıkları histogramı bozar; bu sayfa gürültü kanalını modellemez. Yine de şunu hatırlatmak gerekir: ölçüm mantığı doğru olsa bile, yeterli shot olmadan “kapı yanlış” sanılabilir. İstatistiksel güven aralığı hesaplamayı dış analiz araçlarına bırakmak genelde doğru ayrımdır.
Shot sayısı ve maliyet
Her shot bağımsız bir deneydir; ara ölçüm içeren devrelerde toplam kuantum adımı shot ile çarpılarak büyür. Bu yüzden “ölçümü erkene alıp shotu düşüreyim” stratejisi her zaman daha ucuz değildir: klasik sonuç üretimi ve olası ek senkronizasyon maliyetini de hesaba katın.
Ünite Araçlar ve Ölçümlü Devre
quantum_info.Operator veya durum vektörü temsilcileri, ölçüm içermeyen devreler üzerinde anlamlıdır. Ölçüm eklendiğinde “tek ünite” resmi kapanır; analiz ya ölçüm öncesindeki prefikse çekilir ya da tam dağılım diline geçilir. Bu uyarı, ünite testleri yazanların sık düştüğü tuzağı özetler.
Ölçüm öncesi prefiks
Aynı devreyi hem ünite analiz hem ölçüm için kullanacaksanız, ölçüm satırlarını ayıran bir kopya üzerinde çalışmak veya ölçüm öncesi prefiksi ayrı bir QuantumCircuit olarak üretmek gerekir. Hangi yardımcı yordamların sürümünüzde bulunduğunu resmi belgelere göre doğrulayın; amaç, ölçümün yanlışlıkla ünite cebirine sokulmamasını sağlamaktır.
Kod Laboratuvarı
İlk blok düzgün eşleşmiş ölçüm ve beklenen dengeli histogramı gösterir (simülatör çağrısı kasıtlı olarak dışarıda bırakılmıştır). İkinci blok, kübit ve klasik bit permütasyonunun aynı fiziksel durumda bile dizgi yorumunu nasıl değiştirdiğini gösterir — küçük devrede çalıştırıp anahtarları karşılaştırın.
from qiskit import QuantumCircuit
qc = QuantumCircuit(2, 2)
qc.h(0)
qc.cx(0, 1)
qc.measure([0, 1], [0, 1])
# Çalıştırıcı eklediğinizde counts anahtarlarını bu devreyle eşleştirin.
print(qc)
n_meas = sum(1 for inst in qc.data if inst.operation.name == "measure")
print("Ölçüm talimatı sayısı:", n_meas)
from qiskit import QuantumCircuit
qc_a = QuantumCircuit(2, 2)
qc_a.h(0)
qc_a.cx(0, 1)
qc_a.measure([0, 1], [0, 1])
qc_b = QuantumCircuit(2, 2)
qc_b.h(0)
qc_b.cx(0, 1)
# Klasik hedef sırasını ters çevir: aynı kuantum satırı, farklı yazım.
qc_b.measure([0, 1], [1, 0])
print("A:", qc_a)
print("B:", qc_b)
İleri Okuma ve Özet
Ölçüm, Qiskit’te ünite evrimin dışına çıkan ilk somut adımlardan biridir; bu yüzden hem çizimde hem sayımda sözleşmeyi erken kilitlemek gerekir. Klasik geri besleme ve koşullu bloklar için klasik kontrol, tam akış için dinamik devreler sayfalarına geçilir.
- QuantumCircuit yapısı — talimat kuyruğunda ölçümün yeri.
- Kayıt sistemleri — ölçüm öncesi klasik kapasite ve kayıt düzeni.
- Kapılar ve ünite mantığı — taban değiştirerek ölçüm.