量子コンピュータの基礎(1)

## この記事について
ここでは量子コンピュータの基本的な部分を説明しようと思います。
自分は数学屋なので物理的なところは省いています。

## 量子コンピュータについて
量子コンピュータは普通のコンピュータ(以後古典コンピュータ)と決定的に違う点があります。

古典コンピュータの処理は全てビットと呼ばれる物を使って表すのに対し量子コンピュータでは量子ビットとなる物を使います。
また古典コンピュータにはNOT,OR,ANDなどの論理ゲートを使うのに対して、量子コンピュータでは量子ゲートと呼ばれる行列を使います。

一般に計算が早いと言われている理由としては、処理の回数で述べられます。
例えば10個のパターンを計算する際に古典コンピュータは1つずつパターンを計算するのに対し、量子コンピュータは10個のパターンを一度に計算することができます。
数回の差なら計算は変わりませんがこれが100万、1億と増えていくとそのすごさが分かるかもしれません。


## 量子ビット
古典コンピュータは1bitに対して0または1の値を入力することができます。
従って2bitで表せることのできる値は00, 01, 10, 11の4種類作ることができます。

では、量子ビットになるとどうなるのでしょう。ここでケットベクトルが登場します。
量子の1bitのことを1qubitと言います。
1qubitには $\left|0\right>,\left|1\right>$ と複素数 $a,b$ を用いて $a\left|0\right>+b\left|1\right>$ で記述できる値が入ります。(ただし $|a|^2+|b|^2=1$)
なので古典のビットと違い1qubitで様々な値を表現できるので自由度が高くなります。

ちなみに2qubitの場合は

``` math
\left|0\right>\otimes\left|0\right>,
\left|0\right>\otimes\left|1\right>,
\left|1\right>\otimes\left|0\right>,
\left|1\right>\otimes\left|1\right>
```
の係数を考えるので指数的に自由度が高まります。

## 状態ベクトル
量子ビットの $\left|0\right>, \left|1\right>$ などのベクトルを状態ベクトルと言います。
これらの状態は全て確率で記述されます。

量子ビットの説明の際に $a\left|0\right>+b\left|1\right>$ (ただし $|a|^2+|b|^2=1$) と述べました。
これは $\left|0\right>$ が $|a|^2$, $\left|1\right>$ が $|b|^2$ の確率で重なっている状態を表しています。
例として一つ1qubitの純粋状態を見てみます。

``` math
\frac{1}{\sqrt2}\left|0\right>+\frac{1}{\sqrt2}\left|1\right>
```
各ビットの係数の絶対値の2乗はそれぞれ1/2となっています。
つまりこれは $\left|0\right>$ が $1/2$, $\left|1\right>$ が $1/2$ で重なっている状態です。
状態ベクトルには純粋状態と混合状態があります。

#### 純粋状態
複素ベクトル $\left|\psi\right>,\left|\phi\right>$ について$\left<\psi|\psi\right>= 1, \left<\phi|\phi\right>= 1, \left<\psi|\phi\right>= 0$ とします。
このとき、$a\left|\psi\right>+b\left|\phi\right>$ (ただし $|a|^2+|b|^2=1$) と書ける状態を純粋状態と言います。

#### 混合状態
では混合状態はどういうことなのでしょう。一つ例を見せます。

例：1/2の確率で $\left|0\right>$, 1/2の確率で $\left|1\right>$ になる状態
これは上で述べた状態と同じではないのかと思うが実は違います。箱の中に1qubit入っている状況を考えてみましょう。

1. 箱の中身を知っててその状態は $\left|0\right>, \left|1\right>$ を半分ずつ持っている状態
2. 箱の中身は知らないがその状態は半分の確率で $\left|0\right>$、もう半分の確率で $\left|1\right>$ である

上の二つの状況は明らかに違うことがわかります。
これらの内、2のような状態のことを混合状態と言います。

``` math
p_0=\frac{1}{2}→\left|0\right>, p_1=\frac{1}{2}→\left|1\right>
```
$p_0, p_1$ は各状態になる確率を表しています。

## 観測
量子ビットは様々な状態が存在し、$\left|0\right>$ と $\left|1\right>$ がある確率で重なっています。
では実際はどちらが出力されるのでしょう。
この出力の操作のことを観測と言います。
例えば

``` math
\frac{1}{\sqrt2}\left|0\right>+\frac{1}{\sqrt2}\left|1\right>
```
なら $\left|0\right>$ または $\left|1\right>$ が観測される確率はそれぞれ 1/2 となります。
状態ベクトルで述べた2つの状態は観測値は同じになります。ここが混合状態の意味を惑わしている一つの理由だと思います。
ただ状況は全く違うので区別する必要があります。

