1. Ana sayfa
  2. Algoritmalar
  3. Bell ve iletişim
  4. GHZ durumu · Cirq
Bell ve iletişim · Cirq

GHZ durumu — N N kübit, tek bir nefes ile dolanıklık

Bell durumu iki kübiti tek bir kuantum sistemi olarak bağladı; GHZ ise aynı fikri N N kübite genişletir: 00 0 + 11 1 2 \frac{|00\ldots 0\rangle + |11\ldots 1\rangle}{\sqrt{2}} . Qiskit sayfasında bu zinciri yüksek seviyeli bir for döngüsü ile kurmuştuk; Cirq'te aynı reçete her CNOT'un devrenin toplam derinliğine bir moment olarak nasıl eklendiğini bizzat yönetmemize olanak tanır.

  • Çerçeve: Cirq
  • N N LineQubit (örnek: 3)
  • N N moment derinliği
  • 1024 repetition

GHZ ve Cirq Yaklaşımı

GHZ durumu, N N sayıda kübitin aynı anda maksimum düzeyde dolanık olduğu haldir: G H Z N = 1 2 ( 00 0 + 11 1 ) \ket{GHZ_N} = \frac{1}{\sqrt{2}}\bigl(|00\ldots 0\rangle + |11\ldots 1\rangle\bigr) . Tüm sistem ya kolektif olarak 0 |0\rangle ya da 1 |1\rangle ölçülür; aradaki karışık sonuçlar — 001 001 , 010 010 , \ldots — ideal bir devrede hiç görünmez.

Qiskit tarafında bu zincir devrenin sonuna bir for döngüsüyle eklenir; kapıların hangi zaman diliminde çalıştığı yorumlanmaz, derleyiciye bırakılır. Cirq ise ters yönden yaklaşır: kapıları doğrudan operasyonlar listesi olarak verir, sonra her operasyonu uygun ilk momente yerleştirir. GHZ devresi bu mantıkta öğretici bir örnektir, çünkü her yeni CNOT bir önceki kübitin sonucuna bağımlıdır — Cirq da bunu görüp her halkayı yeni bir momente taşır.

Ana fikir GHZ devresinde derinlik = N N . Yani N N kübitlik bir GHZ kurmak için N N moment harcanır: bir Hadamard ve ( N 1 ) (N-1) ardışık CNOT. Bu, "kuantum derinliği" kavramını somut olarak gözleyebileceğimiz en temiz örneklerden biridir.
  • LineQubit düzeni

    GHZ'de kübitlerin fiziksel sırası önemlidir. Cirq'in LineQubit modeli, sinyalin bir kübitten diğerine nasıl aktığını koddan doğrudan görselleştirmeye yardımcı olur. Qiskit tarafında kübitler arası mesafe varsayılan olarak sıfır kabul edilirken, bu sayfada kullandığımız LineQubit kübitlerin yan yana dizildiği bir fiber optik hattı ya da atom dizisi gibi davranan bir donanım topolojisini modeller.

  • Momentlerin birikimi

    Tipik GHZ hazırlığında zincir CNOT(q[0],q[1]), CNOT(q[1],q[2]), … şeklinde ilerir; her yeni iki kübitlik kapı, önceki kapının oluşturduğu ortak kuantum durumuna bakarak ilerlediği için aynı anda yürütülecek bir “paralel iş” değildir. Cirq bu yüzden bu kapıları aynı momente sıkıştırmaz; her halka için yeni bir zaman dilimi açar — üst üste bindirilecek tek şey, farklı kübitlere dokunan ve çakışmayan kapılardır (GHZ zincirinde böyle bir paralellik yoktur). Sonuç: bir H ve N−1 zincir CNOT için tipik olarak N moment derinliği (üstteki ana fikir kutusuyla uyumlu).

  • Donanım tasarımı

    İki boyutlu süperiletken veya benzeri çiplerde aynı mantığı kurarken GridQubit(satır, sütun) ile fiziksel olarak komşu düğümleri seçmek, iki kübitlik kapıların doğrudan uygulanabileceği çiftleri kodda görünür kılar; rastgele uzak indeksler seçilirse derleyici aynı matematik için ek SWAP veya yönlendirme ekleyerek derinliği ve hata şansını artırır. Doğrusal GHZ zinciri için bazen satır veya sütun boyunca bitişik bir “yürüyüş” seçmek yeterlidir; daha karmaşık topolojilerde ise önce harita üzerinde komşuluk çizerek kübit ataması yapmak iyi bir pratikir.

  • Ölçüm yoğunluğu · iki dal

    Ölçümden önce durum iki dalın süperpozisyonudur; hesaplama tabanında ölçüm yapılınca dalgalardan biri seçilir — ya bit dizisinin tamamı 0 ya tamamı 1. Histogramda iki yoğun tepe ve tam sayı kodlaması Devre ve doğrulama bölümünde; karışık klasik diziler temiz simülatörde beklenmez — donanımda görülürse gürültü okuması için yine aynı bölümdeki notlar yeterlidir.

