🦔
量子フーリエ変換と量子位相推定の証明
ネット上の証明に不満があったので,ここに量子フーリエ変換と量子位相推定の証明をかいておく.
量子計算機のアルゴリズムの計算は大変で.特に指数関数を全部書いてると数字が小さくなり,かっこが入れ子になり本質が見えなくなる.これから紹介する指数係数記法は二進数表記をさらに推し進めたもので,指数関数を楽に書き,操作していることの本質がわかりやすくなる手法.(だと個人的に思っている)
そこでこの指数係数表記を紹介したのちにそれの使用例として証明を行う.
指数係数表記
最初に定義から始める.
- 二進数表記は,例えば
ということ.本稿では二進数表記はここでしか出てこないので注意.[0.11] = 2^{-1}+2^{-2}
指数係数の性質は以下のようである.
-
性質1 : 定数
指数係数C の\{x_j\} と,定数\ket{x}=C[x_j]\ket{x'} 指数係数C の\{y_j\} でテンソル積を取ると,定数\ket{y}=C[y_j]\ket{y'} 指数係数C の量子状態\{x_j+y_j\} となる.つまり\{x\}\otimes\ket{y}
C[x_j]\ket{x'}\otimes C[y_j]\ket{y'}=C[x_j+y_j]\ket{x'}\otimes\ket{y'}. -
性質2 : 定数
指数係数C の\{x_j\} に\ket{x}=C[0.x_1x_2\cdots x_n]\ket{x'} をかけると(\exp(iCz/2^k) ),定数z=0\ or\ 1 指数係数C の量子状態になる.つまり[0.x_1x_2\cdots x_k+z\cdots x_n]
\exp(iCz/2^k)\cdot C[0.x_1x_2\cdots x_n]\ket{x'} = C[0.x_1\cdots x_k+z\cdots x_n]\ket{x'}.
繰り上がる場合もあり注意.
使用例
量子フーリエ変換アルゴリズム
最も代表的なアルゴリズムの一つであるこれの証明も,指数係数表記の性質を用いて楽になる.
では証明する.注意として,第一量子ビットの計算を完了したら,第二量子ビット以降では同じことをするだけなのでそれ以後は省略する.
- まず,
とする.(\phi_1=\ket{x_1x_2\cdots} )x_1,x_2,\cdots = 0\ or\ 1 -
に\ket{x_1} を作用させる.その結果,状態は以下のようになる.ここでH は正規化定数.またC を利用した.また指数係数表記を利用した.e^{\pi i} = -1
\begin{aligned}\phi_2=&C(\ket{0}+\exp(2\pi i x_1/2)\ket{1})\otimes\ket{x_2\cdots}\\=&C(\ket{0}+2\pi[0.x_1]\ket{1})\otimes\ket{x_2\cdots}.\end{aligned} -
に 2ビット目を制御ビットとして\phi_2 を実行する.その結果,状態は以下のようになる.ここで指数係数記法の性質2を利用した.R_{2}
\phi_3 = C\{\ket{0}+\exp(2\pi x_2/2^2)\cdot 2\pi[0.x_1]\ket{1}\}\otimes\ket{x_2\cdots}\\=C\{\ket{0}+2\pi[0.x_1x_2]\ket{1}\}\otimes\ket{x_2\cdots}. -
に nビット目まで\phi_3 ビット目を制御ビットとしてl を実行する.その結果,R_l 桁目に加わることになるので状態は以下のようになる.l
\begin{aligned}\phi_4 = C\{\ket{0}+2\pi[0.x_1x_2\cdots x_n]\ket{1}\}\otimes\ket{x_2\cdots}.\end{aligned} - つぎにn-1ビットの(SWAPしない)QFTを
に実行する・・(省略)すると,以下のような感じになる.\ket{x_2}
\begin{aligned}\phi_5=&C(\ket{0}+2\pi[0.x_1\cdots x_{n-1}x_n]\ket{1})\\&\cdots\\&\otimes(\ket{0}+2\pi[0.x_{n-1}x_n]\ket{1})\\&\otimes(\ket{0}+2\pi[0.x_n]\ket{1}).\end{aligned} - 最後にSWAPすると求めたいものになる.(自明)
このように,数式がすっきりして,また性質2でどこが増えていくのかわかりやすくなったと思う.
量子位相推定アルゴリズム
組み合わせを考える必要が出てくるが,これも指数係数記法の性質で考察が楽になる.
- まず
とする.\phi_1 = \ket{++++\cdots}\otimes \ket{\phi} - 一番端の
と\ket{+} で\ket{\phi} を実行する.その結果(性質2を用いて)CU^0
\phi_2=\ket{+++\cdots}\otimes\{\ket{0}+2\pi\theta[0.]\ket{1}\}\otimes\ket{\phi} - さらに
からCU^{2} まですると,CU^{2^n-1}
\begin{aligned}\phi_3 =& \{\ket{0}+2\pi\theta[\overbrace{100\cdots}^{n桁}.]\ket{1}\}\\&\otimes\cdots\\&\otimes\{\ket{0}+2\pi\theta[10.]\ket{1}\}\\&\otimes\{\ket{0}+2\pi\theta[0.])\ket{1}\}\\&\otimes\ket{\phi}.\end{aligned}
という感じになる.これは掛け算の組み合わせ的にみると,後ろから 番目のj について,\ket{0}+2\pi\theta[\overbrace{10\cdots}^{j桁}.]\ket{1} を選ぶということはつまりテンソル積の\ket{0} 桁目がj になり,なおかつ指数係数の方も(性質1から)\ket{0} 桁目が 0 になるということである.ということなので,このように組み合わせをするとすべての桁の01のパターンを網羅するため,以下のように書き換えることができる.j
\phi_3=\sum_{K=0}^{2^n-1}2\pi\theta[K]\ket{K\phi}. - これに逆フーリエ変換すると,いい感じに打ち消してくれる.ここで量子フーリエ変換について再考する.あるオブザーバブル
の固有状態A に量子フーリエ変換を実行すると以下のようになる.\ket{x}
\begin{aligned}QFT(\ket{x})&=\sum_{j=0}^{2^n-1} e^{jx}\ket{x}\\&=\sum_{j=0}^{2^n-1} \exp(2\pi ijx/2^n)\ket{x}\\&=\sum_{K=0}^{2^n-1}(2\pi x/2^n)[K]\ket{x}.\end{aligned}
ゆえに固有状態 をフーリエ変換すると\ket{2^n\theta}
\begin{aligned}QFT(\ket{2^n\theta})=\sum_{K=0}^{2^n-1}(2\pi \theta)[K]\ket{x} .\end{aligned}
よって に逆フーリエ変換を作用させると\phi_3
\begin{aligned}(QFT^{-1}\otimes I)\phi_3 &= (QFT^{-1}\otimes I)(QFT(\ket{2^n\theta})\otimes \phi)\\&= \ket{2^n\theta\phi}.\end{aligned}
ゆえに
\begin{aligned}\phi_4 = \ket{2^n\theta\phi}.\end{aligned} - この
の\phi_4 は\ket{2^n\theta} の固有状態なので,A を基底A で観測すれば\ket{2^n\theta} が確率1で得られる.2^n\theta
指数係数についての所感
勝手に思いついただけなので先行者とかたぶんいるのでは?と思うし,たいして変わってない気もするけど,「性質」として使ったのはあんまりないような気もする.
Discussion