量子コンピュータの基本 - exp(iA) がユニタリー行列になる理由

## :cross: この記事の目的

量子コンピューティングでは、ハミルトニアン・エンコーディングやHHLアルゴリズムなどで逆行列を求める理論において、エルミート行列Aを用いて、$e^{iA}$がユニタリー行列となることを利用します。
なぜ$e^{iA}$がユニタリー行列になるのか、その理由を確認します。

ハミルトニアン・エンコーディングについては、こちらをご参照下さい。

:paperclip: 量子コンピュータの基本 - 符号化の種類と量子状態の表し方
https://qiita.com/ttabata/items/f3998d9b6a46376cc8f1


## :cross: まずは数学の公式の確認

行列や指数関数についての公式を確認します。

**公式1**　指数行列
n次の正方行列Aに対して、指数行列を以下のように定義する。

```math
e^A = E + A + \frac{1}{2!}A^2+\frac{1}{3!}A^3+...\\
=\sum_{h=0}^{\infty}\frac{1}{h!}A^h\quad(公式1)
```

**公式2**　行列の対角化
エルミート行列Aに対して、ユニタリー行列Vを用いて以下のように対角化できる。
($\Lambda$はラムダと読みます)
(これについては後半で証明します)

```math
A = V\Lambda V^\dagger\quad(公式2)
```

**公式3**　ユニタリー行列の性質
ユニタリー行列Vは、以下が成立する。

```math
V^{\dagger}V = VV^\dagger=I\quad(公式3)
```

**公式4**　エルミート共役
エルミート共役(複素共役を取り、転置した行列)に関する公式。

```math
(AB)^\dagger = B^\dagger A^\dagger\quad(公式4)
```

**公式5**　エルミート行列の性質
エルミート行列は、以下が成立する。

```math
A^\dagger = A\quad(公式5)
```

**公式6**　指数行列
どんな正方行列Aに対しても、以下が成立する。

```math
e^{-A} = (e^A)^{-1}\quad(公式6)
```

## :cross: ユニタリー行列となることの確認

(公式1)を用いると$e^{iA}$は、

```math
\begin{align}
e^{iA}&=\sum_{h=0}^{\infty}\frac{1}{h!}(iA)^h\\
&=\sum_{h=0}^{\infty}\frac{i^h}{h!}(A)^h\quad(式1)
\end{align}
```

と書けます。
ここで、(公式2)を用いて、(式1)のAへ代入します。

```math
\begin{align}
(式1)&=\sum_{h=0}^{\infty}\frac{i^h}{h!}(V\Lambda V^{\dagger})^h\\
&=\sum_{h=0}^{\infty}\frac{i^h}{h!}(V\Lambda V^{\dagger})(V\Lambda V^{\dagger})(V\Lambda V^{\dagger})...\quad(式2)
\end{align}
```

(式2)の$(V\Lambda V^{\dagger})(V\Lambda V^{\dagger})(V\Lambda V^{\dagger})...$について、Vはユニタリー行列のため、(公式3)より以下のようになります。

```math
(V\Lambda V^{\dagger})(V\Lambda V^{\dagger})(V\Lambda V^{\dagger})...\\
=V\Lambda(V^{\dagger} V)\Lambda(V^{\dagger} V)\Lambda(V^{\dagger} V)...\\
=V\Lambda^hV^\dagger
```

よって、(式2)は

```math
\begin{align}
(式2)&=\sum_{h=0}^{\infty}\frac{i^h}{h!}(V\Lambda^h V^{\dagger})\\
&=V\bigg(\sum_{h=0}^{\infty}\frac{i^h}{h!}\Lambda^h\bigg) V^{\dagger}\quad(式3)
\end{align}
```

ここで、(公式1)より以下が導けるため、

```math
\sum_{h=0}^{\infty}\frac{i^h}{h!}\Lambda^h = e^{i\Lambda}
```

これを(式3)へ用いて、$e^{iA}$は以下となります。

```math
e^{iA}=Ve^{i\Lambda}V^\dagger\quad(式4)
```

次に、(式4)の両辺についてエルミート共役を取ります。

```math
(e^{iA})^\dagger = (Ve^{i\Lambda}V^\dagger)^\dagger\quad(式5)
```

