1. Ana sayfa
  2. Algoritmalar
  3. Bell ve iletişim
  4. Süper yoğun kodlama · Qiskit
Bell ve iletişim · Qiskit

Süper yoğun kodlama — tek kübitle iki klasik bit

Klasik bir kanalda her fiziksel taşıyıcı yalnızca tek bir bit taşır. Süper yoğun kodlama, önceden paylaşılmış bir Bell çifti yardımıyla bu sınırı kırar: Alice tek bir kübit gönderir, Bob iki klasik bit okur. Sayfa boyunca protokolün matematiksel çekirdeğini, dört mesaj için Alice'in kapı seçim tablosunu, Bob'un Bell-baz ölçümünü ve "yolda çalınan kübit" senaryosunda doğal güvenliğin nasıl çalıştığını inceliyoruz.

  • Çerçeve: Qiskit
  • 2 kübit
  • 4 olası mesaj
  • ~5 dk okuma

Süper yoğun kodlama nedir? (derinlemesine analiz)

Süper yoğun kodlama, tek bir kübit kullanarak iki klasik bitlik bilgi göndermeyi mümkün kılan bir kuantum iletişim protokolüdür. 1992'de Charles Bennett ve Stephen Wiesner tarafından tanıtıldı; klasik kanalın temel kuralı olan "bir taşıyıcı = bir bit" sınırını dolanıklık yardımıyla ikiye katlar.

Temel kurallar

Önceden paylaşılmış dolanıklık şarttır Protokol çalışmadan önce Alice ve Bob bir Bell çifti (Φ+\ket{\Phi^+}) paylaşmış olmalıdır — kübitlerin biri Alice'te, diğeri Bob'ta. Bu paylaşım, mesaj gönderiminden çok önce yapılabilir; örneğin geceden hazırlanır, sabah kullanılır. Mesaj anına kadar kübitler atıl bekler.

Yerel işlem, kollektif sonuç Alice mesajını kodlarken yalnızca kendi kübitine kapı uygular — Bob'un kübitine dokunmaz, sinyal göndermez. Buna rağmen tüm sistemin Bell durumu değişir; çünkü dolanık iki kübit tek bir kuantum nesnesi gibi davranır. Alice'in yerel hamlesi, Bob'un kübitine "uzaktan" değil, sistemin bütününe yapılır.

Teleportasyonun aynası Kuantum teleportasyonda iki klasik bit kullanarak bir kübit taşırız; süper yoğun kodlamada ise bir kübit kullanarak iki klasik bit taşırız. İki protokol birbirinin tersidir — ikisi de aynı kaynağı (Bell çifti) farklı yönde harcar. Bu simetri, kuantum bilgi teorisinin en şık denklemlerinden biri olan kanal kapasite ilişkisinin temelidir.

Anahtar fikir Süper yoğun kodlama, dolanıklığı bir kuantum kaynağı olarak tüketir: bir Bell çifti ile bir mesaj gönderilir, sonraki mesaj için yeni bir Bell çifti gerekir. Yine de toplam taşıyıcı sayısı klasik sınırın yarısı olduğu için kanal kapasitesi iki katına çıkmış olur.

Mesaj → Bell durumu eşlemesi

Alice'in dört olası mesajı için (00,01,10,1100, 01, 10, 11) yapacağı tek şey kendi kübitine doğru Pauli kapısını uygulamak. Her kapı, Bell çiftini farklı bir Bell durumuna döndürür; dört Bell durumu birbirine ortogonal olduğu için Bob bunları ayırt edebilir. İşte protokolün tüm kalbi.

Dört kapı, dört durum

00I00 \to I (kimlik) Alice hiçbir şey yapmaz; sistem |Φ⁺⟩ = (|00⟩ + |11⟩)/√2 olarak kalır. Klasik mesajın "olmaması" da fiziksel bir bilgidir.

01X01 \to X (bit-flip) Alice kendi kübitine XX uygular; sistem |Ψ⁺⟩ = (|01⟩ + |10⟩)/√2 haline gelir.

10Z10 \to Z (faz-flip) Alice ZZ uygular; sistem |Φ⁻⟩ = (|00⟩ − |11⟩)/√2 olur. Görünürdeki olasılık dağılımı Φ+\ket{\Phi^+} ile aynıdır; aradaki tek fark fazda saklı.

11ZX11 \to ZX (her ikisi) Alice önce ZZ sonra XX uygular (eşdeğer olarak iYiY); sistem |Ψ⁻⟩ = (|01⟩ − |10⟩)/√2 haline gelir. Bu dört Bell durumu Hilbert uzayında birbirine dik (ortonormal) olduğu için Bob hangisi olduğunu tek bir Bell-baz ölçümünde bulabilir.