Sezgisel benzetme · zincir aktarımı GHZ devresini bir fısıltı zinciri gibi düşün: ilk kübit Hadamard ile "ya 0 ya 1" diyerek bir karar verir, sonra her CNOT bu kararı bir sonraki kübite kelimesi kelimesine fısıldar. Zincirin sonuna varıldığında bütün kübitler aynı sözü taşır; bu yüzden ölçtüğümüzde ya hep 0 ya hep 1 görürüz. Cirq'in moment yapısı tam da bu fısıldama akışını koddan ayna gibi yansıtır.

Mantıksal Akış

GHZ devresinin matematiği, Bell kurulumunun doğrusal bir genişlemesidir: önce bir “lider” süperpozisyonu, sonra bu dal yapısını sırayla paylaşan CNOT halkaları. Bu bölümde odak kodun yazılış sırası ve hangi Cirq çağrısının neyi temsil ettiğidir; durumların satır satır cebiri Algoritmanın Cirq reçetesinde, moment ve topoloji sezgisi ise Cirq mimarisinde toplanır — böylece aynı hikâye üç kez tekrar etmez.

  1. 1

    Iteratif Kübit Tanımlama

    İhtiyaç duyduğun N N kübit cirq.LineQubit.range(N) ile tek seferde oluşturulur; Python dilinde bu, 0 ile N−1 arası indeksli LineQubit nesneleri üretmek demektir. Böylece hem döngüde qubits[i] / qubits[i+1] yazmak kolaylaşır hem de soyut hat üzerinde soldan sağa ilerleyen bir zincir hayali kurulur.

  2. 2

    Lider Kübitin Hazırlanması

    İlk kübit Hadamard ile süperpozisyona alınır: cirq.H(qubits[0]). Bu tek satır zincirin “tohumu”dur: sonraki CNOT adımları, tam olarak bu süperpozisyonun iki dalını çoğaltmayı hedefler; henüz başka kübite dokunulmamış olması, devre diyagramında da ilk momentte yalnız üst (veya ilk) hat üzerinde çalışan tek-kübit kapısı olarak görünür.

  3. 3

    Dolanıklık Zinciri (Cascading)

    Örneğin for i in range(N - 1): içinde cirq.CNOT(qubits[i], qubits[i + 1]) eklersiniz: her yeni iki kübitlik kapı, önceki kapının oluşturduğu ortak kuantum durumu bir kübit daha uzağa taşır. Cirq bu yüzden tipik olarak her halkayı ayrı bir momente yazar — paralelleştirilecek kadar bağımsız iki işlem değildir (klasik bir “önce ölç, sonra karar ver” akışı değil, tam tersine tek bir sürekli devre zaman çizelgesi).

  4. 4

    Kolektif Ölçüm

    Tüm kübitler tek bir klasik anahtar (key) altında ölçülür: cirq.measure(*qubits, key="ghz_sonuc"). Histogramda her tekrar için tek bir tamsayı görürsünüz; bu sayının ikilik gösterimi tüm kübitleri birlikte kodlar — örneğin üç kübitte yalnızca tam 000 veya tam 111 dizileri yoğunlaşır. Tam sayı–bit eşlemesi ve beklenen oranlar Devre ve doğrulama bölümünde özetlenir.

Algoritmanın Cirq Reçetesi

