STAGE 4
もつれを作る
2量子ビットとCNOT
🎯 ミッション
量子ビットが増えると矢印の表が2ⁿ行に膨れ上がることを理解し、CNOTゲートでもつれを自分の手で作ろう。「もつれた状態は2つの表の掛け算では書けない」ことを説明できれば合格。
未達成

ねこ博士
ここまでは量子ビット1個の話だった。今日は2個に増やす。まず、ふつうのビットが2個あったら、全体としてどんな値を取れるかな。

うさ美
00、01、10、11 の4通りです。3個なら8通り、n個なら2ⁿ通り。……ということは量子ビットが2個なら、この4つの候補それぞれに矢印が1本ずつつくんですね。表が4行になる。

ねこ博士
その通り、先回りできたね。書き方も決めておこう。2個の値を |00⟩ のように並べて書き、左の桁を1桁目、右の桁を2桁目と呼ぶことにして、|00⟩ |01⟩ |10⟩ |11⟩ の4行に矢印が1本ずつ。規格化の約束は変わらない――4本の矢印の長さの2乗を全部足すと1だ。読み出せば、この4通りのうちどれか1つが出る。
そして、ここからが量子コンピュータの人を驚かせる部分だよ。量子ビットがn個なら、表は2ⁿ行になる。10個で1024行、20個で約100万行、50個で約1000兆行。
そして、ここからが量子コンピュータの人を驚かせる部分だよ。量子ビットがn個なら、表は2ⁿ行になる。10個で1024行、20個で約100万行、50個で約1000兆行。

うさ美
行の名前を見ていて気づいたのですが、|00⟩ |01⟩ |10⟩ |11⟩ という並びは、0が1に繰り上がっていく数の数え方そのものに見えます。00、01、10、11……これは2つの記号だけで数を書いているのではありませんか。

ねこ博士
その通り、0と1の2つだけで数を書く書き方で、2進法と呼ぶ。|00⟩ |01⟩ |10⟩ |11⟩ は、順に0番・1番・2番・3番だ。
これは後で効いてくるから、はっきりさせておこう。表の行の名前は、候補に振った通し番号そのものなんだ。量子ビットがn個なら、行は0番から 2ⁿ−1 番まで。だから「全部の行に矢印が立っている状態」と言えば、それは「0番からいちばん最後までの候補を、全部いっぺんに持っている状態」を意味する。候補に名前を付ける手間も、番号を書き込む作業も要らない――量子ビットを並べた時点で、行の名前として最初からそこにあるんだよ。
これは後で効いてくるから、はっきりさせておこう。表の行の名前は、候補に振った通し番号そのものなんだ。量子ビットがn個なら、行は0番から 2ⁿ−1 番まで。だから「全部の行に矢印が立っている状態」と言えば、それは「0番からいちばん最後までの候補を、全部いっぺんに持っている状態」を意味する。候補に名前を付ける手間も、番号を書き込む作業も要らない――量子ビットを並べた時点で、行の名前として最初からそこにあるんだよ。

うさ美
2倍、2倍で増えるから、あっという間に手に負えない数になりますね。300個だと……2を300回かける。2を10回かけると1024で、だいたい1000=10³ですよね。300回はその10回ぶんが30組だから、10³を30回かけて10⁹⁰くらいでしょうか。それは、宇宙にある原子の個数よりも多い気がします。

ねこ博士
正確な見積もりだ。観測できる宇宙の原子の数は10⁸⁰個くらいと見積もられているから、たった300個の量子ビットの状態を書き下すには、宇宙の全原子を紙にしても足りない。この途方もない大きさが「量子コンピュータはすごい」と言われる根拠として、よく引き合いに出される。
――でも、ここで立ち止まってほしい。前回までに決めたルールから、冷や水を浴びせる帰結が出るんだ。何か分かるかな。
――でも、ここで立ち止まってほしい。前回までに決めたルールから、冷や水を浴びせる帰結が出るんだ。何か分かるかな。

うさ美
……読み出せる答えは1つだけ、ですね。表が10⁹⁰行あっても、測定すればそのうち1行が選ばれて、出てくるのは300桁の0と1の列がひとつ。しかも測ったらその1つに変わってしまうので、残りの行を後から見ることもできない。表がどれだけ巨大でも、外に取り出せる情報の量はふつうのコンピュータと変わらないということですか。