Neden tam dört? İki klasik bit dört olası mesaj demek; iki kübitlik Hilbert uzayı dört ortogonal Bell durumuna izin veriyor. Bu kapasite eşleşmesi tesadüf değildir — kuantum bilgi teorisinin doğal bir özelliğidir. Aynı kalıp nn kübit için 2n2n klasik bite genişler.

Algoritmanın mantığı · dört aşama

Süper yoğun kodlama dört net aşamadan oluşur: dolanıklığın kurulması, Alice'in kodlaması, kübitin Bob'a fiziksel olarak iletimi ve Bob'un Bell-baz ölçümüyle kod çözmesi. Her adım, devrenin görünür bir parçasına karşılık gelir.

Aşama 1 · dolanıklık hazırlığı

Önceden kurulmuş Bell çifti Bir aracı (ya da Alice) bir Bell çifti üretir: H + zincirleme CNOT ile Φ+\ket{\Phi^+} kurulur. Birinci kübit Alice'e, ikincisi Bob'a verilir. Bu adım mesaj gönderiminden bağımsızdır; kaynak hazırlığı gibidir.

Aşama 2 · Alice'in kodlaması

Bir kapı, dört seçenek Alice mesajının iki bitine bakar ve ikinci bölümdeki tabloya göre kendi kübitine uygun Pauli kapısını uygular: II, XX, ZZ veya ZXZX. Bu işlem son derece yereldir; Alice Bob'a fiziksel olarak hiçbir sinyal yollamaz. Sistem yine de farklı bir Bell durumuna geçer.

Aşama 3 · kübitin gönderilmesi

Tek fiziksel taşıyıcı Alice, kodlamasını bitirdiği kendi kübitini Bob'a fiziksel olarak gönderir. Optik fiber, foton, soğuk atomlar, hangi medyum varsa onun üzerinden bir tek kuantum nesnesi taşınır. Bu adım protokolün klasik dünyaya en yakın kısmıdır — bir paket gönderimi gibi.

Aşama 4 · Bob'un kod çözmesi

Bell-baz ölçümü Bob'un elinde artık iki kübit var: kendi orijinal kübiti ve Alice'ten gelen yeni kübit. Bob bunlara CNOT + H uygulayıp ardından standart Z-baz ölçümü yapar. Bu kombinasyon, Bell durumlarını klasik etiketlere geri çevirir; tek bir ölçümde Alice'in iki bitlik mesajı klasik kayda düşer.

  1. Aracı (ya da Alice) bir Bell çifti hazırlar (H + zincirleme CNOT) ve kübitlerden birini Alice'e, diğerini Bob'a teslim eder.

  2. Alice mesajına göre kendi kübitine Pauli kapısı uygular: 00I00 \to I, 01X01 \to X, 10Z10 \to Z, 11ZX11 \to ZX.

  3. Alice kendi kübitini Bob'a fiziksel olarak gönderir (kuantum kanal üzerinden).

  4. Bob Bell-baz ölçümü yapar: önce CNOT (kontrol: Alice'ten gelen kübit, hedef: kendi kübiti), sonra H (Alice'ten gelen kübitte), ardından her ikisini ölçer.

  5. Klasik kayıttaki iki bit doğrudan Alice'in mesajıdır. İdeal ortamda %100 sadakatle eşleşir.

Bant genişliği avantajı Klasik bir kanalda 1000 bit göndermek için 1000 fiziksel taşıyıcı gerekir; süper yoğun kodlamada aynı 1000 biti 500 kübit + 500 önceden paylaşılmış Bell çifti ile gönderirsiniz. Mesaj anındaki kanal kullanımı yarıya düşer. Kuantum ağlarında bu, fotonların gönderildiği "geceden hazırlanmış" dolanıklık rezervi kullanılarak gerçek bir bant genişliği avantajına dönüşür.
Doğal güvenlik Alice'in Bob'a gönderdiği kübit yolda çalınırsa, hırsız yalnızca tek bir kübite sahip olur. Mesajı çözmek için Bob'un dolanık kübitine de erişmesi gerekir; o ise hâlâ Bob'tadır. Tek başına alınan kübitin durumu tamamen rastgele görünür — hırsız hiçbir bilgi çıkaramaz. Bu, ek bir şifreleme katmanı gerektirmeden kuantum mekaniğinden gelen fiziksel bir gizliliktir.

Qiskit ile uygulama

