量子ゲートがユニタリーな理由

# この記事について
* 基本の「キ」ですが、量子ゲートはなぜユニタリーでなければならないのか？
* 当たり前な内容なのですが、まとめて見たいと思います。

また、他の量子コンピュータ関係の他の記事は、下記で紹介しています。

https://qiita.com/shnchr/items/41fa7fd1284d74007a7c

```math
\newcommand{\bra}[1]{\left\langle #1 \right|}
\newcommand{\ket}[1]{\left| #1 \right\rangle}
\newcommand{\bracket}[2]{\left\langle #1 \middle| #2 \right\rangle}
\newcommand{\tate}[2]{\begin{bmatrix} #1 \\ #2 \end{bmatrix}}
\newcommand{\yoko}[2]{\begin{bmatrix} #1 & #2 \end{bmatrix}}
\newcommand{\mtrx}[4]{\begin{bmatrix} #1 & #2 \\ #3 & #4 \end{bmatrix}}
```

# ユニタリー行列
[こちらの記事](https://qiita.com/shnchr/items/d0702c441cec472096f4#%E6%93%8D%E4%BD%9Cu%E3%81%AEu%E3%81%A8%E3%81%AF)でも触れましたが、量子ゲートはユニタリーです。
ユニタリー行列とは、下記を満たす複素正方行列Uのことで、実数行列での直交行列に対応します。

```math
U^{\dagger}U = UU^{\dagger} = E
```

$U^{\dagger}$は、実数行列における転置行列に対応するのですが、複素行列を対象とする場合には、複素数に対して複素共役とった複素転置（エルミート共役）の行列を指します。

例えば、$pauli$-$XZY$は下記の通りユニタリーです。

```math
\displaylines{
XX^{\dagger} = 
\begin{bmatrix}
 0 & 1 \\
 1 & 0 
\end{bmatrix}
\begin{bmatrix}
 0 & 1 \\
 1 & 0 
\end{bmatrix}
=
\begin{bmatrix}
 1 & 0 \\
 0 & 1 
\end{bmatrix}
=E

\\

ZZ^{\dagger} = 
\begin{bmatrix}
 1 & 0 \\
 0 & -1 
\end{bmatrix}
\begin{bmatrix}
 1 & 0 \\
 0 & -1 
\end{bmatrix}
=
\begin{bmatrix}
 1 & 0 \\
 0 & 1 
\end{bmatrix}
=E

\\

YY^{\dagger} = 
\begin{bmatrix}
 0 & -i \\
 i & 0 
\end{bmatrix}
\begin{bmatrix}
 0 & -i \\
 i & 0 
\end{bmatrix}
=
\begin{bmatrix}
 1 & 0 \\
 0 & 1 
\end{bmatrix}
=E
}
```

# ゲート演算は時間発展
量子ゲートでの演算は、状態ベクトル（$\ket{\psi}$）に対して順次量子ゲートを適用する行為は、状態ベクトルに対する時間発展を表現しており、ゲートの左から右へと順次時間が進行します。

```math
\ket{\psi}  = \alpha\ket{0} + \beta\ket{1}\ \ \ \ \alpha ,\beta \in \mathbb{C_{複素数}} 
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183826/08bc53f2-a4f9-2d86-7d9e-8c6e8e91e0ca.png)

確率振幅（$\alpha$,$\beta$）は、どのタイミングにおいても下記の規格化条件を満たすのが、演算のルールですので、どの時刻においても下記関係式を満たす必要があります。

```math
|\alpha|^2 + |\beta|^2 = 1
```

# 規格化条件の確認方法
ある状態ベクトル（$\ket{\psi}$）が規格化条件を満たしているか？は簡単に計算ができます。
具体的には、

```math
\ket{\psi} = \alpha\ket{0} + \beta\ket{1} \ \ \ \ \leftrightarrow \ \ \ \ \ \ket{\psi} = \tate{\alpha}{\beta}
```

ですので、下記を計算し１であれば、確率振幅（$\alpha$,$\beta$）は規格化条件を満たします。
なお、$\alpha,\beta$は複素数なので、転置で複素共役をとります。

```math
\bracket{\psi}{\psi} = \yoko{\alpha^{*}}{\beta^{*}}\tate{\alpha}{\beta} = 1
```

# ゲート適用と確率振幅
時刻$t$における状態ベクトル（$\ket{\psi_{t}}$）に対し、任意のゲート（$U$）を適用し、状態が

```math
\ket{\psi_{t}} \rightarrow \ket{\psi_{t+1}}
```

と変化しました。
状態変化後の$\ket{\psi_{t+1}}$において、規格化条件を満たしているかを確認してみたいと思います

```math
\ket{\psi_{t+1}} = U\ket{\psi_{t}} = U(\alpha\ket{0} + \beta\ket{1})
\ \ \ \ 
\leftrightarrow 
\ \ \ \
\ket{\psi_{t+1}} = U\ket{\psi_t} = U\tate{\alpha}{\beta} 
```

ですので、先程と同様に$\ket{\psi_{t+1}}$の、$bra$-$ket$を計算します。
$\ket{\psi_{t+1}}$は上記の通り$\ket{\psi_{t}}$にゲート$U$が適用された状態ですので

```math
\bracket{\psi_{t+1}}{\psi_{t+1}} = 
(\yoko{\alpha^{*}}{\beta^{*}}U^{\dagger})(U\tate{\alpha}{\beta}) 
```

となります。
$U$は実数空間ではなく、複素空間を想定していますので、$ket \rightarrow bra$の際に、複素転置（エルミート共役）をとるので、$U \rightarrow U^{\dagger}$となります。
規格化条件は、

```math
\bracket{\psi_{t+1}}{\psi_{t+1}} = 1
```

でしたので、

```math
(\yoko{\alpha^{*}}{\beta^{*}}U^{\dagger})(U\tate{\alpha}{\beta})  = 1 \tag{*1}
```

であるかを検討します。
ゲートにより状態が変化する前は、$\alpha,\beta$は規格化条件を満たしていたはずですので、

```math
\bracket{\psi}{\psi} = \yoko{\alpha^{*}}{\beta^{*}}\tate{\alpha}{\beta} = 1
```

が成り立つはずです。
これを前提とすると$(*1)$が成立するための条件とは、何でしょうか。
そうです。

```math
U^{\dagger}U = E
```

を満たす必要があります。そして上記を満たす複素正方行列$U$こそがユニタリー行列となります。

# まとめ
量子ゲート回路は、時間発展による $\ket{\psi}$の状態変化を表現しています。
そしてどの時刻断面においても規格化条件を満たそうとすると、$\ket{\psi}$に適用される量子ゲートはどうしても、ユニタリーでなくてはならない。
これが量子ゲートがユニタリーな理由となります。

コメント等あれば頂ければ幸いです。