ねこ博士
まさにそこだ。だから「全部の答えを同時に計算するから速い」という説明は、そのままでは成り立たない。同時に計算できても、読めなければ意味がないからね。この壁をどう乗り越えるかが、これから先の全ステージのテーマになる。今日はその前に、巨大な表を本物にする道具を手に入れよう。
量子ビットの個数
量子ビット 2 個
矢印の表の行数 4
1回の測定で読める答え 1個
スライダーで量子ビットの個数を変えると、矢印の表の行数(=答え候補の数)が2倍ずつ増えていく。目盛りは対数――1目盛りごとに10倍になる物差しで、そうしないと画面に収まらない。参考の横線は「観測できる宇宙の原子の数(約10⁸⁰個)」。およそ266個の量子ビットで、表の行数はこの線を超える。ただし、行がいくつあっても1回の測定で外に出てくる答えはつねに1個だけ。この非対称が、量子アルゴリズム設計のすべての出発点になる。

うさ美
「本物にする道具」というのは、どういう意味ですか。表が4行あるのは、もう本物では。

ねこ博士
いい聞き返しだね。例で示そう。量子ビットを2個用意して、それぞれ別々に H を当てたとする。1桁目は |0⟩ と |1⟩ が0.71ずつ、2桁目も0.71ずつ。このとき全体の4行の表はどうなるか、計算してみてほしい。「1桁目が |0⟩ で2桁目も |0⟩」という候補 |00⟩ の矢印は、どれくらいの長さになるかな。

うさ美
それぞれ独立に起きることだから、掛け算だと思います。0.71×0.71=0.5。同じように |01⟩ も |10⟩ も |11⟩ も0.5。4行とも0.5で、2乗して0.25ずつ、合計1。ちゃんと規格化された、立派な4行の表です。……これのどこが、「本物ではない」んですか?

ねこ博士
いまの計算の手順に、答えが出ているんだよ。きみは4本の矢印を1本ずつ調べたわけではなく、1桁目の2個と2桁目の2個を、掛け算しただけだ。九九の表と同じ構造だね。九九は81マスあるけれど、覚えるのは縦と横の見出しだけで、マスの中身はいつでも掛け算で再現できる。この表も同じで、「2+2」の見出しさえ控えておけば、4行を丸ごと再現できる――つまり、ふつうのコンピュータでも簡単に真似できてしまう。こういう「別々の表の掛け算で書ける状態」を積状態という。量子ビットをn個持ってきて、それぞれ勝手に操作しているだけなら、状態はずっと積状態のままで、表の行数は2ⁿでも、覚えておくべき数字は1個あたり2個ずつ、合わせて2×n個しかない。300個なら600個――10⁹⁰行の表が、たった600個の見出しで書けてしまう。
本物の2ⁿは、積状態では書けない状態を作ったときに初めて現れる。そして実は、その状態にきみはもう出会っている。ベルの不等式の旅で調べた、もつれだ。
本物の2ⁿは、積状態では書けない状態を作ったときに初めて現れる。そして実は、その状態にきみはもう出会っている。ベルの不等式の旅で調べた、もつれだ。

うさ美
もつれ……あの状態ですか。復習すると、2つの粒子の測定結果が必ず一致する。片方だけ見ればまったくのランダムなのに、2つを突き合わせると完全な相関がある。しかもその相関は「あらかじめ決めておいた答え合わせ」では説明がつかない――ベルの不等式が破れることで、それは実験で確かめられていました。
あの不思議な相関と、「掛け算で書けない表」が、同じものだと言うんですか?
あの不思議な相関と、「掛け算で書けない表」が、同じものだと言うんですか?

ねこ博士
同じものなんだ。それを言葉ではなく計算で確かめるために、今日はもつれを自分の手で作る。必要なのは新しいゲート1つだけ――CNOTゲートだ。名前は「制御つきNOT」の略で、2つの量子ビットを使う。役割を持たせて、1桁目(左の桁)を制御ビット、2桁目(右の桁)を標的ビットと呼ぶ。動きはこうだ。制御ビットが1の行だけ、標的ビットをひっくり返す。制御ビットが0の行は何もしない。
表で言えば、|10⟩ の矢印と |11⟩ の矢印を入れ替えるだけ。|00⟩ と |01⟩ には触らない。とても素朴な操作だね。
表で言えば、|10⟩ の矢印と |11⟩ の矢印を入れ替えるだけ。|00⟩ と |01⟩ には触らない。とても素朴な操作だね。

うさ美
これでもつれが作れるんですか? 行を2つ入れ替えるだけの、ずいぶん素朴な操作に見えますが……。