(公式4)より、右辺を変形すると、

```math
\begin{align}
(右辺)&=(V^\dagger)^\dagger (e^{i\Lambda})^\dagger V^\dagger\\
&=V (e^{i\Lambda})^\dagger V^\dagger
\end{align}
```

これを用いて、(式5)は以下のように書き直せます。

```math
(e^{iA})^\dagger = V(e^{i\Lambda})^\dagger V^\dagger \quad(式6)
```

ここで、(式6)の右辺の一つの項(以下)に注目します。

```math
(e^{i\Lambda})^\dagger\quad(式7)
```

これを求めるために、まず以下の変形を行います。

(公式2)について、両辺のエルミート共役を取ると、

```math
\begin{align}
(A)^\dagger &= (V\Lambda V^\dagger)^\dagger\\
&=(V^\dagger)^\dagger \Lambda^\dagger V^\dagger\\
&=V\Lambda^\dagger V^\dagger\quad(式8)
\end{align}
```

上記の左辺はエルミート行列なので、(公式5)より以下が成り立ちます。

```math
A^\dagger = A
```

よって(式8)は、

```math
A = V\Lambda^\dagger V^\dagger
```

左から$V^\dagger$を、右から$V$をかけると、

```math
\begin{align}
V^\dagger A V &= V^\dagger (V\Lambda^\dagger V^\dagger) V\\
&=\Lambda^\dagger\quad(式9)
\end{align}
```

(式7)について、(公式1)の定義を適用すると、

```math
(e^{i\Lambda})^\dagger = \bigg(\sum_{h=0}^{\infty}\frac{i^h}{h!}\Lambda^h\bigg)^\dagger
```

上記について右辺の意味を考えると、複素共役を取った上で行列を転置することから以下のように書き直せます。

```math
(右辺)=\sum_{h=0}^{\infty}\frac{(-i)^h}{h!}(\Lambda^\dagger)^h
```

$\Lambda^\dagger$に(式9)を代入すると

```math
\begin{align}
(右辺)&=\sum_{h=0}^{\infty}\frac{(-i)^h}{h!}(V^\dagger AV)^h\\
&=V^\dagger\bigg(\sum_{h=0}^{\infty}\frac{(-i)^h}{h!}A^h\bigg)V\\
&=V^\dagger(e^{-iA})V
\end{align}
```

つまり、(式7)は以下のように求められます。

```math
(e^{i\Lambda})^\dagger = V^\dagger(e^{-iA})V
```

これを用いて(式6)は、

```math
\begin{align}
(e^{iA})^\dagger &= V(e^{i\Lambda})^\dagger V^\dagger\\
&=V\{V^\dagger (e^{-iA})V\}V^\dagger\\
&=(VV^\dagger)(e^{-iA})(VV^\dagger)\\
&=e^{-iA}
\end{align}
```

ここで、(公式6)を上式の右辺へ適用すると、

```math
(e^{iA})^\dagger = (e^{iA})^{-1}\quad(式10)
```

ここで、$U=e^{iA}$とおくと(式10)は以下のように書き換えられます。

```math
U^\dagger = U^{-1}\quad(式11)
```

このことから、Uはユニタリー行列であることがわかります。

言い換えると、ユニタリー行列は(公式3)を満たすことから$UU^\dagger = I$であり、
逆行列$U^{-1}$は$UU^{-1}=I$であることから、$U^\dagger=U^{-1}$となり、(式11)と同義となります。


## :cross: 公式2　行列の対角化の証明

(公式2)で以下のように書けることを証明してみましょう。

**エルミート行列Aに対して、ユニタリー行列Vを用いて以下のように対角化できる**

```math
A = V\Lambda V^\dagger
```

行列Aについて、対角化と言う処理を行います。
対角化する目的は、Aのn乗を計算する際に、計算を容易にするためです。
ここで行列Aはエルミート行列とします。

以下において、行列Aとその固有ベクトル(列ベクトル)を$\mathbf{v}$、固有値を$\lambda$とします。
ここで、重解が無い場合つまり縮退していない場合を前提とすると、

```math
A\mathbf{v}_k = \lambda_k\mathbf{v}_k\quad(k=1,2,3,...)
```