Burada yalnızca durum cebiri işlenir: önce N = 3 N = 3 için satır satır tensör yazımı, en altta ise genel G H Z N \ket{GHZ_N} özeti. Hangi Cirq satırının hangi sırayla geldiğini Mantıksal akış anlatır; moment görünümü mimari bölümündedir — böylece aynı metin üç kez dönmez.

  • Adım 1 · Başlangıç

    N = 3 N = 3 için üç LineQubit seçilir: q 0 q_0 , q 1 q_1 , q 2 q_2 . Kompakt yazım q 0 q 1 q 2 = 000 |q_0 q_1 q_2\rangle = |000\rangle , açık tensör olarak 0 0 0 |0\rangle \otimes |0\rangle \otimes |0\rangle .

  • Adım 2 · Hadamard ( q 0 q_0 )

    İlk kübit süperpozisyona alınır: 1 2 ( 0 + 1 ) 00 \frac{1}{\sqrt{2}}\bigl(|0\rangle + |1\rangle\bigr) \otimes |00\rangle . Diğer iki kübit henüz ürün durumunda 00 |00\rangle ; henüz üçlü dolanıklık yoktur.

  • Adım 3 · İlk CNOT ( q 0 q 1 q_0 \to q_1 )

    Kontrol 1 |1\rangle dalında hedef çevrilir: 1 2 ( 00 + 11 ) 0 \frac{1}{\sqrt{2}}\bigl(|00\rangle + |11\rangle\bigr) \otimes |0\rangle . Bu ifade q 0 q_0 q 1 q_1 için Bell çekirdeğidir; q 2 q_2 henüz üründe ayrı bir faktör olarak 0 |0\rangle ’dadır.

  • Adım 4 · İkinci CNOT ( q 1 q 2 q_1 \to q_2 )

    Önceki satırda iki dalda da q 2 q_2 için 0 |0\rangle ortaktır; kontrol q 1 q_1 ’in 1 |1\rangle dalında hedef q 2 q_2 çevrilerek üçüncü kübit de ilk iki ile kilitlenir: 1 2 ( 000 + 111 ) = G H Z 3 \frac{1}{\sqrt{2}}\bigl(|000\rangle + |111\rangle\bigr) = \ket{GHZ_3} . Üç kübitlik ket yazımında basamaklar birlikte ya hep 0 ya hep 1 olur; ara diziler (ör. 001) bu ideal süperpozisyonda yoktur.

    G H Z N = 1 2 ( 0 N + 1 N ) \ket{GHZ_N} = \frac{1}{\sqrt{2}}\bigl(\ket{0}^{\otimes N} + \ket{1}^{\otimes N}\bigr)

Cirq Kodu

Aşağıdaki örnek 3 kübitlik bir GHZ devresi kurar, Cirq'in metin tabanlı çizimini yazdırır ve 1024 tekrar ile ölçüm histogramı üretir. N N değişkenini büyütmek, zinciri uzatmak için yeterlidir; geri kalan kod aynı kalır.

ghz_cirq.py Python
import cirq

# 1. Kübitlerin hazırlanması (örnek: 3 kübit)
n = 3
qubits = cirq.LineQubit.range(n)

# 2. GHZ devresinin inşası
# Operasyonları bir liste içinde topluyoruz.
ops = [cirq.H(qubits[0])]

# Zincirleme CNOT kapıları ekleniyor.
for i in range(n - 1):
    ops.append(cirq.CNOT(qubits[i], qubits[i + 1]))

# Kolektif ölçüm.
ops.append(cirq.measure(*qubits, key="ghz_sonuc"))

# Devreyi oluştur.
circuit = cirq.Circuit(ops)

# 3. Devre şemasını ve momentleri incele
print("Cirq GHZ Devre Şeması:")
print(circuit)

# 4. Simülasyon
simulator = cirq.Simulator()
result = simulator.run(circuit, repetitions=1024)

# 5. İstatistiksel sonuçlar
# 3 kübit için 0 (000) ve 7 (111) sonuçları beklenir.
counts = result.histogram(key="ghz_sonuc")
print(f"\nGHZ Ölçüm İstatistikleri: {counts}")
cirq Simulator · 1024 repetition · N = 3 N = 3 UTF-8 · LF

Kodun Derinlemesine Analizi

cirq.LineQubit.range(n) kübitleri otomatik olarak 0 , 1 , , n 1 0, 1, \ldots, n-1 indekslerinde isimlendirir ve donanım üzerindeki doğrusal bir hattı temsil eder. GHZ zinciri için bu doğal bir seçimdir: ardışık kübitler birbirine komşu durur, derleyici fazladan swap eklemek zorunda kalmaz.