ねこ博士
その素朴さで何ができるか、お題で試してみよう。作ってほしいのは、|00⟩ に0.71、|11⟩ に0.71、残り2行はゼロという表だ。使える道具は H と CNOT、出発点は |00⟩。さて、どんな順番で当てればいいかな。
4行それぞれに矢印が1本。右向きが「そのままの向き」、左向きが「正反対の向き」。棒グラフは長さの2乗=その答えが出る確率。もつれの作り方は2手だけ:「H(1桁目)」→「CNOT」。すると |00⟩ と |11⟩ にだけ矢印が立ち、|01⟩ と |10⟩ はゼロになる。この状態を測ると、00 か 11 しか出ない――2つの量子ビットは必ず同じ値になる。判定欄には、その表が「別々の表の掛け算で書けるか(積状態)」「書けないか(もつれ)」が表示される。

うさ美
できました。目標の表では |11⟩ に矢印が要ります。CNOT は |10⟩ と |11⟩ の入れ替えですから、先に |10⟩ に矢印を立てておいて、CNOT で |11⟩ へ運べばいい。そして |10⟩ に矢印を立てるのは、1桁目に H を当てればできます。
やってみます。|00⟩ に H(1桁目)を当てると、表は |00⟩ が0.71、|10⟩ が0.71、残り2行はゼロ。次に CNOT。|00⟩ の行は制御が0だからそのまま、|10⟩ の行は制御が1だから標的がひっくり返って |11⟩ に移る。
結果は |00⟩ が0.71、|11⟩ が0.71、他はゼロ――お題の表になりました。
やってみます。|00⟩ に H(1桁目)を当てると、表は |00⟩ が0.71、|10⟩ が0.71、残り2行はゼロ。次に CNOT。|00⟩ の行は制御が0だからそのまま、|10⟩ の行は制御が1だから標的がひっくり返って |11⟩ に移る。
結果は |00⟩ が0.71、|11⟩ が0.71、他はゼロ――お題の表になりました。

ねこ博士
では、いま作った表が本当に積状態ではない――別々の表の掛け算では書けないことを、確かめよう。もし掛け算で書けるとしたら、1桁目の表を「|0⟩ に a、|1⟩ に b」、2桁目を「|0⟩ に c、|1⟩ に d」と置ける。このとき4行の矢印はどうなるかな。

うさ美
さっきと同じで掛け算です。|00⟩ は a×c、|01⟩ は a×d、|10⟩ は b×c、|11⟩ は b×d。
これがいま作った表と一致するには、a×d=0 かつ b×c=0、そして a×c=0.71、b×d=0.71 でなければいけません。
……矛盾します! a×c が0でないなら、a も c も0ではない。b×d が0でないなら、b も d も0ではない。すると a×d も b×c も0にならないはずです。そんな a, b, c, d は存在しない。この表は、どうやっても2つの表の掛け算では書けません。
これがいま作った表と一致するには、a×d=0 かつ b×c=0、そして a×c=0.71、b×d=0.71 でなければいけません。
……矛盾します! a×c が0でないなら、a も c も0ではない。b×d が0でないなら、b も d も0ではない。すると a×d も b×c も0にならないはずです。そんな a, b, c, d は存在しない。この表は、どうやっても2つの表の掛け算では書けません。
積状態なら、4行は必ずこの掛け算の表の形になる(九九の表と同じ)。いま作った表(|00⟩ と |11⟩ に0.71)にするには4マスの条件が同時に成り立つ必要があるが、上から順にたどると連鎖して行き詰まる。見出しに戻せない表が存在する――それがもつれであり、この4行は正真正銘4個ぶんの独立した情報になっている。

