Strawberry Fieldsで光量子計算をする(その1)

# この記事は誰のためのものか

- 量子コンピューティングに興味があって
- 特に光で行う量子計算に興味があって
- 量子計算ソフトウェアに触れてみたい！

著名なオープンソース量子計算ソフトウェアでおそらく唯一光量子コンピューティングを目的としているのが、XANADU社のStrawberry Fields (https://strawberryfields.readthedocs.io/en/latest/) です。
よってこの記事は実質、
- Strawberry Fieldsに触れてみたい人
のための記事です。

その1では光量子計算を記述するために必要な要素をざっと確認します。
(※学生時代は実験物理屋だったため、理論はゆるふわな所があります。)
タイトル詐欺みたいですが、Strawberry Fieldsに触れるのは次回以降です。

# なぜ光で量子計算をやるのか
量子計算は最近大ブームです。何年か前までD-waveは本当に量子力学的効果で動いてるの？とか言われてませんでしたっけ。
現在はD-waveのようなイジングマシンにとどまらず、ゲート型量子コンピュータも順調にqubit数を増やしていますね。

現在の量子コンピュータ開発競争の主役は超伝導量子ビットです。

しかし、超電導量子ビットが極低温を前提としているのに対し、光量子ビットは常温下でも伝送が可能です。
よって量子通信や量子ネットワークといったアプリケーションに親和性が高いという大きなメリットがあります。

どの道20~30年後にどの物理系が主流になっているかなんて誰にもわからないですし、とりあえずXANADU社は作るって言ってますし、興味があるからやってみようというのが偽らざる本音です。

# 光量子計算について

まず光量子計算の概要を、https://strawberryfields.readthedocs.io/en/latest/ のIntroductionから引用しながら解説してみます。
物理の前提知識がどうしても必要ですが、なくてもなるべく雰囲気がつかめるようにはしたいです。
あと、離散量の量子計算については解説記事が多くありますので、ある程度知っている前提で書いています。

<img width="539" alt="スクリーンショット 2019-01-09 19.36.53.png" src="https://qiita-image-store.s3.amazonaws.com/0/243619/1127fed4-3706-0ce4-51ee-4b644d5dbee3.png">

粒子性がベースとなる離散量(Qubit)に対し、CVは波の性質をベースにしています。Qumodesの"modes"は物理で波の振動状態を表すモードから来ているのでしょう。

### 演算子
Qubitにおけるパウリ演算子に対し、CVでは $\hat{x}, \hat{p}$ と $\hat{a}, \hat{a}^{\dagger}$ の2組の重要な演算子が使われます。$\hat{x}, \hat{p}$ はそれぞれ物理の流儀に従って位置演算子と運動量演算子を表します。

なぜCVで位置$\hat{x}$と運動量$\hat{p}$が出てくるのか。
実は光(電磁波)を量子的な調和振動子として解析すると、以下の式のように位置$\hat{x}$と運動量$\hat{p}$が光電場の振幅のcos成分とsin成分に対応する量として出てきます。
(このような、振幅の$\sin, \cos$成分を直交位相成分とも言います。)
$$
\hat{E}(\boldsymbol{r},t) = 2 \hat{E}_{0} \ \[\hat{x} \cos{(\omega t -\boldsymbol{k\cdot r})} + \hat{p} \sin{(\omega t-\boldsymbol{k\cdot r})}\]
$$

$\hat{E}_{0}$は光電場の振幅、$\omega$は角周波数、$t$は時間、$\boldsymbol{k}$は波数ベクトル、$\boldsymbol{x}$は位置ベクトルです。
言い換えると、位置と運動量で光の状態を表わせます。調和振動子については優れた解説がいくらでもあるのでここでは説明しません。


調和振動子を知らない方は、簡単なイメージとしておもりがついたバネを思い出してください。高校物理でよくやるやつです。
・振動の中心：速度(運動量)が最大、中心からの変異(位置)が最小(0)
・振動の端点：速度(運動量)が最小(0)、中心からの変異(位置)が最大
の間を行き来する過程で位置と運動量が交互に増減することが直感的にわかると思います。これと大体同じです。

ただし量子力学における不確定性のため、位置と運動量はそれぞれ分散を持ち、確率分布で表されます。
ある光$\hat{E}(\boldsymbol{r},t)$について、位置 $\hat{x}$と運動量 $\hat{p}$の確率分布は次のように図示できます。($\theta$は上式の$\cos$, $\sin$の中身で、位相を表している)
<img width="539" alt="スクリーンショット 2019-01-10 21.15.44.png" src="https://qiita-image-store.s3.amazonaws.com/0/243619/02e33a63-4c67-37a4-63c0-4ae4304b7e5a.png">

このような確率分布は、Wigner関数 $W(x,p)$という関数を用いて計算できます。
Wigner関数は量子情報において、古典的な確率分布関数に対応する関数です。
- 規格化すると1
- 負の値をとりうる
という性質があります。

### CV量子ゲート
CV量子ゲートは、上記の確率分布の形状を変化させます。
- Rotation Gateは上図で $\theta$を変化させ、確率分布を原点を中心に回転させます。
- Displacement Gateは確率分布の($\hat{x}, \hat{p}$)平面上での位置を変えます。
- Squeezing Gateは位置と運動量の分散を変化させ、後に説明するSqueezing Stateを生成します。
- Beam Splitterは2つのqumodesの重ね合わせを作る2入力2出力デバイスです。次回記事にする予定のHOM干渉計で扱いますが、要は反射率50%のミラーです。

ここで注目したいのは、上の4つの量子ゲートとCubic Phase Gateの違いです。
Wigner関数で表される状態はGauss状態と非Gauss状態の2種類に分けられ、上記4種の量子ゲートの組み合わせで実現可能なのはGauss状態→Gauss状態の変換(Gauss操作)です。

しかしユニバーサルな量子計算を行うためには上記4種類の量子ゲート + 非ガウス状態に対する操作(非ガウス操作)が不可欠で、実際に光量子コンピュータを実現する上では大きなハードルになります。
非ガウス操作が可能なゲートは1種類だけ用意できれば良いそうです。Strawberry FieldsのIntroductionではCubic Phase Gateを採用していますが、ここでは深追いしないことにします。

### 状態
先程の図のように位置と運動量の分散が等しく、かつそれらの積が不確定性原理の許す最小値をとる状態がCoherent State $|\alpha>$です。
また、運動量(位置)の分散が大きくなる代わりに、位置(運動量)の分散を小さくすることもできます。このような状態がSqueezed State $|z>$です。
<img width="539" alt="スクリーンショット 2019-01-10 21.28.55.png" src="https://qiita-image-store.s3.amazonaws.com/0/243619/4d787713-f956-f198-f8e2-06489c484097.png">

もう一つの状態Number State $|n>$は、光子の数を表す離散的な状態です。
光子数状態を使って離散量量子計算を行うことも当然可能です。

Number Stateは無限次元の直交基底としての性質を持ち、Coherent StateやSqueezed State は Number State $|n>$の無限級数和で表すことができます。

よって連続量量子計算における状態は、Wigner関数と光子数基底の2通りで表現できます。Strawberry Fieldsによるコーディングでも、この2通りの表現を認識しておく必要があります。

### 測定

Homodyne測定は上図の$\hat{E}$を$\hat{x}$軸に射影した値を測定します。すると、間接的に位相 $\theta$を知ることができます。

Heterodyne測定は、状態$\hat{\rho}$に対し$<\alpha|\hat{\rho}|\alpha>$を得ることができ、あるコヒーレント状態への射影測定にあたる...のでしょうか(あまりわかっていない)。

Photon Countingは光子数を測定しています。簡単に言えば光の強度を測定しています。Qubit的に言うと、光子数基底への射影測定をしています。

# まとめ
Strawberry FieldsのIntroductionで扱っている、光量子計算の要素知識についてまとめました。
まだこれらが光量子計算アルゴリズムでどう活躍するか全く触れていませんが、次回以降Strawberry Fieldsのコードサンプルを見ながらゆっくり学びたいと思います。

参考にした文献
・https://strawberryfields.readthedocs.io/en/latest/
・Mark Fox, "Quantum Optics: An Introduction"
・arXiv:quant-ph/0410100 "Quantum information with continuous variables"