🦥

量子位相推定のメモ

2021/12/02に公開

はじめに

量子位相推定は,ユニタリ行列 U とその固有状態 \ket{u} が与えられたときに,その固有値 e^{2 \pi i \phi}\phi を推定するアルゴリズムです[1].つまり,次の式を満たす \phi を求めるということです.

\begin{equation*} U \ket{u} = e^{2 \pi i \phi} \ket{u} \end{equation*}

このアルゴリズムは,Shor のアルゴリズム[2]や量子数え上げ[3]などで重要な役割を果たしています.

この記事では,逆量子フーリエ変換を利用した Kitaev の量子位相推定を説明します.量子フーリエ変換については 量子フーリエ変換のメモ に書いたので,そちらをご覧ください.

量子位相推定

U の固有値は e^{2 \pi i \phi} = \cos (2 \pi \phi) + i \sin (2 \pi \phi) という形なので,0 \leq 2 \pi \phi < 2\pi,すなわち 0 \leq \phi < 1 と仮定しても一般性を失いません.このことから,\phin 桁の 2 進数の小数 \phi = 0.j_1 j_2 \cdots j_n とします.n は基本的に未知なので,適当な精度で仮定します[4]

初期状態を \ket{0}^{\otimes n}\ket{u} とします.まず,\ket{0}^{\otimes n}H^{\otimes n} を作用させます.

\frac{1}{2^{n/2}} (\ket{0} + \ket{1})^{\otimes n} \ket{u}

次に,k 番目の補助量子ビットを制御ビットとして,固有状態 \ket{u}U^{2^{k-1}} を作用させます.

\begin{align*} \frac{1}{\sqrt{2}} \left(\ket{0} \otimes \ket{u} + \ket{1} \otimes U^{2^{k-1}} \ket{u}\right) &= \frac{1}{\sqrt{2}} \left(\ket{0} \otimes \ket{u} + \ket{1} \otimes \left(e^{2\pi i \phi}\right)^{2^{k-1}} \ket{u}\right) \\ &= \frac{1}{\sqrt{2}} \left(\ket{0} + e^{2 \pi i(2^{k-1} \phi)} \ket{1}\right) \otimes \ket{u} \end{align*}

2^{k-1} \phi\phi = 0.j_1 j_2 \cdots j_n を代入すると,

\begin{align*} 2^{k-1} \phi = 2^{k-1} 0.j_1 j_2 \cdots j_n = j_1 j_2 \cdots j_{k-1} . j_{k} j_{k+1} \cdots j_n \end{align*}

となります.オイラーの公式より,2^{k-1} \phi の整数部分は無視できるため,さきほどの式は次のように変形できます.

\begin{align*} \frac{1}{\sqrt{2}} \left(\ket{0} + e^{2 \pi i(2^{k-1} \phi)} \ket{1}\right) \otimes \ket{u} &= \frac{1}{\sqrt{2}} \left(\ket{0} + e^{2 \pi i 0.j_{k}j_{k+1}\cdots j_n} \ket{1}\right) \otimes \ket{u} \end{align*}

これをすべての 1 \leq k \leq n について作用させます.

\begin{align*} \frac{1}{2^{n/2}} (\ket{0} + e^{2\pi i 0.j_1 j_2 \cdots j_n} \ket{1}) \otimes (\ket{0} + e^{2 \pi i 0.j_2 \cdots j_n}\ket{1}) \otimes \cdots \otimes (\ket{0} + e^{2 \pi i 0.j_n}\ket{1}) \otimes \ket{u} \end{align*}

この状態は量子フーリエ変換の式と同じ形です[5].よって,補助量子ビットに対して,逆量子フーリエ変換を作用させると \ket{j_1 j_2 \cdots j_n} が得られます.最後に,補助量子ビットを測定すると \phi が求まります.

固有状態が未知の場合

ここまで,固有状態 \ket{u} が既知の場合を想定していましたが,未知の場合も考えられます.実際,Shor のアルゴリズム中では固有状態は未知です.

そこで,今度は一般の状態 \ket{\psi} を入力とします.\ket{\psi} は,U の固有値 e^{2\pi i \phi _k} に対応する固有状態 \ket{u_k} を用いて展開できます.

\ket{\psi} = \sum_{k} a_k \ket{u_k}

\ket{u}\ket{\psi} に置き換えると,初期状態は次のようになります.

\ket{0}^{\otimes n} \ket{\psi} = \sum_{k} a_k \ket{0}^{\otimes n} \ket{u_k}

そのため,\ket{\psi} に量子位相推定をすると,\ket{\phi _k}\ket{u_k} の重ね合わせ状態が得られます.

\sum_{k} a_k \ket{\phi _k} \ket{u_k}

後は測定することで,いずれかの固有状態 \ket{u_k} とそれに対応した \ket{\phi _k} が得られます.

おまけ

量子位相推定の量子回路の tex ファイルを置いておきます.

qpe.tex
\documentclass[uplatex]{jsarticle}

\usepackage{braket}
\usepackage{qcircuit}

\pagestyle{empty}

\begin{document}

\Qcircuit @C=1em @R=1em {
    \lstick{\ket{0}} & \gate{H} & \ctrl{4} & \qw & \qw & \qw & \cdots & & \qw & \qw & \qw & \multigate{3}{QFT^\dag} & \meter \\
    \lstick{\ket{0}} & \gate{H} & \qw & \qw & \ctrl{3} & \qw & \cdots & & \qw & \qw & \qw & \ghost{QFT^\dag} & \meter \\
    \lstick{\vdots} \\
    \lstick{\ket{0}} & \gate{H} & \qw & \qw & \qw & \qw & \cdots & & \qw & \ctrl{1} & \qw & \ghost{QFT^\dag} & \meter \\
    \lstick{\ket{\psi}} & \qw {/} & \gate{U^{2^0}} & \qw & \gate{U^{2^1}} & \qw & \cdots & & \qw & \gate{U^{2^{n-1}}} & \qw & \qw & \qw \\
}

\end{document}
脚注
  1. 固有値がこのような形で書けるのは,ユニタリ行列の固有値は大きさが 1 の複素数だという性質があるからです. ↩︎

  2. 合成数の因数を求めるアルゴリズムです. ↩︎

  3. Grover のアルゴリズムにおける,解の個数を求めるアルゴリズムです. ↩︎

  4. Shor のアルゴリズム実装動向調査 - CRYPTREC などに計算方法が書かれていますが,そこまで本質ではないのでこの記事では触れていません. ↩︎

  5. 具体的には, 量子フーリエ変換のメモ の式 (39) と一致しています. ↩︎

Discussion