列ベクトルをまとめて、以下のように書き換えます。

```math
\begin{align}
A(\mathbf{v}_1\:\mathbf{v}_2\:\mathbf{v}_3\:...) &= (\lambda_1\mathbf{v}_1\:\lambda_2\mathbf{v}_2\:\lambda_3\mathbf{v}_3\:...)\\
&=(\mathbf{v}_1\:\mathbf{v}_2\:\mathbf{v}_3\:...)\begin{pmatrix} \lambda_1 & 0 & 0 & ... \\ 0 & \lambda_2 & 0 & ... \\ 0 & 0 & \lambda_3 & ... \\ : & : & : & : \end{pmatrix}
\end{align}
```

ここで、列ベクトルのまとまりを行列Vとおくと、以下のように書くことができます。
($\Lambda$はラムダと読みます)

```math
AV = V\Lambda\quad(式20)\\
ただし、V=(\mathbf{v}_1\:\mathbf{v}_2\:\mathbf{v}_3\:...)\\
\Lambda = \begin{pmatrix} \lambda_1 & 0 & 0 & ... \\ 0 & \lambda_2 & 0 & ... \\ 0 & 0 & \lambda_3 & ... \\ : & : & : & : \end{pmatrix}
```

(式20)について、両辺のエルミート共役を取ります。

```math
(AV)^\dagger = (V\Lambda)^\dagger
```

左辺、右辺をそれぞれ以下のように計算します。

```math
(左辺) = (AV)^\dagger = V^\dagger A^\dagger\quad(式21)\\
(右辺) = (V\Lambda)^\dagger = \Lambda^\dagger V^\dagger\quad(式22)
```

Aはエルミート行列なので、以下が成立します。

```math
A^\dagger = A
```

これを(式21)に代入し、(式22)と等式で結ぶと、

```math
V^\dagger A = \Lambda^\dagger V^\dagger\quad(式23)
```

さて、(式20)について、左から$V^\dagger$を掛けると、

```math
V^\dagger AV = V^\dagger V\Lambda\quad(式24)
```

また、(式23)について、右から$V$をかけると、

```math
V^\dagger AV = \Lambda^\dagger V^\dagger V\quad(式25)
```

(式24)及び(式25)から以下が導けます。

```math
V^\dagger V\Lambda = \Lambda^\dagger V^\dagger V\quad(式26)
```

$\Lambda^\dagger$について内容を確認しておきます。
$\Lambda$は(式20)の後半に記載の通りで、これについて複素共役と転置を取ると$\Lambda^\dagger$になるため、

```math
\Lambda^\dagger = \begin{pmatrix} \lambda_1^* & 0 & 0 & ... \\ 0 & \lambda_2^* & 0 & ... \\ 0 & 0 & \lambda_3^* & ... \\ \vdots & \vdots & \vdots & \ddots \end{pmatrix}\quad(式27)
```

となります。ここで、*は複素共役を意味します。

(式24)についてi行j列の成分を求めると、

```math
\begin{align}
[V^\dagger V\Lambda]_{ij} \\
&= \begin{bmatrix} 
 \begin{pmatrix} v_{11}^* & v_{12}^* & v_{13}^* & \ldots \\
 v_{21}^* & v_{22}^* & v_{23}^* & \ldots \\
 v_{31}^* & v_{32}^* & v_{33}^* & \ldots \\
 \vdots & \vdots & \vdots & \ddots \end{pmatrix}
 \begin{pmatrix} v_{11} & v_{21} & v_{31} & \ldots \\
 v_{12} & v_{22} & v_{32} & \ldots \\
 v_{13} & v_{23} & v_{33} & \ldots \\
 \vdots & \vdots & \vdots & \ddots \end{pmatrix}
 \begin{pmatrix} \lambda_1 & 0 & 0 & \ldots \\
 0 & \lambda_2 & 0 & \ldots \\
 0 & 0 & \lambda_3 & \ldots \\
 \vdots & \vdots & \vdots & \ddots \end{pmatrix}
 \end{bmatrix}_{ij}\\
&= \begin{bmatrix} 
 \begin{pmatrix}
  \lambda_1(v_{11}^*v_{11}+v_{12}^*v_{12}+...) & 0 & \ldots \\
  0 & \lambda_2(v_{21}^*v_{21}+v_{22}^*v_{22}+...) & \ldots \\
  \vdots & \vdots &  \ddots
 \end{pmatrix} \end{bmatrix}_{ij}\\
&= \sum_{k}^{}\lambda_k(v_{ik}^*v_{ik})\quad(式28)
\end{align}
```

