らんだむな記憶

blogというものを体験してみようか!的なー

Qiskit (38) ― HHL アルゴリズム

$n$ 次正方行列 $A$ と縦ベクトル $b$ が与えられた時に、$Ax = b$ を解きたい。書籍の通りに考えることで、$A$ はエルミート行列と考えて良い。両辺を $|b|$ で割ると $A \frac{x}{|b|} = \frac{b}{|b|}$ となるが、$\frac{x}{|b|}$ と $\frac{b}{|b|}$ をそれぞれ量子状態 $\ket{x}$, $\ket{b}$ と考えて $A \ket{x} = \ket{b}$ とみる。Solving Linear Systems of Equations using HHL の説明を借りると、$b$ および $x$ の $i$ 番目の成分が $\ket{b}$ と $\ket{x}$ の $i$ 番目の基底状態 $\ket{i}$ の振幅に対応するという考え方である。つまり、例えば $n=9$ の時、

$$
\begin{align*}
\ket{b} = \frac{b_0}{|b|} \ket{000} + \frac{b_1}{|b|} \ket{001} + \cdots + \frac{b_8}{|b|} \ket{111}
\end{align*}
$$

と考える。

エルミート行列のスペクトル分解を考えることで、$A = \sum_{i=0}^{n-1} \lambda_{i} \ket{a_i} \bra{a_i}$ を得る。ここで、$\lambda_i \in \R$ は固有値で、$\ket{a_j}$ は対応する正規化された固有ベクトルであり、$\braket{a_i | a_j} = \delta_{ij}$ を満たす。
$\{ \ket{a_i} \}_{i=0}^{n-1}$ は $\C^n$ の正規直交基底になっているので、

$$
\begin{align*}
\ket{b} = \sum_{i=0}^{n-1} \ket{a_i} \braket{a_i | b} = \sum_{i=0}^{n-1} \beta_i \ket{a_i}
\end{align*}
$$

と展開できる。ここで $\beta_i = \braket{a_i | b} \in \C$ である。
また、Solving Linear Systems of Equations using HHLにもあるように、スペクトル分解に $f(\lambda) = \lambda^{-1}$ を適用して

$$
\begin{align*}
A^{-1} = f(A) = \sum_{i=0}^{n-1} \frac{1}{\lambda_{i}} \ket{a_i} \bra{a_i}
\end{align*}
$$

を得る。よって、

$$
\begin{align*}
A^{-1} \ket{b} &= \left(\sum_{i=0}^{n-1} \frac{1}{\lambda_{i}} \ket{a_i} \bra{a_i} \right) \left(\sum_{j=0}^{n-1} \beta_j \ket{a_j} \right) \\
&= \sum_{i=0}^{n-1} \frac{\beta_i}{\lambda_{i}} \ket{a_i}
\end{align*}
$$

となることに注意しておこう。