Bell durumu — moment tabanlı Cirq reçetesi
Qiskit sayfasında kurduğumuz iki kapılık Bell devresini bu kez Cirq'in dilinde yeniden yazıyoruz. Kuantum mekaniği aynı kalır: ilk kübit Hadamard ile süperpozisyona alınır, CNOT iki kübiti dolanık hale getirir. Fark, Cirq'in devreyi moment denilen zaman dilimleri ve donanım topolojisine yakın kübit modelleri üzerinden düşünmesidir.
Cirq ve Bell Durumu: Mimarisi Fark
Cirq, özellikle Google'ın NISQ dönemi donanım deneylerinden gelen bir bakışla tasarlanır. Bu yüzden devreyi yalnızca "hangi kapılar var?" sorusuyla değil, aynı zamanda hangi kapılar aynı zaman diliminde çalışabilir? ve kübitler donanım üzerinde nerede duruyor? sorularıyla da ele alır.
Aynı zaman diliminde hangi kapılar? Cirq devresi ardışık Moment dilimlerinden oluşur; bir momentte yan yana duran operasyonlar, birbirleriyle çakışmıyorsa aynı zaman adımında yürütülmek üzere planlanır. Aynı kübit üzerinde üst üste binen kapılar veya aynı kübit çiftini aynı anda çelişkili biçimde kullanan işlemler sonraki momentlere kayar; iki farklı kübit üzerindeki tek-kübit kapıları ise tipik olarak paralel zamanlanabilir. Bell örneğindeki gerçek sıra ve sezgi tablosu Mantıksal akış bölümünde açılır.
Kübitler donanımda nerede duruyor? LineQubit(i) veya GridQubit(satır, sütun) gibi nesneler mantıksal kübitlere soyut bir "adres" verir: doğrusal hat veya ızgara üzerinde hangi düğümün sizin kübitiniz olduğu kodda görünür kalır. İki kübitlik kapılar gerçek çipte yalnızca fiziksel olarak bağlı düğüm çiftlerinde doğrudan uygulanır; Bell için CNOT’un kontrol ve hedefi bu bağlantıya uymalı ya da ara düğümler üzerinden yönlendirme (ör. SWAP zinciri) ile hizalanmalıdır. Simülatörde adres seçimi çoğu zaman yalnızca etikettir; gerçek donanıma aktarımda ise yerleşim ve komşuluk kısıtları derinlik ve gürültüye doğrudan etki eder.
Bell durumu açısından matematik değişmez: . Ancak Cirq tarafında bu durum, LineQubit veya GridQubit nesneleriyle açıkça seçilmiş kübitlerin üzerine yerleştirilir. Böylece örnek küçük olsa bile düşünme biçimi gerçek cihaz topolojisine daha yakındır.
-
Qiskit bakışı
QuantumCircuit(2, 2) ile kuantum ve klasik kayıtlar açılır; kübitler indeksle q[0], q[1] benzeri soyut satırlarda tutulur. Kapılar genelde sırayla eklenir; paralel zamanlama çoğu zaman derleyici veya transpile adımında görünür hâle gelir.
-
Cirq bakışı
Önce somut kübit nesneleri (Bell örneğinde sıkça LineQubit(0), LineQubit(1)) seçilir; operasyonlar cirq.Circuit içinde verilir ve devre çizildiğinde hangi kapının hangi düğüme oturduğu metinde açık kalır.
-
Moment fikri
Bir moment, aynı anda yürütülmeye aday operasyonların zaman dilimidir; aynı kübit satırında çakışan kapılar otomatik olarak sonraki dilime kayar. Böylece gerçek donanımdaki “aynı t süresinde ne yapılabilir?” sorusu kodda okunabilir.
-
Adres ve komşuluk
LineQubit / GridQubit kübitlere soyut bir yer verir; iki kübitlik kapılar gerçek çipte yalnızca bağlı düğüm çiftlerinde doğrudan ucuzdur. Kontrol–hedef komşu değilse Cirq yine aynı matematiği kurar, fakat donanıma gönderirken ara kübitler üzerinden yönlendirme (ör. SWAP) derinliği artabilir.
Mantıksal Akış
Cirq'de Bell durumu oluşturma mantığı kuantum mekaniği açısından Qiskit ile aynıdır; değişen şey yazım dili ve devreyi temsil etme biçimidir. İki kübit seçilir, ilk kübit süperpozisyona alınır, CNOT ile ikinci kübit ona bağlanır ve ölçüm sonuçları klasik bir anahtar altında toplanır. Aşağıdaki tablo ve numaralı özet akışı sabitler; durum cebiri satır satır işlendiği yer Algoritmanın Cirq reçetesi bölümüdür.
Moment nedir? Cirq devreyi ardışık zaman dilimlerine böler; aynı anda uygulanabilen kapılar aynı momente yerleşir, aynı kübite dokunan kapılar ise farklı momentlere ayrılır. Bu bölümdeki küçük Bell devresinde sıra zaten tek yönlüdür: önce yalnız q0 üzerinde H, ardından iki kübiti birlikte kullanan CNOT — dolayısıyla en az iki moment doğal olarak üst üste binmez.
Başlangıç → H → CNOT (tek bakışta)
| Adım | İşlem | Sezgi |
|---|---|---|
| Başlangıç | |00⟩ | Kompakt yazım |00⟩; açık tensör çarpımı |0⟩⊗|0⟩. Her iki kübit de hesaplama tabanında 0. |
| Hadamard | (|00⟩ + |10⟩)/√2 | Yalnız q0 süperpozisyonda; |+⟩|0⟩ ile aynı durum. CNOT için “kontrol” dalı hazırdır. |
| CNOT | (|00⟩ + |11⟩)/√2 | Kontrol |1⟩ dalında hedef çevrilir; ortaya dört Bell durumundan Φ⁺ gelir — iki dal birlikte hareket eder (dolanıklık). |
-
1
Kübit Tanımlama
En yalın örnek için cirq.LineQubit(0) ve cirq.LineQubit(1) seçilir; bunları sayı doğrusu üzerinde yan yana iki düğüm gibi düşünmek, çipi düşündüğünüzde mimari bölümündeki adres sezgisiyle örtüşür. İndeksler simülatörde sırayı sabitler; donanıma gönderirken eşleme ve komşuluk ayrıca çözülür.
-
2
Devre Oluşturma
cirq.H(q0) ve cirq.CNOT(q0, q1) bir cirq.Circuit içine eklenir; Cirq bunları çakışmayacak şekilde momentlere böler (bu ikili için tipik görünüm: bir zaman diliminde H, bir sonrakinde CNOT). Tam matematiksel evrim ve durum formülleri bir sonraki bölümde adım adım yazılır.
-
3
Simülasyon ve Ölçüm
cirq.Simulator() ile devre çalıştırılır; repetitions Qiskit'teki shots ile aynı rolde — ölçüm sonuçları tekrarlanarak örneklenir. Çıktı çoğu zaman sayım histogramıdır; yeterince tekrarda 00 ve 11 yaklaşık eşit görünür, 01 ve 10 ise ideal simülatörde kaybolur. Tam kod ve parametreler Cirq kodu bölümündedir.
-
4
Dağılım ve Doğrulama
Histogramı okurken olasılığı tek başına bir ölçümde değil, tekrarların oranında ararsınız. Beklenen Bell örüntüsü ve sayısal sapma sezgisi Devre ve doğrulama bölümündeki doğrulama kutusunda derlenir; böylece bu akış ile ASCII/SVG şema arasında köprü kurulur.
Algoritmanın Cirq Reçetesi
Hedef durum olduğu için başlangıçta iki kübit de durumundadır. Hadamard ilk kübiti ve arasında eşit olasılıklı süperpozisyona taşır; CNOT ise bu iki dalı ikinci kübite kopyalayarak korelasyonu kurar. Aşağıda her satır bir kuantum durum adımıdır; sağdaki kutu aynı satırın Cirq veya zaman dilimi ile nasıl eşleştiğini özetler (Mantıksal akış tablosuyla uyumludur).
-
Adım 1 · Başlangıç
İki LineQubit seçilir: q0 ve q1. Başlangıç durumu — yani tensör çarpımı açık yazılmış .
-
Adım 2 · Hadamard
cirq.H(q0), ilk kübiti durumuna getirir. İkinci kübit hâlâ durumundadır; birlikte ifade şeklinde yazılır.
-
Adım 3 · CNOT
cirq.CNOT(q0, q1), kontrol kübiti dalındayken hedef kübitte X etkisini uygular. Böylece dalı olur ve sonuç durumudur.
Cirq Kodu
Aşağıdaki örnek tek dosyada Bell durumunu kurar, Cirq'in metin tabanlı devre çizimini yazdırır ve 1024 tekrar sonunda ölçüm histogramını üretir.
import cirq
# 1. Kübitlerin hazırlanması
# Yan yana iki kübit tanımlıyoruz.
q0 = cirq.LineQubit(0)
q1 = cirq.LineQubit(1)
# 2. Devrenin oluşturulması
circuit = cirq.Circuit(
cirq.H(q0), # İlk kübit süperpozisyona
cirq.CNOT(q0, q1), # İkinci kübit ile dolanıklık
cirq.measure(q0, q1, key="sonuc") # Ölçüm
)
# 3. Devrenin yazdırılması
print("Cirq Devre Şeması:")
print(circuit)
# 4. Simülasyon
simulator = cirq.Simulator()
samples = simulator.run(circuit, repetitions=1024)
# 5. Sonuçların analizi
counts = samples.histogram(key="sonuc")
print("\nÖlçüm Sonuçları (0 ve 3 değerleri 00 ve 11'i temsil eder):")
print(counts)
Kodun Derinlemesine Analizi
cirq.LineQubit kübitleri bir sayı doğrusu üzerindeki noktalar gibi modeller. Bu örnek için iki nokta yeterlidir: LineQubit(0) ve LineQubit(1). Bu yapı, kübitlerin düz bir çizgi üzerinde dizildiği sistemleri — bazı süperiletken çiplerde olduğu gibi — modellemek için biçilmiş kaftandır. Daha karmaşık cihazlar (örneğin Google'ın Sycamore işlemcisi) için aynı fikir GridQubit(row, col) ile iki boyutlu ızgaraya taşınır. Bell durumunu bu nesnelerle yazmak, devreyi ileride gerçek bir çipe gönderdiğinizde kapıların hangi fiziksel koordinatlarda çalışacağını önceden tasarlamanıza olanak tanır.
cirq.Circuit(...) içine verdiğimiz her ifade bir operasyondur. Cirq bu operasyonları momentlere ayırır: farklı kübitlere dokunan kapılar aynı momentte yer alabilir, aynı kübite dokunanlar ise zaman içinde sıralanır. Bu sayede devrenin "ne zaman?" boyutu koddan daha doğrudan okunur.
repetitions=1024, Qiskit'teki shots parametresinin Cirq karşılığıdır. Tek bir ölçüm Bell durumunun olasılıksal doğasını göstermez; dağılımı görmek için devreyi birçok kez aynı başlangıçtan çalıştırırız.
Sonuç formatı Cirq histogramı çoğu zaman tam sayı anahtarlarla verir. İki kübitlik ölçümde 0 binary 00'ı, 3 ise binary 11'i temsil eder. İdeal simülatörde yalnızca bu iki değeri görüyorsanız devre dolanıklığını doğru kurmuştur.
Aynı Devre ( İki Temsil )
Cirq devreyi terminale yazdırırken metin tabanlı, momentlere ayrılmış bir kutucuk çıktısı verir. Aynı devreyi sitedeki SVG çiziminde ele aldığımızda her moment bir kolona karşılık gelir. Aşağıda iki temsil yan yana duruyor; gözünü ASCII'den SVG'ye kaydırırken aynı yapıyı iki dilde tarıyorsun.
print(circuit) çıktısı
0: ───H───@───M('sonuc')───
│ │
1: ───────X───M────────────
Moment 0 · H Moment 1 · CNOT Moment 2 · ölçüm
Premium devre çizimi
renk · kapı tipi çizgi · kontrol-hedef
Devre ve Doğrulama
Cirq'in metin çıktısı yaklaşık olarak aşağıdaki zaman sırasını gösterir: ilk momentte H, ikinci momentte CNOT, son momentte ölçüm. SVG şeması aynı akışı görsel olarak özetler.
Şemayı adım adım oku
-
Moment 0 · Hadamard İlk sütunda H yalnızca üst hat üzerinde (q0); tek kübitlik kapı olduğu için bu anda alt çizgi dokunulmamış kalır.
Figürde Üst yatay çizgi q0; sarı H kutusu Moment 0 başlığının altında yalnız bu çizgide görünür.
-
Moment 1 · CNOT CNOT kontrolü üstte (q0), hedefi altta (q1) bağlar; şekilde dolu daire ile çarpı içeren daire tipik kontrol–hedef gösterimidir.
Figürde İki hattı birleştiren dikey hat Moment 1 sütununda; dolanıklık tam da bu iki kübitlik blokta oluşur (matematik özeti reçete bölümünde).
-
Moment 2 · Ölçüm İki M kutusu aynı anda (aynı sütunda) her iki hattı klasik kayda indirger; kesik çizgiler alttaki sonuc çizgisine iner. İdeal simülasyonda yalnızca 00 ve 11 sayımları kalır.
Figürde İki ölçüm Moment 2 altında hizalı; histogramda kullanılan klasik anahtar kod örneğinde sonuc olarak geçer — bkz. Cirq kodu. Beklenen oranlar için hemen alttaki doğrulama özeti.
Devrenin hedefi: .
Histogramda 0 ve 3 yaklaşık yarı yarıya görünür. Bu değerler sırasıyla 00 ve 11 ölçüm sonuçlarına karşılık gelir.
- 0 / 00 ≈ %50
- 3 / 11 ≈ %50
- 1 / 01 / 2 / 10 → 0 (ideal sim.)