💠 量子コンピュータはなぜ速いのか
STAGE 2 ― 量子ゲート ―
クリア 0 / 8
🗺️ マップ
STAGE 2

量子ゲート

2列の対応表と掛け算のルール
🎯 ミッション
量子コンピュータの「計算」が、矢印の一覧表の書き換えであることを理解しよう。どんなゲートも「2列の対応表」で完全に決まり、当て方は「掛けて足す」の1つだけ――このルールをXとZで検算できれば合格。
未達成
ねこ博士
前回、量子ビットの状態は「|0⟩ の矢印と |1⟩ の矢印の一覧表」だと決めた。今日はその表を書き換える話をしよう。ここが「計算」にあたる部分だ。まず比較のために聞くけれど、ふつうのコンピュータは、ビットに対してどんな操作をしているのかな。
うさ美
論理回路の旅で勉強しました。ANDは「2つとも1のときだけ1」、ORは「どちらか1なら1」、NOTは「0と1をひっくり返す」。こういう部品をゲートと呼んで、大量につないで足し算や掛け算を作っている、と学びました。
ねこ博士
その通り。量子コンピュータにも同じ言葉を使って、量子ゲートと呼ぶ。ただし中身がまるで違う。量子ゲートは「0を1にする」のような値の書き換えではなく、矢印の表の書き換えなんだ。表の各行の矢印を、伸ばしたり、向きを変えたり、混ぜ合わせたりする。ただし、勝手な書き換えは許されない。ひとつだけ厳しい掟がある――何だと思う。前回決めた約束から考えてごらん。
うさ美
規格化ですね。矢印の長さの2乗の合計は、いつでも1でなければならない。読み出せば必ず何かの答えが出るのだから、確率の合計が1から外れたらおかしい。だから量子ゲートは、表を書き換えたあとも合計1を保つ操作でなければならない――そういう掟ですか?
ねこ博士
その通り。長さの合計を保つ書き換えのことを、専門用語でユニタリな操作という。難しそうな名前だけれど、意味は「表全体を、伸び縮みさせずに回すだけ」ということだよ。そしてこの掟から、面白い帰結がひとつ出る。量子ゲートはすべて逆向きにたどれる――つまり、必ず「元に戻すゲート」が存在する。回した分だけ逆に回せばいいからね。この性質を可逆という。ふつうのANDゲートはそうではない。出力が0だったとき、入力が「0と0」「0と1」「1と0」のどれだったかは、もう分からない。情報が消えてしまうんだ。
うさ美
量子ゲートは全部NOTのような「ひっくり返せば戻る」タイプばかり、ということですか。じゃあ、具体的にはどんなゲートがあるんですか?
ねこ博士
まず3つ覚えれば、今日の話は全部つながる。1つめは Xゲート。表の2行をそっくり入れ替える。|0⟩ の矢印と |1⟩ の矢印が席替えするんだ。|0⟩ に当てれば |1⟩ になるから、ふつうのNOTの親戚だね。2つめは Zゲート。こちらは |0⟩ の矢印はそのままで、|1⟩ の矢印だけを正反対の向きにする。長さは変えないから、読み出しの確率は何も変わらない。
うさ美
読み出しの確率を1ミリも変えないゲート……前回の |+⟩ と |−⟩ の話ですね。Zゲートは |+⟩ を |−⟩ に変える操作だ。確率だけ見ていると「何も起きていない」ように見えるのに、状態は確かに変わっている。位相を書き換える専門のゲートということですか。
ねこ博士
その通りだ。ここで、この先ずっと使う大事な種明かしをしておこう。X も Z も「入れ替える」「反転する」と説明したけれど、実はどんな量子ゲートも、たった2つの質問への答えで完全に決まる。「|0⟩ をどこへ送るか」と「|1⟩ をどこへ送るか」――この2列の対応表が、ゲートのすべてだ。
そして、一般の入力への当て方の規則もただ1つ。入力が「|0⟩ の矢印 a、|1⟩ の矢印 b」の重ね合わせなら、出力は
a×(|0⟩ の行き先)+ b×(|1⟩ の行き先)
――それぞれの行き先を a 倍・b 倍してから、行ごとに足す。「掛けて足す」、これだけだよ。ゲートは波全体に働き、波は足し算で重なっているから、成分ごとの行き先を求めて足せばいい。ちなみに数学では、この2列の対応表を行列と呼び、この「掛けて足す」を行列の掛け算と呼ぶ。名前だけ覚えておくといい。
うさ美
検算させてください。X の2列は「|0⟩ の行き先=|1⟩」「|1⟩ の行き先=|0⟩」。入力(a, b)に掛けて足すと、a×|1⟩ + b×|0⟩ で、新しい表は(b, a)――確かに2行の席替えです。
Z の2列は「|0⟩ の行き先=|0⟩」「|1⟩ の行き先=正反対の |1⟩」。同じく当てると新しい表は(a, −b)――|1⟩ の矢印だけ反転。どちらも「入れ替える」「反転する」という言葉の説明と、ぴったり一致します。
つまりゲートは、入力を見て何かを判断しているのではなくて、2列の対応表を機械的に当てているだけなんですね。
ゲートを当てて、矢印の表を書き換える
|0⟩の矢印 1.00 |1⟩の矢印 0.00 0が出る確率 100% 1が出る確率 0%
現在の状態: |0⟩ (当てたゲート: なし)
矢印が右向きなら「そのままの向き」、左向きなら「正反対の向き」を表す。Xは2つの矢印を入れ替え、Zは |1⟩ の矢印だけ向きを反転する。棒グラフは「長さの2乗=読み出しの確率」。Zを押しても棒グラフが1ミリも動かないこと、Xを2回・Zを2回で必ず元に戻ること(可逆)を確かめてみてほしい。H は次のステージの主役――2つの矢印を「混ぜる」ゲートで、押してから「測定」すると結果が五分五分になる。ひと足先に触っておくと、次の話が読みやすい。
【量子ゲート ― 矢印の表の書き換え】 ・掟:長さの2乗の合計を1に保つ書き換え(ユニタリ)だけが許される → すべてのゲートは可逆 X:|0⟩ 行と |1⟩ 行の矢印を入れ替える(NOTの親戚)。入力(a, b)→(b, a) Z:|1⟩ 行の矢印だけ正反対の向きにする(確率は変わらず、位相だけ書き換える)。入力(a, b)→(a, −b) ゲートの正体=2列の対応表:「|0⟩ の行き先」と「|1⟩ の行き先」だけでゲートは完全に決まる(数学の言葉で行列 当て方の規則はただ1つ(掛けて足す):入力(a, b)に対して
a×(|0⟩ の行き先)+ b×(|1⟩ の行き先) を行ごとに足す(行列の掛け算)。
ゲートは入力を見て場合分けしない――同じ規則を機械的に当てるだけ

確認クイズ

Q1. 量子ゲートが必ず「可逆」(元に戻せる)なのはなぜ?

Q2. 量子ゲートを1つ完全に指定するには、何を決めればいい?

Q3. Z ゲートを重ね合わせ(a, b)に当てると、表はどうなる?