Aşağıdaki örnek tek bir mesaj için süper yoğun kodlama devresini parametrik bir fonksiyon olarak kurar. Devre üç bölümden oluşur — Bell çifti hazırlığı, Alice'in mesaj-temelli kodlaması ve Bob'un Bell-baz ölçümü. "00", "01", "10" ve "11" mesajlarını sırayla deneyebilirsiniz; histogramda her seferinde tek bir kombinasyon yükselir.

superdense_coding.py Python
from qiskit import QuantumCircuit
from qiskit_aer import AerSimulator


def create_superdense_coding(message):
    qc = QuantumCircuit(2, 2)

    # 1. Adım: Bell çifti oluştur (Alice ve Bob arasında paylaştırıldı)
    qc.h(0)
    qc.cx(0, 1)
    qc.barrier()

    # 2. Adım: Alice'in kodlaması (mesaja göre kapı uygula)
    if message == "00":
        pass  # Identity
    elif message == "01":
        qc.x(0)
    elif message == "10":
        qc.z(0)
    elif message == "11":
        qc.z(0)
        qc.x(0)

    qc.barrier()  # Alice kübitini Bob'a gönderir

    # 3. Adım: Bob'un kod çözmesi (Bell ölçümü)
    qc.cx(0, 1)
    qc.h(0)
    qc.barrier()

    # 4. Adım: Ölçüm
    qc.measure([0, 1], [0, 1])
    return qc


# "11" mesajını gönderelim
message = "11"
qc = create_superdense_coding(message)

# Çalıştırma
simulator = AerSimulator()
job = simulator.run(qc, shots=1024)
result = job.result().get_counts()

print(f"\nAlice'in gönderdiği mesaj: {message}")
print(f"Bob'un aldığı sonuç: {result}")
qiskit Aer simülatörü · 1024 shot UTF-8 · LF

Kod analizi · satır satır

Importlar Yalnızca QuantumCircuit ve AerSimulator; bu örnekte numpy'a ihtiyaç yok çünkü tüm kapılar sabit Pauli'leri.

create_superdense_coding(message) Devreyi parametrik bir fonksiyon olarak yazmak protokolün esnekliğini taşır; aynı şablonu dört mesaj için ayrı ayrı çağırarak hepsini doğrulayabilirsiniz. message "00", "01", "10" veya "11" olabilir.

qc.h(0) + qc.cx(0, 1) Bell çiftini kuran iki kapı. Burada bir simülasyon kolaylığı kullandık: Alice ve Bob'un kübitleri aynı devrenin parçası gibi görünüyor; gerçek bir uygulamada bu adım üçüncü bir tarafın yaptığı, sonra fiziksel olarak iki tarafa dağıttığı bir sürece karşılık gelir.

Birinci qc.barrier() "Bell çifti hazır, mesaj kodlamasına geçiyoruz" görsel ayracı. Aynı zamanda transpiler'ın kodlama kapılarını Bell hazırlık kapılarıyla karıştırmasını engeller — Pauli kapılarının yerini değiştirmesi sonucu tamamen bozar.

if message == "00": pass "Hiçbir şey yapma" da bilinçli bir kuantum işlemidir. II kapısı bir kübite uygulanması gereken yasal bir matematiksel operasyondur; sonucu değiştirmez ama protokol sözlüğünde "0000" mesajına karşılık gelir. Sistem Φ+\ket{\Phi^+} olarak kalır.

qc.x(0) ve qc.z(0) Alice'in tüm yetenekleri sadece kendi kübiti üzerinde Pauli kapıları; iki kübitlik bir kapıya ihtiyaç duymadığı için protokol fiziksel olarak son derece "ucuzdur". Bell çifti hazırlığı pahalı, ama kodlama anı mininaldir.

"11" dalı: qc.z(0); qc.x(0) Önce ZZ sonra XX uygulanır. Sırayı değiştirirseniz devre yine çalışır ama küresel bir faz farkı kalır; ölçüm istatistiği aynı çıkar (genel faz gözlemlenemezdir). Yine de bilinçli sıralama, kodu okuyan herkesin protokolü doğru anlamasına yardım eder.

İkinci qc.barrier() "Alice kübitini Bob'a gönderdi" sahnesinin sınırı. Pratik bir simülasyonda bu satır görünmüyor olabilir, ama mantıksal olarak orada; gerçek bir laboratuvarda fiziksel bir transferin (foton uçuşu vs.) tam yeri.

qc.cx(0, 1) + qc.h(0) Bob'un Bell-baz ölçümü. Bell çifti hazırlığının tersi kapı sırası uygulanır: önce CNOT, sonra Hadamard. Bu kombinasyon dört Bell durumunu klasik dört bitlik etikete (00, 01, 10, 11) eşler. Tek bir standart Z-baz ölçümü artık yeterlidir.

