見出し画像

量子コンピューティングを齧る CNOTゲート

前回のゲートは危なかった。

パウリとアダマールの仁王だけだと思っていた。
ところがそこには位相シフトと回転も加わったユニタリー四天王が揃っていやがった。
しかもSだのTだのVだのと別形態に進化した時にはわくわくしてきやがった。やばいときだってのに。

ただ、わかっていなかった。
自分はゲートを「見ただけ」で実際には「何も通していない」ことを。
そしてもっと大きな見落としがあったことを。

1. 制御NOTゲート

モジュラス数学

これまでは1量子ビットだけを扱ってきていた。
え?そうなの?あ、言われてみればそうかも…
それだと量子の「重ね合わせ」は扱えるが「もつれ」はどうかな。
YAZAWAみたいなことになった。
とにかく2量子ビットを転がさないといけない。

そのためにはモジュラス数学を知らなければならないのだ。
ゲートンったらぁ。もー、じゅらすんだからぁ。
ただのMODだった。割り算の余りを使うって話だ。想いを寄せてるゲートンなんてだっせー渾名の奴はいない。
それを$${x \oplus y}$$と書くらしい。

おい。待て待て待て待て。$${\oplus}$$ってテンソル積じゃねーのか?
愚か者めが!テンソル積は$${|x\rangle \otimes |y\rangle}$$じゃ!
$${\oplus}$$と$${\otimes}$$は別の子なの!似てるけど違うの!一緒にしないで!
情緒がちょっとね…季節の変わり目で…


CNOTゲート

ようやく制御NOT(CNOT)ゲートの話だ。まず否定するところから入る。
これは$${|x\rangle}$$(制御ビット)と$${|y\rangle}$$(標的ビット)を通すと制御ビットはそのまま(これは量子ゲートの決まりみたい)、標的ビットが$${|x\rangle \oplus |y\rangle}$$になるそうだ。
制御ビットはともかく標的ビットはゲート通った結果はなんか「結果ビット」とか「観測ビット」とか名前が変わるのかと思ったらどうやらそのまま頑なに標的ビットと呼び続けるらしい。

それをやるのがこれ。もはや指示語しか出てこない。

$$
\text{CNOT} = \begin{pmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 1 & 0 \end{pmatrix}
$$

$${\text{CNOT}|xy\rangle}$$で$${|x\rangle}$$が$${|1\rangle}$$の時だけ$${|y\rangle}$$が反転、$${|0\rangle}$$だったらそのまま出てくる。
言っとくけど「$${|2\rangle}$$だったら?$${|13\rangle}$$だったらどうするんですかっ!?」とか聞くなよ(後ろには立つな)。
0から1までしか無いんだ。

$${|x\rangle}$$と$${|y\rangle}$$をCNOTに通すのはこう書くらしい。

$$
\text{CNOT}(\lvert x \rangle \otimes \lvert y \rangle) = \lvert x \rangle \otimes \lvert x \oplus y \rangle
$$

とにかくこれがCNOTゲート。排他的論理和 XOR(大切なことを雑に書きました)。


ユニタリティ

このCNOTゲートだけどこれもユニタリーゲートの性質を持っている。

2回通すと元に戻るのよ。そう、もう一度くぐれば元に戻れるの。ネオ。
ボケたつもりがあながち無さそうでもない設定になってしまった。

$$
\text{CNOT}(\lvert x \rangle \otimes \lvert x \oplus y \rangle) = \lvert x \rangle \otimes \lvert x \oplus (x \oplus y) \rangle = \lvert x \rangle \otimes \lvert y \rangle
$$

可逆性ってやつらしい。$${x \oplus x = 0}$$が利いてくるそうだ。


ゲート操作の表記

ここでつまずいたのは表記の問題だ。勝手につまずいただけなんだけど。
テキストには$${\text{CNOT}|01\rangle}$$とか$${\text{CNOT}|11\rangle}$$ってあったのを適当に援用して$${\text{CNOT}|xy\rangle}$$って書いたけどこれは正確性を欠くらしい。

せめて$${\text{CNOT}|x,y\rangle}$$、できれば$${\text{CNOT}(\lvert x \rangle \otimes \lvert y \rangle)}$$ぐらいちゃんと書いたほうがいいらしい。
だから「制御NOTに通せばいいなら$${\text{CNOT}|xxy\rangle}$$でいいんじゃね?」みたいな粗雑な考えは怒られる。
ていうか「それ、3量子ビットじゃん」と笑われるんですぅ。

整理するとこういうことだって。

  • 2量子ビットを厳密に表現する際にはテンソル積が基本

  • 簡略化や文脈が明確な場合、数値的な例やアルゴリズムの説明でカンマ区切りも使うことがある(量子情報の分野ではけっこう使うという情報もある)。

  • エンタングルメントなどの特殊な場合、テンソル積が使えないこともある(2量子ビットが独立じゃないからだってさ)。


それにしてもLaTeX表記…めんどくせー…


この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?