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

アダマールゲート

和と差を作る主役
🎯 ミッション
量子計算の主役・アダマールゲート(H)の正体を、前のステージの掛け算のルールから「和と差を作る装置」として導こう。Hを2回当てると打ち消し合いで元に戻ること、途中で測定すると干渉が壊れることまで、自分の手で計算できれば合格。
未達成
ねこ博士
前のステージで、ゲートは「2列の対応表」で完全に決まり、当て方は「掛けて足す」の1つだけ、と確かめた。今日はその道具立てで、この旅を通じていちばん働く主役を紹介しよう。アダマールゲート、記号では H だ。対応表はこうだよ。
|0⟩ の行き先:|0⟩ の矢印と |1⟩ の矢印が、どちらも長さ×0.71(√2分の1倍)で同じ向きの状態。これが |+⟩ だね。
|1⟩ の行き先:|0⟩ の矢印は長さ×0.71でそのままの向き、|1⟩ の矢印は長さ×0.71で正反対の向き。これが |−⟩ だ。
つまり H は、はっきりした0や1を「五分五分の重ね合わせ」に変えるゲート。そして |0⟩ から作った |+⟩ と |1⟩ から作った |−⟩ では、向きの付き方が違う。ここに、あとで効いてくる仕掛けが隠れている。
うさ美
気持ち悪いところがあります。X や Z は「入れ替える」「反転する」と一言で言えたのに、H は「0が入ってきたら両方そのまま、1が入ってきたら片方に−」……まるでゲートが入力を見て条件分岐しているみたいです。ゲートは掛けて足すだけの機械のはずなのに、H だけ「もし〜なら」で動いているんですか?
ねこ博士
その気持ち悪さは正しい。そして答えは「分岐はしていない」だ。確かめよう。一般の入力(|0⟩ の矢印 a、|1⟩ の矢印 b)に、前のステージの掛けて足すルールで H の2列を当ててごらん。
a×(|0⟩ の行き先)+ b×(|1⟩ の行き先)を行ごとに整理すると――
・新しい |0⟩ の矢印 = a×0.71 + b×0.71 = (a+b)×0.71
・新しい |1⟩ の矢印 = a×0.71 − b×0.71 = (a−b)×0.71
H の正体は、これで全部だ。和と差を作る装置――どんな入力にも、常にこの同じ2行の式を当てているだけ。「もし〜なら」はどこにもない。
うさ美
なるほど……! 代入して確かめます。|0⟩ は(a=1, b=0)だから、和=0.71、差=0.71で両方プラス――|+⟩ です。|1⟩ は(a=0, b=1)だから、和=0.71、差=−0.71――|−⟩ です。
つまりマイナスは「1のときだけ発動する分岐」ではなくて、差の式 (a−b) が最初から持っている引き算なんですね。|1⟩ を入れたとき(a=0)に、たまたま引き算の項だけが残るから、−が「見えた」だけ。同じ式が、どんな重ね合わせを入れても動く。すっきりしました。
ねこ博士
その通り。では、この主役の腕前が現れる最初のお題だ。|0⟩ に H を2回続けて当てると、最後はどんな状態になるか――計算で答えを出してごらん。
うさ美
1回目で |0⟩ が五分五分になって、2回目でもっと混ざる……いえ、待ってください。混ぜるものがもう混ざっているのだから、そう単純ではないですね。ちゃんと計算してみます。
ねこ博士
いい着眼だ。計算の前に、いま導いた和と差の式を「配る」絵で言い直しておくと手が動かしやすい。H は倍率の装置だと思うといい。「入ってきた矢印の0.71倍を、|0⟩ 行と |1⟩ 行のそれぞれに配る」――長さ1の矢印が入れば0.71ずつ、長さ0.71の矢印が入ればその0.71倍が配られる。
向きも式の通りだ。|0⟩ 行に配る分は和 (a+b) の項だから、いつもそのままの向き。|1⟩ 行に配る分は差 (a−b) の項だから、|1⟩ から来た分だけが引き算=正反対の向きになる。マイナスがつくのは、この1か所だけだよ。
うさ美
配り方は分かりました。でも最後に、行き先が同じものが2つずつ届きますよね。それは足していいんですか。
ねこ博士
足していい。そこで前の旅の足し算ルールの前半、「区別がつかない道筋は、矢印を足してから2乗」がそのまま効くんだ。|0⟩ から出発して最後に |1⟩ にたどり着く道筋は2本ある。「途中で |0⟩ を経由する道筋」と「途中で |1⟩ を経由する道筋」だね。1回目の H のあと、きみはどちらを経由したかを知らないし、その手がかりは宇宙のどこにも残っていない。終わり方まで含めて区別がつかない。だから2乗する前に、矢印のまま足す。
うさ美
分かりました。では計算します。
さきほどの「0.71倍を配る」というのは、拡大コピー機と同じですね。0.71倍のコピー機に2回通したら、倍率は足し算ではなく掛け算で0.71×0.71=0.5倍になる。
1回目の H のあと、|0⟩ の矢印も |1⟩ の矢印も長さ0.71で同じ向き。ここから2回目です。
まず途中 |0⟩ を経由した道筋。長さ0.71の矢印に0.71倍がかかるので、|0⟩ 行にも |1⟩ 行にも0.5ずつ、どちらもそのままの向きで届きます。
次に途中 |1⟩ を経由した道筋。同じく0.5ずつですが、こちらは入り口が |1⟩ なので、|1⟩ 行に届く分だけが正反対の向きになる。
最後に、行き先が同じものどうしを足します。|0⟩ 行に届いたのは0.5と0.5で、どちらも同じ向きだから 0.5+0.5=1。|1⟩ 行に届いたのは0.5と、正反対の0.5……足すとゼロ! 消えました。つまり2回の H で、状態はぴったり |0⟩ に戻る。
4本の道筋を、かけ算で1本ずつ数える
上段が H のルール。H は「入ってきた矢印の0.71倍を、それぞれの行に配る」倍率の装置で、マイナスがつくのは |1⟩ に当てたときの |1⟩ 行、この1か所だけ
中段は、|0⟩ から H を2回通したときの4本の道筋。倍率は続けて通すと掛け算になるので(0.71倍のコピー機を2回通すのと同じ)、どの道筋も 0.71×0.71=0.5。ただし4本目だけは、上段の「1か所のマイナス」を拾うので正反対の向きになる。右端の矢印がその向きだ。
下段は、行き先が同じものどうしの足し算。|0⟩ 行には同じ向きが2本届いて強め合って1.00、|1⟩ 行には正反対が2本届いて打ち消し合ってゼロ。マイナス1個の置き場所だけが、この結果を作っている。
ねこ博士
その通り。いま、きみは量子コンピュータの心臓部をその手で動かした。和と差の式で機械的に検算しても同じだよ。1回目のあとは a=b=0.71だから、2回目の和は (0.71+0.71)×0.71=1、差は (0.71−0.71)×0.71=0――道筋の数え上げと式の一撃が、同じ答えを出す。
決定的だったのは、|1⟩ にたどり着く2本の矢印が正反対を向いていて、打ち消し合ったことだね。
あのマイナス1個は飾りではないよ。もし向きがなくて長さだけを足していたら、|0⟩ 行も |1⟩ 行も 0.5+0.5=1 になる。確率は長さの2乗だから、合計は 1+1=2 ――読み出せば必ずどちらか一方が出るのだから、これは起こりえない。打ち消し合いは H のおまけの性質ではなく、H がユニタリであるための条件そのものなんだ。確率だけを足していく世界には、決して作れない技だよ。
うさ美
確かめたいことがあります。もし1回目の H のあとで測定してしまったら、どうなりますか。測定すれば状態は |0⟩ か |1⟩ のどちらかに決まってしまうから、2回目の H は、その決まった状態に当たることになりますよね。
ねこ博士
その通りになる。1回目の H のあとで測ると、五分五分だから0か1が出る。仮に0が出たとしよう。状態は |0⟩ になり、2回目の H は |+⟩ を作る。1が出た場合は状態が |1⟩ になり、2回目の H が作るのは |−⟩ ――|1⟩ の矢印が正反対を向いた、あの状態だ。たどり着く状態は違う。でも前回確かめた通り、向きは2乗すると消えるから、どちらを読んでも五分五分。だから最終結果は50%対50%。測らずに通したときは100%で0だったのに、途中で覗いただけで結果が変わる。この差こそが、量子コンピュータが計算の途中でぜったいに中身を覗けない理由であり、同時に、速さの源でもあるんだ。
H を2回:道筋の矢印を足すと、|1⟩ が消える
左から右へ、|0⟩ を出発した状態が2回の H を通る。中央が1回目の H のあとの状態、右端が2回目のあと。右端の |1⟩ には2本の道筋が届き、その矢印は正反対を向いているので、足すと長さゼロ――確率0で、絶対に1は出ない。|0⟩ には同じ向きの矢印が2本届いて強め合い、確率100%になる。「途中で測定する版」に切り替えると、測定のたびに五分五分のくじで0か1が決まり、片方の道筋だけが残る。結果が0なら2回目の H は |+⟩ を、1なら |−⟩(|1⟩ の矢印だけ正反対)を作る――たどり着く状態は出た目で違うが、向きは2乗すると消えるから、どちらも読み出しは50%対50%。打ち消し合いはもう起きない。同じ2回のHでも、干渉が使えるかどうかで結果がまるで違う
うさ美
……あっ、前回の宿題が解けます! 「|+⟩ と |−⟩ は読み出しでは区別できないが、混ぜる操作をすれば区別できる」という約束。H を当てればいいんですね。|+⟩ は |0⟩ に H を当てたものだから、もう一度 H を当てれば |0⟩ に戻って、測れば確実に0。|−⟩ は |1⟩ に H を当てたものだから、H をもう一度当てれば |1⟩ に戻って、確実に1。100%の確信で見分けられる
ねこ博士
約束を果たせたね。ここで、量子アルゴリズムの設計図が見えてくる。読み出しでは「矢印の長さ」しか見えない。でも知りたい答えが向きに隠れていることは、いくらでもある。そのとき使う手はいつも同じだ――読む前に、向きの違いが長さの違いに化けるようなゲートを当てる。H はその変換を行う道具で、量子アルゴリズムはたいてい「H で重ね合わせを作り、計算し、H で干渉させて読む」という形をしている。この骨格は、これから先のステージで何度も出てくるよ。
うさ美
整理します。H の正体は和と差を作る装置で、マイナスは差の式の引き算――入力を見た条件分岐ではない。そしてHを2回当てると元に戻るのは、いらない行の矢印が正反対を向いて打ち消し合うから。この打ち消し合いは、確率だけの世界には決して作れない――量子コンピュータが持っていて、ふつうのコンピュータが持っていない武器は、これなんですね。
ねこ博士
その通り。――ところで、この H や X を、実物の装置はどうやって起こしているのか。チップの上に量子ビットをどう組み立てるのかも含めて、それはそれで丸ごと一つの旅になる話だから、実機がどう作られているかは続編の旅に譲ろう。この旅では、このまま速さの正体を追いかける。次のステージでは、量子ビットの数を増やすよ。
【アダマールゲート H ― 和と差を作る主役】 ・対応表:|0⟩ → 長さ×0.71が2本、同じ向き(=|+⟩)/ |1⟩ → 長さ×0.71が2本、|1⟩ 側だけ正反対(=|−⟩) ・掛けて足すルールで一般式にすると、入力(a, b)に対して
新しい |0⟩ の矢印=(a+b)×0.71、新しい |1⟩ の矢印=(a−b)×0.71
H は和と差を作る装置で、マイナスは差の式の引き算。入力による条件分岐ではない
H を2回 → 元に戻る。理由:いらない行に届く2本の道筋の矢印が正反対で打ち消し合う。この打ち消しは H がユニタリであるための条件そのもの ・途中で測定して手がかりを残すと道筋の区別がつき、打ち消しが起きず50%対50%になる ・|+⟩ と |−⟩ は読み出しでは区別できないが、H を当てれば |0⟩ と |1⟩ に戻って100%見分けられる ・量子アルゴリズムの骨格:H で重ね合わせを作る → 計算する → H で干渉させて読む

確認クイズ

Q1. H が |1⟩ に当たったときだけマイナスが現れるのはなぜ?

Q2. |0⟩ にアダマールゲート H を2回続けて当てると、確実に |0⟩ に戻る。その理由は?

Q3. 1回目の H のあとで測定してから2回目の H を当てると、最終結果はどうなる?