## bloch球
bloch球について
一般的に純粋状態は複素数 $a,b$ を用いて $a\left|0\right>+b\left|1\right>\left(|a|^2+|b|^2=1\right)$と表すことができます。
この $a,b$ をそれぞれ実数 $a_1,a_2,b_1,b_2$ を用いて、
 $a_1+a_2i$ , $b_1+b_2i$ と置くと $(a_1+a_2i)\left|0\right>+(b_1+b_2i)\left|1\right>$ とも表せます。

このとき量子状態は4つ変数があるので4次元となるが $|a|^2+|b|^2=1$ という条件から一つ変数を減らすことができます。
このことから量子状態は3次元つまり実際に図を書くことできるとわかります。

この3次元の図を上手く記法したのがbloch球です。
bloch球は二つの直交する純粋状態の重ね合わせで表現できる量子状態を単位球面上に表す表記法です。

#### 定義
一般の純粋状態を $(\theta,\phi)$ を用いて以下のように表す。

``` math
\cos\left(\frac{\theta}{2}\right)\left|0\right>+e^{i\phi}\sin\left(\frac{\theta}{2}\right)\left|1\right>
```

<img width="30%" src="https://upload.wikimedia.org/wikipedia/commons/thumb/6/6b/Bloch_sphere.svg/512px-Bloch_sphere.svg.png">

参考:https://ja.wikipedia.org/wiki/%E3%83%96%E3%83%AD%E3%83%83%E3%83%9B%E7%90%83

$\theta$ について
式を見てわかる通り$\cos()\left|0\right>+\sin()\left|1\right>$ の形になっています。
これは単位円のx座標とy座標に似ています。
<img width="30%" src="https://upload.wikimedia.org/wikipedia/commons/thumb/8/8f/Unit_circle.svg/1024px-Unit_circle.svg.png">

参考:https://ja.wikipedia.org/wiki/%E5%8D%98%E4%BD%8D%E5%86%86

ここではこの内右上の $1/4$ しか使っていません。
でもそう考えると円では上手く描けませんね。半分に切れてしまいます。
これを解消するために $\theta→\theta/2$ としています。

このことから $\theta$ で球の高さを変えることによって $\left|0\right>,\left|1\right>$ の係数を定めることができます。

$\phi$ について
$e^{i\phi}$ を見ると $e^{i\phi}=\cos\phi+i\sin\phi$ となるので単位円上の全ての値を取ることができます。
量子状態は複素数で記述されますが、この $\phi$ がその複素数部分を担っています。

ただここで一つ、一般の値を考えるには$\cos$と$\sin$の両方に複素数を取らなければいけないのではと考えると思います。
この理由に関しては補足として下に述べておきます

## 補足
bloch球の式の導出について
$\theta$ の説明は上でしたので省きます。
まず一般には $\phi_1,\phi_2$ を用いて

``` math
e^{i\phi_1}\cos\left(\frac{\theta}{2}\right)\left|0\right>+
e^{i\phi_2}\sin\left(\frac{\theta}{2}\right)\left|1\right>\\
(\phi_1+\phi_2=2\pi)
```
と表せます。

これを変形する前にまず、位相の性質というものを考えます。
量子コンピュータを測定する際には係数の絶対値の2乗を考えます。
よって測定上では $\left|0\right>$ と $-\left|0\right>$ は同じものです。
このことから、一般に $e^{i\phi}\left|0\right>$ と $\left|0\right>$ は同じものになります。

ここで元の式を考えてみましょう。
上のことから両辺$e^{i\phi_2}$をかけても同じなので、

``` math
e^{i(\phi_1+\phi_2)}\cos\left(\frac{\theta}{2}\right)\left|0\right>+
e^{2i\phi_2}\sin\left(\frac{\theta}{2}\right)\left|1\right>=
\cos\left(\frac{\theta}{2}\right)\left|0\right>+
e^{2i\phi_2}\left(\frac{\theta}{2}\right)\left|1\right>
```
となります。
$\phi$が一つになりましたね。ここで $2\phi_2=\phi$ と置き直すと。
$\cos(\theta/2)\left|0\right>+e^{i\phi}\sin(\theta/2)\left|1\right>$ と無事なりました。

## まとめ
量子コンピュータは複数計算を一度にできる。
量子ビットの値を見るときは観測をする。
量子状態には純粋状態と混合状態がある。
純粋状態はbloch球上で表すことができる。

---
純粋状態、混合状態の部分を修正しました。 12/7