qc.measure([0, 1], [0, 1]) İki kübit klasik bitlere yazılır. İdeal simülatörde sonuç her atışta Alice'in mesajıyla bire bir aynıdır; histogramda yalnızca tek bir sütun (mesajla aynı) yükselir. Bu, klasik bir gönderim/alım kanalında görmeyi beklediğimiz davranış ama gönderici tarafta tek bir kübit harcadık.

Histogramda ne görüyoruz? "11" mesajı için ideal sonuç {"11": 1024} — tüm 1024 atış aynı çıktıyı verir. Diğer mesajlar için de tek bir kova yükselir: "00" → "00", "01" → "01", "10" → "10". Bell durumlarının ortogonalliği sayesinde klasik bir kod çözücü gibi davranır: hata yok, dağılım yok, %100 belirlilik.
Hızlı deney Bell çifti hazırlık satırlarını (qc.h(0) ve qc.cx(0, 1)) yorum satırına alın. Artık dolanıklık yok; protokolün sırrı çözülür. Histogramda hangi mesajı kodladığınız fark etmeksizin sonuçlar iki kovada (00 ve 01 ya da hangileri) eşit dağılır; mesaj kayıp olur. Dolanıklığın "kapasiteyi ikiye katlayan" rolünün doğrudan kanıtı.

Çalıştırma için tek bir Python ortamında qiskit ve qiskit-aer paketleri yeterlidir; kurulumun tek bakışta özeti ana sayfadaki IDE ve çalıştırma bölümündedir. Gerçek donanımda denemek için AerSimulator() satırını QiskitRuntimeService().backend("ibm_brisbane") gibi bir IBM cihazıyla değiştirin; süper yoğun kodlama, dolanıklık ve Bell-baz ölçümünün birlikte çalıştığı bir "uçtan uca" testtir, donanım sadakat ölçütü olarak da kullanılabilir.

Devre ve doğrulama

Aşağıdaki şema "11" mesajının süper yoğun kodlamasını uçtan uca görselleştirir. Sol uçta Bell çifti hazırlığı; ortada Alice'in ZZ ve XX kodlaması (kesikli mor çizgi Alice → Bob fiziksel taşımayı simgeler); sağ tarafta Bob'un Bell-baz ölçümü (CNOT + H) ve son ölçüm.

Süper yoğun kodlama · "11" örneği İstemci tarafı SVG · 2 kübit · Bell çifti + Z·X kodlama + Bell ölçümü
q0 q1 c Bell çifti H Alice · "11" → Z Z Alice · "11" → X X Alice → Bob tek kübit fiziksel iletim Bell-baz ölçümü H Ölçüm M M
Tek kübit, çift bilgi Şemada mor kesikli çizgi Alice → Bob arasındaki tek fiziksel kübitin yolculuğunu temsil eder. Bu çizgide bir tek kuantum nesnesi taşınmasına rağmen Bob'un sağdaki ölçümü iki klasik bit üretir. Klasik kanal-bilgi ilişkisinin kuantum mekaniği tarafından nasıl ikiye katlandığının görsel özeti.
Doğrulama

"11" örneğinde Alice ZZ ve XX uyguladığı için sistem Ψ\ket{\Psi^-} Bell durumuna geçer; Bob'un Bell-baz ölçümü bu durumu doğrudan "11" klasik etiketine eşler. İdeal simülatörde 1024 atışın tamamı "11" çıkar; diğer üç kombinasyon sıfırdır. Diğer mesajlar (00,01,1000, 01, 10) için de aynı %100 belirlilik geçerlidir.

  • 11 ≈ %100
  • diğer 3 anahtar ≈ 0
Dolanıklık tüketimi

Her mesaj bir Bell çiftini "tüketir". 1000 mesaj göndermek için 1000 önceden hazırlanmış Bell çifti gerekir. Pratikte bu çiftler önceden üretilip "kuantum hafıza"da saklanır; mesaj anında çekilip kullanılır.

Donanım sadakat ölçütü

Süper yoğun kodlama, hem Bell çifti hazırlığı, hem de Bell-baz ölçümünü aynı devrede içerdiği için donanımın iki temel yetkinliğini birden test eder. NISQ cihazlarında ham sadakat ~%85–%95 aralığında kalır; hata azaltma uygulanırsa %98+'a çıkar.

Holevo sınırı

Kuantum bilgi teorisinde "n kübit en fazla n klasik bit taşır" üst sınırı vardır (Holevo sınırı). Süper yoğun kodlama bu sınıra ulaşır: 1 kübit + 1 önceden paylaşılmış dolanık kübit ile tam 2 klasik bit gönderilir. 3 katı bilgi göndermek için ek dolanıklık gerekir; bedavaya bilgi yoktur.