手を上げるキュビットくんゆるふわ量子コンピュータ
すまし顔のキュビットくん

位相フリップ符号をQiskitで実装する|もう一つの誤りを訂正する

2026-08-22 ・ 実践

#Qiskit#誤り訂正#位相フリップ#Python#実践

ビットフリップ符号はXエラー(ビット反転)を直せましたが、量子にはもう一種類、位相反転(Zエラー) があります。この記事ではそれを訂正する 位相フリップ符号 をQiskitで実装します。ポイントは「アダマール基底に移すと、位相反転がビット反転に化ける」こと。同じ理屈が使い回せます。

発想:基底を変えれば同じ問題

Zエラー(位相反転)は、アダマールで基底を変えると Xエラー(ビット反転)に変わります。だからビットフリップ符号を H で挟むだけで位相フリップ符号になります。

Hで挟んで同じ理屈に

🔄

H変換

位相→ビット反転へ

→
🧬

符号化

3個に広げる

→
🔧

訂正

多数決で戻す

準備

ターミナル
pip install qiskit qiskit-aer

① 符号化:Hで挟む

守りたいビットを3個に広げ、各ビットをアダマールでX基底へ移します。

Python
from qiskit import QuantumCircuit
 
qc = QuantumCircuit(5, 2)   # データ3 + シンドローム2
qc.x(0)                     # テスト用に |1⟩
 
qc.cx(0, 1); qc.cx(0, 2)    # 3個に広げる
qc.h([0, 1, 2])             # X基底へ(ここが位相フリップ用)
qc.barrier()

② 位相反転エラーを注入

Zエラーを1個のビットに起こします。

Python
qc.z(1)          # q1 に位相反転エラー
qc.barrier()

③ 基底を戻してシンドローム測定

Hで元の基底に戻すと、Zエラーがビット反転として現れるので、ビットフリップ符号と同じパリティ測定で位置を特定できます。

Python
qc.h([0, 1, 2])             # 基底を戻す(Zエラー→Xエラーとして見える)
qc.cx(0, 3); qc.cx(1, 3)    # パリティ (q0,q1)
qc.cx(1, 4); qc.cx(2, 4)    # パリティ (q1,q2)
qc.measure(3, 0); qc.measure(4, 1)
 
from qiskit_aer import AerSimulator
print(AerSimulator().run(qc, shots=1000).result().get_counts())

結果は {'11': 1000}。シンドローム11=q1が反転と正しく特定できました。ビットフリップ符号とまったく同じ読み方です。

🌱

両方直すのがショア符号

ビットフリップ符号(Xエラー用)と位相フリップ符号(Zエラー用)を入れ子に組み合わせると、両方のエラーを同時に直せる9量子ビットのショア符号になります。実機の表面符号もこの発想の延長です。

まとめ

  • 位相反転(Zエラー)は量子だけに存在する誤り
  • アダマールで基底を変えるとZエラーはXエラーに化ける
  • だからビットフリップ符号をHで挟むだけで位相フリップ符号になる
  • 両方を組み合わせると9量子ビットのショア符号
📚 もう少し詳しく(背景と理論)気になる人向け・タップで開く

位相フリップ符号は、アダマール変換が X と Z を入れ替える(HXH=Z, HZH=X)という性質を使い、Z エラーの問題をビットフリップ符号の X エラーの問題へ写して解きます1。量子の誤りは連続的にも見えますが、任意の1量子ビット誤りは恒等・X・Y・Z のパウリ基底に展開でき、X と Z を訂正できれば Y=iXZ も自動的に扱えます——これが誤りの離散化という量子誤り訂正の基本定理です2。

ビットフリップ(X用)と位相フリップ(Z用)を入れ子にすると、任意の単一誤りを訂正するショア符号になります。

次の一歩 🌸

Xエラー版はビットフリップ符号、誤り訂正の全体像は誤り訂正入門、基底を変えるゲートは量子ゲート入門へどうぞ。

Footnotes

  1. アダマール H は基底を X↔Z に回す。Z エラーは X 基底で見るとビット反転として現れるため、H で挟めば既存のビットフリップ符号の仕組みがそのまま使える。 ↩

  2. 誤りの離散化定理:連続的なノイズも {I, X, Y, Z} の線形結合で表せ、X と Z(したがって Y)を訂正できれば任意の単一量子ビット誤りに対処できる。量子誤り訂正が「有限種類の誤り」で済む理由。 ↩

この記事をシェア:𝕏 で共有LINEで送る

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

あわせて読みたい

すまし顔のキュビットくん

量子優位性(Quantum Advantage)を実証?|IBM×シカゴ大学の「検証可能な」論理量子計算を読み解く

2026年7月、IBMとシカゴ大学などの研究チームが「量子優位性の時代に入った」と発表しました。70個の論理量子ビットで古典スパコンでも解けない計算を約15分で実行し、結果を検証できる仕組みまで示したこの成果の意味を、量子超越性との違いや専門家の慎重な反応もあわせてやさしく整理します。

すまし顔のキュビットくん

キャット量子ビット(Cat Qubit)とは?AWS Ocelotが挑む「ビット反転しない」量子ビット

AWS Ocelotが採用して話題のキャット量子ビット(ボソニック符号)をやさしく解説。表面符号・qLDPCとは違うアプローチで誤り訂正のコストを減らす仕組み、Alice&BobやNord Quantiqueなど関連企業の2026年時点の動きをまとめます。

すまし顔のキュビットくん

量子LDPC符号(qLDPC)とは?表面符号の10分の1の量子ビット数で誤り訂正する次世代コード

IBMが2024年に発表した量子LDPC符号(bivariate bicycle符号)をやさしく解説。表面符号と比べて必要な物理量子ビット数を10分の1に減らせる仕組み、Loon→Kookaburra→Starlingのロードマップ、他社の動きを2026年9月時点でまとめます。

すまし顔のキュビットくん

表面符号(サーフェスコード)をQiskitで実装|XとZを同時に見張る2次元誤り訂正

Googleの量子プロセッサ「Willow」で話題になった表面符号(サーフェスコード)の最小単位をQiskitで実装。X・Zどちらのエラーも検出できるしくみと、格子を大きくするほど論理エラー率が指数関数的に下がる理由をコードで確かめます。