
超密度符号化をQiskitで実装|1量子ビットで2ビットを送る
2026-08-26 ・ 実践
量子テレポーテーションが「2古典ビットで1量子状態を送る」なら、超密度符号化(superdense coding) はその逆——「1量子ビットの送信で2古典ビットを送る」技術です。もつれを事前共有しておくのがカギ。Qiskitで実装して確かめます。
しくみ
アリスとボブがもつれペアを共有しておきます。アリスは送りたい2ビットに応じて手元の量子ビットに操作を加え、それをボブに1個送るだけ。ボブは2個をまとめて測ると、2ビットが復元できます。
1量子ビットで2ビット
もつれ共有
事前に配る
符号化
2ビットぶん操作
復号
まとめて測定
準備
pip install qiskit qiskit-aer
① もつれ → 符号化 → 復号
送りたい2ビットに応じて、I / X / Z / XZ をかけ分けます。
from qiskit import QuantumCircuit
from qiskit_aer import AerSimulator
def superdense(bits):
qc = QuantumCircuit(2, 2)
# もつれペアを作る(q0=アリス, q1=ボブ)
qc.h(0); qc.cx(0, 1)
qc.barrier()
# アリスが2ビットを符号化(自分のq0だけ操作)
if bits[1] == "1": qc.x(0)
if bits[0] == "1": qc.z(0)
qc.barrier()
# アリスがq0をボブへ送る → ボブが2個をまとめて復号
qc.cx(0, 1); qc.h(0)
qc.measure([0, 1], [1, 0]) # ビット順をメッセージに合わせて読み出す
counts = AerSimulator().run(qc, shots=1000).result().get_counts()
return counts
for msg in ["00", "01", "10", "11"]:
print(msg, "→", superdense(msg))
出力は各メッセージが100%そのまま復元されます:
00 → {'00': 1000}
01 → {'01': 1000}
10 → {'10': 1000}
11 → {'11': 1000}
1量子ビットの送信で、2ビットの情報が確実に伝わりました。
テレポーテーションと表裏一体
テレポーテーションは「古典2ビットで量子1個ぶんの状態」を送り、超密度符号化は「量子1個で古典2ビット」を送る。もつれという同じ資源を、逆向きに使い切っているのが面白いところです。
もつれの事前共有が前提
2ビット送るのに"送信"は1量子ビットですが、その前にもつれペアを配っておく必要があります。この事前配布まで数えれば、タダで通信量が半分になるわけではありません。それでも量子通信の基礎として重要です。
まとめ
- 超密度符号化=1量子ビットの送信で2古典ビットを送る
- もつれの事前共有が前提。符号化は I/X/Z/XZ の4通り
- ボブはCNOT+アダマールでまとめて復号
- テレポーテーションと資源(もつれ)を逆向きに使う関係
もう少し詳しく(背景と理論)
超密度符号化は Bennett & Wiesner (1992) が示したプロトコルで1、事前共有した1組のもつれを使うと、量子ビット1個の送信で古典2ビットを伝えられます。これは「1量子ビットが運べる古典情報は最大1ビット」というホレヴォ限界2を、もつれという追加資源で実効的に2倍にしたものと理解できます。テレポーテーション(古典2ビットで量子1個)とちょうど双対の関係にあり3、どちらも「もつれ+古典/量子通信」の交換レートを示す量子通信理論の基本例です。2004年には光子を使った実験実証も行われました。
次の一歩 🌸
逆向きの量子テレポーテーション、もつれの基礎は量子ビット超入門、ベル不等式で見る非局所性はCHSHへどうぞ。
Footnotes
-
Bennett, C. H. & Wiesner, S. J. (1992). "Communication via one- and two-particle operators on Einstein-Podolsky-Rosen states." Phys. Rev. Lett., 69, 2881. ↩
-
ホレヴォの定理により、1量子ビットから取り出せる古典情報は1ビットが上限。超密度符号化が2ビット送れるのは、事前配布したもつれ(追加資源)を消費するため。 ↩
-
テレポーテーションは「もつれ+2古典ビット→量子1状態」、超密度符号化は「もつれ+量子1ビット→2古典ビット」。両者は資源の向きが逆の双対関係。 ↩