エンジニアキャリアゼロのCFOが量子コンピュータを勉強してみる(旅立ち前夜) - 3



## 今回は
[第２回](https://qiita.com/taishikawa/items/da9fcf46e0f536a1b511)はかなり抽象的な内容でしたが、このあたりから一気に計算が増えてきます。

計算が増えてくることは良い面がありまして、「黙って計算しろ(Shut up and calulate!)」という[格言があるくらい（佐藤先生の本、５６ページあたり）](https://www.amazon.co.jp/gp/product/4065020328/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=kawalog03-22&creative=1211&linkCode=as2&creativeASIN=4065020328&linkId=5ed87c1a0d0afcff804b1bbddc01da1e)。次から次へと疑問は湧いてくるが、我慢して計算をしていくといつの間にかその疑問が解けていくという性質はありそうです。

前回のエンタングルの例もそうですが、実際２つの状態のテンソル積で表現できるか、できないかという計算を通じて、エンタングルしているか否かを判別することができます。なので、描像と数式は表裏一体なわけです。

章末問題があることもあり、実際に手を動かして計算をしてみましたので載せておきます。試行錯誤しながらいろいろやっているので手書きですがご容赦ください。


$$
\def\bra#1{\mathinner{\left\langle{#1}\right|}}
\def\ket#1{\mathinner{\left|{#1}\right\rangle}}
\def\braket#1#2{\mathinner{\left\langle{#1}\middle|#2\right\rangle}}
$$




### Quantum gate identities: Hadamard gates

$H \sigma_x H = \sigma_z$ を題材に、ユニタリー行列による基底の変換の話をしています。ユニタリ行列により基底が変換されるわけですが、本件に限らずユニタリ行列で挟んだ行列$M$は、当該ユニタリ行列で変換される新しい基底でみた場合の同様の行列$\tilde{M}$を表します。したがって、先程の例で言えば$\ket{0}$　$\ket{1}$　という基底はアダマール行列により $\ket{+}$　$\ket{-}$　の基底に変換されるわけで、$\ket{0}$　$\ket{1}$　で見た場合の$\sigma_x $は  $\ket{+}$　$\ket{-}$　の基底において$\sigma_z $ということになります。

### Quantum gate identities: CNOT

アダマールゲートで挟まれたCNOTは、全体としては逆の向きのCNOTと等しいという計算結果ですが、計算の結果の解釈が大切です。これも量子力学の基本的性質とのことですが、もしAがBに対して何かをしたら、同時にBがAに対して何かをするということになります。「バックアクション」といいます。

### Multi-qubit tensor product operations: cautionary note

テンソル積の計算のときの落とし穴の話です。原則として隣り合った量子ビットに関してテンソル積を行いたいところ、ABCと３つ量子ビットがあって、AとCをつなげたCNOTのようにBを飛ばしている場合には、$I_B \otimes CNOT_{A,C}$となるのだけれど、行列で表すと複雑になります。黒板に書いているように、９ｘ９の行列になるのですが、その中でBのところが０のところにつきCNOTを書いて、つづいてBが１のところに同じくCNOTを書く形になります。いかにも複雑な計算のやり方ですが、こうしないとBをまたいでいるので正しく計算できないことになります。

他に正しくやるとすると生徒が質問しているように、スワップゲートをつかって量子ビットの並びを変えてCNOTに関与する量子ビットが隣り合うようにする手があるのですが、これまた複雑ではあります。順番を間違えないように気をつけてねというのがこのコマのメッセージです。

## PS #2 Quantum Mechanics
ここからプロブレムセットに入ります。冒頭２個は素直にやればよいのですが、３つ目からは一気に手を動かすようになります。

### Pauli matrices

パウリ行列の固有値と固有行列をもとめるものです。線形代数を思い出せばできるはずです。

### Quantum gates

これも素直に計算すればOKです。

### Bloch sphere

これは結構難しかったです。グローバルフェーズが変わっても状態が変わらない性質が入ってきているし、そもそも感覚的にこれが何を意図しているか捉えにくいというのもあります。任意の状態を２つの位相で表現するというのはまだしも、回転操作をその中心になる軸と角度で表現するというのもとっつきにくいです。感覚的に理解するのは後回しにして、ここでは問題を解くことに集中しました。以下、手書きで恐縮ですが自分でやってみた結果です。

問題の前半は、$U$を$\theta$を使って書き下した上で$X$行列などと比較することで位相を計算するもの。ピッタリは一致しないのだけれどもグローバル位相がずれているという解釈になります（ややこしい）。
![File_001 (2).png](https://qiita-image-store.s3.amazonaws.com/0/304689/3ded644c-f780-19b7-4dec-343aaac380ac.png)

Sの行列に関する計算は難しいです。掲示板でも悩んでいる受講生の声が上がっていますが、そのままやると解けないのでグローバル位相のズレ（計算では$\gamma$を入れてみています）を入れてみると、解くことができました。
![File_001.png](https://qiita-image-store.s3.amazonaws.com/0/304689/4fe21436-d329-97d9-6d78-c79e77a271b9.png)

最後は、ブロッホ球上でもともといた位置から、$S$や$SH$などの操作を加えることでどこに点が（つまり状態が）移動するかを問うもの。もともとは $\ket{+}$の状態だったわけですが、これに例えば$S$の操作を加えてあげると$S\ket{\psi} = \frac{1}{\sqrt2}\ket{0} + i \frac{1}{\sqrt2}\ket{１}$のように$i$がかかってきます。最初の状態は$\ket{+}$つまりブロッホ球では$x$軸の方向だったが、これが$y$軸の方向を向いているはずです。ということはその分$\phi$が$\pi / 2$分変わったはず、その場合$z$軸を中心に回転しているはず、といって回転操作の角度を割り出していきます。
そうやって考えてみると、$SH$についても、もともと$\ket{+}$の状態からスタート、これにもう一回$H$がかかって$\ket{０}$に戻る、それに対して$z$軸を中心とした回転操作をすることになるので$\ket{０}$のまま変化なし、ということになります。
さらに$SHSH$はというと、上記$SH$の仕上がりの状態から$H$を一回（この時点で$\ket{+}$）、そこから$S$をやるので、結局最初の状態に１回$S$を施すのと同じ結果になる、と理解しました。

![File_001 (3).png](https://qiita-image-store.s3.amazonaws.com/0/304689/0a6e5248-03a2-04f4-3d5a-8f008b078174.png)


### Tensor products of states

テンソル積をつかって２量子ビットの状態をベクトルで書きます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/304689/0d56715f-817d-25b2-c53e-5142b71badf1.png)
後半の行列のテンソル積についても、素直に計算をすればOKです。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/304689/93e6ac0c-0056-8f2a-4543-c2210cf6fc25.png)

## SU2 Review - Review Problems
SU2 (study unitかな)のレビュー問題集です。開くたびに順番や出てくる問題が入れ替わるようでありメモを作る人泣かせです。いくつか既出のものもあるようなのでここでは割愛し、ややこし目の問題につき、問題の表題とともにやってみたメモを残します。



### Indirect measurements
![image.png](https://qiita-image-store.s3.amazonaws.com/0/304689/f4547b30-5ab0-d763-430a-297aad50e2f4.png)
（出所：画像はもとの問題からとってきています）

アダマールゲートに挟まれたコントロールUがあります。問題の前半では$U=X$で、後半ではもっと一般的なユニタリー行列になります。

左から順番に計算していけばよいのですが、それなりに手を動かさなければいけないので要注意です。それから、第１量子ビットが0になる確率と、その時の第２量子ビットの状態ベクトルを答えよというものです。

問題を解くだけでなく、何が起きているかをちょっと考えてみます。教材には書かれていないので、私個人の見解です。違っているかもしれませんのでその際は議論を通じて直したり理解を深めていったりしたいと思います。

そもそも、第１量子ビットは$\ket{０}$でスタートして、２つのアダマールゲートを挟むので、$\ket{+}$になって$\ket{０}$にまた戻るという具合に100％になりそうなものです。
しかし（問題になっているくらいなので）そうはなりません。第2量子ビットとCNOTで結びついているため、バックアクションを受けるようなのです。その結果、第1量子ビットは一定の確率で$\ket{１}$にもなるようになります。計算過程と結果は下記。状態ベクトルを計算するときには規格化をしなければいけないのでその点はお忘れなく。

結果を見てみます。考えてみるとこれは不思議です。第2量子ビットの状態はもはや$a$や$b$を含みません。初期状態がどうであろうとも、第1量子ビットに情報が移り、第2量子ビットは$\ket{+}$になるのです。では情報は失われるのか？というと、そうではないはずです。可逆の回路であるはずなので、何らか情報が保たれるはずです。実際、第1量子ビットが$\ket{０}$になる確率は本問のとおりですが、このように第1量子ビットの状態を観測することで第2量子ビットに関する情報を得ることができます。
更に考えていくと、第1量子ビットが$\ket{１}$になる確率は$a-b$なので、$a$や$b$が全く同じだったら第1量子ビットが$\ket{１}$になる確率は0になります。つまり、第1量子ビットが100％の確率で0になるわけです。と、このように、第1量子ビットはいちじるしく第2量子ビットの状態の影響を受けるということが、このシンプルな回路でわかります。

![File_001 (4).png](https://qiita-image-store.s3.amazonaws.com/0/304689/ada1b8c1-9bf6-6a74-f3d9-72c2432af0f8.png)

後半も前半と同じくじっくり計算をしていけばOKです。
では、これが何を意味しているか？が気になり1週間ほど悩んだのですが、掲示板をみるにどうやら単なる計算練習らしく、あんまり意味がないみたいです。。

![File_001 (5).png](https://qiita-image-store.s3.amazonaws.com/0/304689/f1013e30-eb27-e4db-a1e0-ed2acac906cc.png)

続きます。