ねこ博士
その背理法で正しいよ。それが、もつれ状態だ。物理学者はこの表をベル状態と呼んでいる。たった2手で作れてしまう。これで「2ⁿ行の表」が本物になる条件が分かったね。もつれがあるとき、表全体は、各量子ビットの情報をばらばらに集めても再現できない。300個の量子ビットがしっかりもつれた状態を、ふつうのコンピュータで正直に記録しようとすれば、10⁹⁰個の数字を書き留めることになる。だからこそ、量子コンピュータのシミュレーションは50個あたりでもう手に負えなくなるんだ。もつれこそが、量子コンピュータをふつうのコンピュータで真似できなくしている当のものだよ。
発展コラム
おまけをもうひとつ。2項目の符号だけを変えた 0.71×|00⟩ − 0.71×|11⟩ も積2個の和で、読み出せば「00 か 11 が半々で、必ず一致」という同じ結果を与える。でもこれは、元の表とは別のもつれ状態だ。STAGE1 で見た |+⟩ と |−⟩ の関係――符号の違いは読み出しには現れないが、干渉させると区別できる――が、もつれた2量子ビットの世界でもそのまま生きている。
積では書けない。でも、和なら書けている
本文で示したのは、正確には「積1個では書けない」ということだ。表の各行は、それ単体なら積状態そのもの(たとえば |00⟩ は a=1、b=0、c=1、d=0 の掛け算で書ける)。だから、どんな状態も「積状態の和」としてなら必ず書ける。いま作った表も、0.71×|00⟩ + 0.71×|11⟩ という積2個の和だ。もつれとは、和の形にしたとき、どう工夫しても2項以上の積が必要になる状態のこと――そして「最低で何項の積が要るか」は、もつれの強さを測る物差しとして実際に使われている。おまけをもうひとつ。2項目の符号だけを変えた 0.71×|00⟩ − 0.71×|11⟩ も積2個の和で、読み出せば「00 か 11 が半々で、必ず一致」という同じ結果を与える。でもこれは、元の表とは別のもつれ状態だ。STAGE1 で見た |+⟩ と |−⟩ の関係――符号の違いは読み出しには現れないが、干渉させると区別できる――が、もつれた2量子ビットの世界でもそのまま生きている。

ねこ博士
ところで、もつれは「超光速の電話線」ではない――片方だけを見ればただのランダム、というのはベルの不等式の旅で確かめた通りだ。量子コンピュータでのもつれの役目は、通信ではなく計算にある。CNOT が効くのは、こういう場面だよ。2桁目の量子ビットに「1桁目についての何らかの計算結果」を書き込むと、1桁目のすべての候補について、その計算結果が同時に表に書き込まれる。しかも書き込みは矢印の付け替えだから、あとで干渉させることができる。
――ここまでで、道具はすべてそろった。矢印の表、それを混ぜる H、そして候補ごとに計算結果を結びつける CNOT。次のステージでは、この3つを組み合わせて世界最小の量子アルゴリズムを作り、「並列計算だから速い」という説明のどこが間違っているのかを、はっきりさせる。
――ここまでで、道具はすべてそろった。矢印の表、それを混ぜる H、そして候補ごとに計算結果を結びつける CNOT。次のステージでは、この3つを組み合わせて世界最小の量子アルゴリズムを作り、「並列計算だから速い」という説明のどこが間違っているのかを、はっきりさせる。
【複数の量子ビット ― 表の指数関数的な広がりと、もつれ】
・量子ビットn個 → 答え候補は2ⁿ通り、矢印の表は2ⁿ行。300個で10⁹⁰行(宇宙の原子より多い)
・ただし読み出せるのは1回に1行だけ。表が巨大でも取り出せる情報は増えない
・積状態:各量子ビットの表の掛け算で書ける状態(例: |00⟩ |01⟩ |10⟩ |11⟩ が全部0.5)。見出し2×n個で丸ごと再現できる(九九の表と同じ)
・CNOT:制御ビットが1の行だけ、標的ビットを反転(=|10⟩ 行と |11⟩ 行の矢印を入れ替える)
・もつれの作り方:|00⟩ → H(1桁目) → CNOT → |00⟩ と |11⟩ に0.71ずつ(ベル状態)。掛け算では書けないことが背理法で示せる
・もつれがあって初めて2ⁿの表は本物になる。ふつうのコンピュータで真似できなくなる原因はここにある。ただしもつれで通信はできない
確認クイズ
Q1. 量子ビットが300個あると矢印の表は約10⁹⁰行になる。ここから言えることは?
正解! 表の大きさと、外に取り出せる情報の量はまったく別の話。測定すれば300桁のビット列が1つ出るだけで、しかも状態はそれに変わってしまう。「表が巨大だから速い」という説明が成り立たない理由がここにある。
Q2. |00⟩ から出発して、1桁目の量子ビットに H を当ててから CNOT をかけた。できあがる表は?
正解! H で |00⟩ と |10⟩ が0.71ずつになり、CNOT は制御(1桁目)が1の行だけ標的を反転するので |10⟩ が |11⟩ に移る。測れば 00 か 11 しか出ない、値が必ず一致するもつれ状態(ベル状態)だ。
Q3. 「もつれ」が量子コンピュータにとって決定的に重要なのはなぜ?
正解! 積状態のままなら、覚えるべき数字は2×n個しかなく、ふつうのコンピュータでも簡単に真似できる。もつれて初めて表全体が「ばらしては再現できない」ものになる。なお、もつれで通信はできない――片方だけを見れば、いつでもただのランダムだ。