また、同様に(式25)についてi行j列の成分を求めると、

```math
\begin{align}
[\Lambda^\dagger V^\dagger V]_{ij} \\
&= \begin{bmatrix} 
 \begin{pmatrix} \lambda_1^* & 0 & 0 & \ldots \\
 0 & \lambda_2^* & 0 & \ldots \\
 0 & 0 & \lambda_3^* & \ldots \\
 \vdots & \vdots & \vdots & \ddots \end{pmatrix}
 \begin{pmatrix} v_{11}^* & v_{12}^* & v_{13}^* & \ldots \\
 v_{21}^* & v_{22}^* & v_{23}^* & \ldots \\
 v_{31}^* & v_{32}^* & v_{33}^* & \ldots \\
 \vdots & \vdots & \vdots & \ddots \end{pmatrix}
 \begin{pmatrix} v_{11} & v_{21} & v_{31} & \ldots \\
 v_{12} & v_{22} & v_{32} & \ldots \\
 v_{13} & v_{23} & v_{33} & \ldots \\
 \vdots & \vdots & \vdots & \ddots \end{pmatrix}
 \end{bmatrix}_{ij}\\
&= \begin{bmatrix} 
 \begin{pmatrix}
  \lambda_1^*(v_{11}^*v_{11}+v_{12}^*v_{12}+...) & 0 & \ldots \\
  0 & \lambda_2^*(v_{21}^*v_{21}+v_{22}^*v_{22}+...) & \ldots \\
  \vdots & \vdots &  \ddots
 \end{pmatrix} \end{bmatrix}_{ij}\\
&= \sum_{l}^{}\lambda_l^* (v_{il}^*v_{il})\quad(式29)
\end{align}
```

(式26)に倣い、(式28)と(式29)を等式で結ぶと以下となります。

```math
\sum_{k}^{}\lambda_k(v_{ik}^*v_{ik}) = \sum_{l}^{}\lambda_l^* (v_{il}^*v_{il})\quad(式30)
```

ここで、固有値が縮退していないことが前提だったため、以下が成立します。

```math
\lambda_k \neq \lambda_l
```

よって、$k \neq l$の場合に(式30)を満たすのは以下のケースと言えます。

```math
v_{ij} = 0\quadただし、i\neq j
```

一方$k=l$の場合、

```math
\sum_{k}^{}\lambda_k(v_{ik}^*v_{ik}) = \sum_{k}^{}\lambda_k^* (v_{ik}^*v_{ik})\quad(式31)
```

上記を満たすには、$ \lambda_i=\lambda_i^* $となり、かつ、$v_{ii}$は任意の値を取ることができます。
すなわち、以下が導けます。

```math
\Lambda^* = \Lambda\\
Vは対角行列で、大きさは任意に取ることができる
```

$v_{ii}=1$とするとVは

```math
V=V^\dagger = \begin{pmatrix} 1 & 0 & 0 & \ldots \\ 0 & 1 & 0 & \ldots \\
 0 & 0 & 1 & \ldots \\ \vdots & \vdots & \vdots & \ddots \end{pmatrix} = I
```

上式から以下が導けます。

```math
VV^\dagger = I
```

さらに、(式24)の右辺を変形すると

```math
\begin{align}
V^\dagger AV &= V^\dagger V\Lambda\\
&= (V^\dagger V)\Lambda\\
&= \Lambda
\end{align}
```

上式に左から$V$、右から$V^\dagger$を掛けると以下が導けます。

```math
A = V\Lambda V^\dagger
```

以上が証明となります。


## :cross: 関連情報

:paperclip: 量子コンピュータの基本 - 符号化の種類と量子状態の表し方
https://qiita.com/ttabata/items/f3998d9b6a46376cc8f1


## :cross: ご意見など

ご意見、間違い訂正などございましたらお寄せ下さい。