ops = [cirq.H(qubits[0])] ile devre operasyon listesi olarak başlatılır; sonra for döngüsü her kübiti komşusuna CNOT ile bağlar. Cirq bu listeyi cirq.Circuit(ops) içine aldığında her operasyonu uygun ilk momente yerleştirir. CNOT'lar aynı kübitleri paylaştığı için üst üste binemezler ve zincir doğal olarak N N momentlik bir derinliğe yayılır.

cirq.measure(*qubits, key="ghz_sonuc") satırındaki *qubits ifadesi Python'un "argüman açma" (unpacking) sözdizimidir; listedeki kübitleri measure'a tek tek argüman olarak gönderir. key, sonucun histogramda hangi etiket altında toplanacağını söyler.

Histogram çıktısı N = 3 N = 3 için yalnızca 0 (binary 000 000 ) ve 7 (binary 111 111 ) görünür. Aradaki 16 arası değerlerin yokluğu, dolanıklığın tüm zincir boyunca korunduğunu kanıtlar. Daha büyük N N için beklenen iki sonuç sırasıyla 0 0 ve 2 N 1 2^N - 1 olur.

"Ya hep ya hiç" ilkesi GHZ durumunun kuantum imzası tek bir cümleyle özetlenir: ölçüm sonucu ya hepsi sıfır ya da hepsi bir çıkar; başka kombinasyon ideal durumda yoktur. Bu, kübitlerin birbirinden bağımsız ölçülmediğinin doğrudan istatistiksel kanıtıdır. Klasik bir koreloyla bu davranışı taklit etmek mümkün değildir; üç (veya daha fazla) tarafın aynı anda paylaştığı uzlaşı ancak kuantum mekaniğiyle açıklanır.
Devre derinliği · neden N N moment? N N kübitlik GHZ devresi 1 Hadamard + ( N 1 ) (N-1) ardışık CNOT içerir. CNOT'lar paylaşılan kübitler nedeniyle paralelleşemez, dolayısıyla zincir aynı zamanda en kısa moment dizisini de tanımlar. Bu sayfa, "kuantum derinliği" kavramını koddan doğrudan gözleyebileceğin en temiz örneklerden birini sunar.

Aynı Devre ( İki Temsil )

N = 3 N = 3 için Cirq'in terminale yazdırdığı ASCII çıktı, devrenin moment yapısını doğrudan görselleştirir: ilk momentte yalnızca Hadamard, ikinci momentte ilk CNOT, üçüncü momentte ikinci CNOT ve son momentte kolektif ölçüm. SVG karşılığı ise aynı zincirin uzamsal akışını renk ve şekille kodlar.

terminal

print(circuit) çıktısı

0: ───H───@───────M('ghz_sonuc')───
          │       │
1: ───────X───@───M────────────────
              │   │
2: ───────────X───M────────────────

M0 · H M1 · CNOT 0→1 M2 · CNOT 1→2 M3 · ölçüm

svg

Premium devre çizimi

q0 q1 q2 M0 M1 M2 M3 H M M M

renk · kapı tipi çizgi · kontrol-hedef zinciri

Ne öğreniyoruz? ASCII çıktı her momenti yatay bir kolon olarak gösterir; SVG ise aynı kolonları renkli geometrik nesnelerle yorumlar. İki temsil de aynı bilgiyi taşır: GHZ zincirinin uzunluğu doğrudan moment sayısına eşittir. N N büyüdükçe ASCII çıktı genişler, SVG ise yatay olarak uzar — derinlik kavramı koddan göze geçer.
Derinlik analizi · Neden 4 moment? Dikkat edersen 3 kübitlik GHZ devresi 4 farklı zaman diliminden oluşuyor: M 0 M_0 Hadamard, M 1 M_1 ilk CNOT, M 2 M_2 ikinci CNOT, M 3 M_3 ölçüm. Bunun sebebi kuantum donanımlarının aynı anda yalnızca birbirinden bağımsız kübitler üzerinde işlem yapabilmesidir. Ortadaki kübit q 1 q_1 hem q 0 q_0 'dan gelen sinyali beklemek hem de q 2 q_2 'ye aktarmak zorunda olduğu için, iki CNOT aynı momente sıkıştırılamaz. Cirq bu fiziksel zorunluluğu moment yapısıyla kod seviyesinde bize hissettirir; Qiskit'te yalnızca soyut "devre derinliği" olarak duyduğumuz kavram, burada doğrudan terminale yazdırdığımız ASCII çıktının genişliği olarak görünür. Qiskit sayfasında bu devreyi kurarken yalnızca "işlemi" tarif etmiştik; burada ise Cirq sayesinde aynı işlemin kuantum işlemcisi üzerinde kapladığı zamanı — M 0 M_0 'dan M 3 M_3 'e kadar — bizzat gözlemliyoruz.

