手を上げるキュビットくんゆるふわ量子コンピュータ
計算中のキュビットくん

量子テレポーテーションをQiskitで実装する|状態を"転送"するしくみ

2026-08-14実践

#Qiskit#量子テレポーテーション#もつれ#Python#実践

「量子テレポーテーション」という名前は派手ですが、モノが瞬間移動するわけではありません。量子ビットの"状態"を、もつれと古典通信を使って別の量子ビットへ移すプロトコルです。量子ネットワークの土台になる技術を、Qiskitで実装して確かめます。

しくみ: もつれ+古典通信

送りたい状態を持つアリスと、受け取るボブが、あらかじめもつれたペアを共有しておきます。アリスが手元で測定し、その結果(古典ビット2つ)をボブに伝えると、ボブは自分の量子ビットを補正して元の状態を復元できます。

💡

光より速くはない

状態を復元するにはアリスの測定結果(古典ビット)が必要で、それは普通の通信で送ります。だから光速を超えて情報は伝わりません。ここが「テレポーテーション」の誤解しやすい点です。

準備

pip install qiskit qiskit-aer

① 転送したい状態を用意する

q0に「転送したい状態」を作ります。今回はアダマール+Tゲートで適当な重ね合わせにします。

from qiskit import QuantumCircuit

qc = QuantumCircuit(3, 3)   # q0=送る状態, q1=アリス, q2=ボブ
qc.h(0)
qc.t(0)                     # 何か特徴のある状態にしておく
qc.barrier()

② もつれペアを配る

q1・q2をもつれさせ、アリス(q1)とボブ(q2)が共有します。

qc.h(1)
qc.cx(1, 2)
qc.barrier()

③ アリスの操作と測定

q0とq1をベル基底で測定します。

qc.cx(0, 1)
qc.h(0)
qc.measure(0, 0)
qc.measure(1, 1)
qc.barrier()

④ ボブの補正(古典制御)

アリスの測定結果(古典ビット)に応じて、ボブがXとZで補正します。Qiskitの現行APIでは if_test を使い、個別の古典ビットで条件分岐します。

with qc.if_test((qc.clbits[1], 1)):   # q1の測定が1ならX
    qc.x(2)
with qc.if_test((qc.clbits[0], 1)):   # q0の測定が1ならZ
    qc.z(2)
⚠️

古い c_if は使えない

昔の記事にある qc.x(2).c_if(...) はQiskitのバージョンアップでAPIが変わり、現行(Qiskit 2系)では動きません。with qc.if_test(...) が現在の書き方です。また条件はレジスタ全体の値ではなく、補正したい個別のビットに対して書くのがポイント。

🌱

検証のコツ

本当に転送できたか確かめるには、最後にq2へ「①でかけた操作の逆」をかけて測定します。完全に転送できていれば、q2は必ず 0 に戻るはず。ズレがあれば実装のどこかが間違っています。この「逆操作で0に戻るか」テストは量子回路デバッグの定番です。

逆操作テストで確かめる

from qiskit_aer import AerSimulator

# ①の逆(T†→H)をq2にかけて測定
qc.tdg(2)
qc.h(2)
qc.measure(2, 2)

result = AerSimulator().run(qc, shots=1000).result()
counts = result.get_counts()

# q2(左端ビット)が常に0なら成功
q2_zero = sum(v for k, v in counts.items() if k[0] == "0")
print("q2=0 の割合:", q2_zero / 1000)   # 1.0 になる

q2=0 の割合: 1.0 ——アリスの手元にあった状態が、もつれと2ビットの古典通信だけでボブへ完全に転送できました。

まとめ

  • 量子テレポーテーション=もつれ+古典通信で状態を別の量子ビットへ移す
  • モノも情報も光速を超えては伝わらない(古典ビットの送信が必須)
  • ボブは測定結果に応じてX/Zで補正して復元する
  • 「逆操作で0に戻るか」で転送成功を検証できる

もう少し詳しく(背景と理論)

量子テレポーテーションは Bennett et al. (1993) が提案し1、未知の量子状態を「もつれ+2古典ビットの通信」で別の量子ビットへ移します。状態そのものは複製されず元は壊れるため、複製不可定理(未知状態はコピーできない)と矛盾しません2。また補正に必要な古典ビットは通常通信で送るので、光速を超えて情報は伝わりません(相対論と整合)3。1997年に光子で初の実験実証が行われ、以後もつれ交換や量子中継器へと発展し、量子ネットワークの基盤技術になっています4

次の一歩 🌸

もつれの基礎は量子ビット超入門、回路の書き方はQiskit入門、状態ベクトルの裏側はNumPyで作る量子シミュレータへどうぞ。

Footnotes

  1. Bennett, C. H. et al. (1993). "Teleporting an unknown quantum state via dual classical and Einstein-Podolsky-Rosen channels." Phys. Rev. Lett., 70, 1895.

  2. Wootters & Zurek (1982) の複製不可定理により、未知の量子状態を複製することはできない。テレポーテーションは「移動」であって「複製」ではないため両立する。

  3. ボブは古典ビット(測定結果)が届くまで正しい状態を復元できない。この古典通信が光速に縛られるため、超光速通信はできない(no-signaling)。

  4. もつれ交換(entanglement swapping)と量子中継器により、遠距離のもつれ配送=量子インターネットの実現が目指されている。

🔥 この分野の最新トレンドをチェック →

あわせて読みたい