Devre ve Doğrulama

N = 3 N = 3 için tam ölçekli devre şeması aşağıdadır. Aynı şablon N = 4 , 5 , N = 4, 5, \ldots için yatay olarak genişletilebilir; her yeni kübit için zincire bir CNOT (yani bir moment) eklenir.

Cirq GHZ devresi · G H Z 3 \ket{GHZ_3} LineQubit · H → CNOT → CNOT → ölçüm
q0 q1 q2 ghz_sonuc Moment 0 Moment 1 Moment 2 Moment 3 H M M M

Şemayı adım adım oku

  1. Moment 0’da H, ilk kübiti (q0) süperpozisyona alır.

  2. Moment 1’de CNOT, q0 ile q1’i bağlayarak dolanıklık zincirini başlatır.

  3. Moment 2’de ikinci CNOT, q1’den q2’ye yayılır ve üçlü GHZ korelasyonunu kurar.

  4. Son momentte üç kübit ölçülür; idealde yalnızca 000 ve 111 yarı yarıya görünür.

Doğrulama

Devrenin hedefi: G H Z 3 = 1 2 ( 000 + 111 ) \ket{GHZ_3} = \frac{1}{\sqrt{2}}\bigl(|000\rangle + |111\rangle\bigr) .

Histogramda yalnızca 0 (binary 000 000 ) ve 7 (binary 111 111 ) yaklaşık yarı yarıya görünür. Aradaki değerler 1 1 6 6 ideal simülatörde sıfırdır.

  • 0 / 000 ≈ %50
  • 7 / 111 ≈ %50
  • 1–6 → 0 (ideal sim.)
Profesyonel not · gürültü ve dolanıklık tanığı Gerçek bir Cirq donanımında (NISQ cihazlarında) 16 arası sonuçlar küçük oranlarda görülebilir. Bu sayımlar boşa giden veri değildir; CNOT zincirinin hangi halkasında dolanıklığın zayıfladığını ölçen bir kalibrasyon metriği olarak okunur. Örneğin histogramda 1 (binary 001 001 ) sonucu görüyorsan, bu zincirin ikinci halkasında — yani q 1 q 2 q_1 \to q_2 CNOT'unda — bir hata oluştuğunun fiziksel kanıtıdır. Tam da bu yüzden GHZ, laboratuvarlarda kuantum bilgisayarların stres testi olarak kullanılır: zincir uzadıkça hata kaynaklı sonuçlar tek tek kendini ele verir. GHZ sadakati, çoğu donanım benchmarkında "kaç kübit boyunca dolanıklığı koruyabildin?" sorusunun cevabıdır.
  • Beklenen sonuç

    Yeterli atışta histogram yalnızca 0 0 ve 2 N 1 2^N - 1 değerlerini ~%50–%50 oranında gösterir; gürültüsüz bir simülatörde aradaki tüm değerler sıfırdır.

  • N N 'i büyütmek

    Sadece n = 3 satırını n = 5 yap; geri kalan kod aynı kalır. Devre N N moment derinliğinde uzar ve histogramda 0 0 ile 2 N 1 2^N - 1 değerlerini görürsün.

  • Bell ile bağ

    İlk iki kübit zaten Bell durumundadır; her ek CNOT, bu Bell çekirdeğini bir kübit daha "büyüten" bir genişletme adımıdır.

  • GridQubit varyantı

    Sycamore gibi 2D çiplerde aynı zinciri kurmak için cirq.GridQubit(0, i) ile bir satırı seçmek yeterlidir; topoloji uyumlu kaldığı sürece ek swap gerektirmez.