量子情報入門 第1章 §1.5
この章は本書の山場である。Shorのアルゴリズム(第1.6 節)の量子的核心はすべてこの章に置かれており、逆にいえばこの章を理解すれば「量子計算はどこで古典を追い抜くのか」という問いに具体的な形で答えられるようになる。構成は、(i) 古典の離散フーリエ変換の確認、(ii) 量子フーリエ変換(QFT)の定義と基本性質、(iii) 積表示の完全な導出と回路構成、(iv) QFTが周期構造をどう「見る」か、(v) 位相推定アルゴリズムの厳密な解析、の順に一歩ずつ積み上げる。
離散フーリエ変換とは
まず「離散フーリエ変換」がフーリエ変換・フーリエ級数とどう違うかを整理する。
フーリエ変換 (連続・非周期):R \mathbb R R 上の関数 f f f に対して f ^ ( k ) = ∫ − ∞ ∞ f ( x ) e − 2 π i k x d x \hat f(k)=\int_{-\infty}^{\infty} f(x)e^{-2\pi ikx}dx f ^ ( k ) = ∫ − ∞ ∞ f ( x ) e − 2 π ik x d x 。
フーリエ級数 (連続・周期):周期 T T T の関数を c n = 1 T ∫ 0 T f ( x ) e − 2 π i n x / T d x c_n = \frac{1}{T}\int_0^T f(x)e^{-2\pi inx/T}dx c n = T 1 ∫ 0 T f ( x ) e − 2 π in x / T d x で分解。
離散フーリエ変換 (DFT) (離散・有限):Z / N Z \mathbb Z/N\mathbb Z Z / N Z 上の関数、すなわち N N N 個の値 f ( 0 ) , … , f ( N − 1 ) f(0),\ldots,f(N-1) f ( 0 ) , … , f ( N − 1 ) に対して
f ~ ( k ) = 1 N ∑ j = 0 N − 1 f ( j ) e − 2 π i j k / N , k = 0 , 1 , … , N − 1. \tilde f(k) = \frac{1}{\sqrt N}\sum_{j=0}^{N-1} f(j)\, e^{-2\pi i jk/N},\qquad k=0,1,\ldots,N-1. f ~ ( k ) = N 1 j = 0 ∑ N − 1 f ( j ) e − 2 π ij k / N , k = 0 , 1 , … , N − 1.
DFTは実質的に「フーリエ級数を有限個のサンプル値で計算するもの」で、有限アーベル群 Z / N Z \mathbb Z/N\mathbb Z Z / N Z 上のフーリエ変換とみなせる。連続の積分の代わりに有限和になっているだけである。
DFTの構造を支えるのは1の原始 N N N 乗根 ω ≡ e 2 π i / N \omega\equiv e^{2\pi i/N} ω ≡ e 2 π i / N である。ω N = 1 \omega^N=1 ω N = 1 であり、複素平面の単位円を N N N 等分した点 1 , ω , ω 2 , … , ω N − 1 1,\omega,\omega^2,\ldots,\omega^{N-1} 1 , ω , ω 2 , … , ω N − 1 が「離散的な回転」の全てを与える。基本となるのは直交関係
1 N ∑ j = 0 N − 1 ω j ( k − k ′ ) = δ k k ′ ( m o d N ) (1.2) \frac1N\sum_{j=0}^{N-1}\omega^{j(k-k')} = \delta_{kk'}\pmod N\tag{1.2} N 1 j = 0 ∑ N − 1 ω j ( k − k ′ ) = δ k k ′ ( mod N ) ( 1.2 )
である。k = k ′ k=k' k = k ′ なら各項が 1 1 1 で和は N N N 。k ≠ k ′ k\neq k' k = k ′ なら公比 q ≡ ω k − k ′ ≠ 1 q\equiv\omega^{k-k'}\neq1 q ≡ ω k − k ′ = 1 の等比数列の和で、∑ j q j = ( q N − 1 ) / ( q − 1 ) = 0 \sum_j q^j=(q^N-1)/(q-1)=0 ∑ j q j = ( q N − 1 ) / ( q − 1 ) = 0 (q N = ω N ( k − k ′ ) = 1 q^N=\omega^{N(k-k')}=1 q N = ω N ( k − k ′ ) = 1 による)。「単位円上に等間隔に並んだベクトルを全部足すとゼロ」という幾何学的事実である。この一つの恒等式が、以下のQFTのユニタリ性・周期検出・位相推定の成功確率のすべてを支配する。
素朴に計算すれば O ( N 2 ) O(N^2) O ( N 2 ) だが、古典的な高速フーリエ変換 (FFT) は O ( N log N ) O(N\log N) O ( N log N ) でこれを実現する。デジタル信号処理・数値計算・多項式乗算などで極めて広く使われている。
量子フーリエ変換(QFT):定義と基本性質
N = 2 n N=2^n N = 2 n とする。n n n 量子ビットの状態空間 C N \mathbb C^N C N を「Z / N Z \mathbb Z/N\mathbb Z Z / N Z 上の関数の空間」と見なすと、状態 ∣ ψ ⟩ = ∑ j f ( j ) ∣ j ⟩ \ket\psi = \sum_j f(j)\ket j ∣ ψ ⟩ = ∑ j f ( j ) ∣ j ⟩ の振幅 f f f に DFT を作用させるユニタリが定義できる。これが量子フーリエ変換 (QFT)である:
Q F T N ∣ j ⟩ = 1 N ∑ k = 0 N − 1 e 2 π i j k / N ∣ k ⟩ = 1 N ∑ k = 0 N − 1 ω j k ∣ k ⟩ . (1.3) \mathrm{QFT}_N\ket j = \frac{1}{\sqrt N}\sum_{k=0}^{N-1} e^{2\pi i jk/N}\ket k
= \frac{1}{\sqrt N}\sum_{k=0}^{N-1}\omega^{jk}\ket k.\tag{1.3} QFT N ∣ j ⟩ = N 1 k = 0 ∑ N − 1 e 2 π ij k / N ∣ k ⟩ = N 1 k = 0 ∑ N − 1 ω j k ∣ k ⟩ . ( 1.3 )
すなわち、計算基底 ∣ j ⟩ \ket j ∣ j ⟩ を、位相が j j j に応じて回転する重ね合わせ状態に写す線形写像である。行列成分では ( Q F T ) k j = ω j k / N (\mathrm{QFT})_{kj}=\omega^{jk}/\sqrt N ( QFT ) k j = ω j k / N 。
ユニタリ性
QFTが本当にユニタリであることは直交関係(1.2) から直ちに従う:
( Q F T † Q F T ) j j ′ = 1 N ∑ k ω − k j ω k j ′ = 1 N ∑ k ω k ( j ′ − j ) = δ j j ′ . (\mathrm{QFT}^\dagger\,\mathrm{QFT})_{jj'} = \frac1N\sum_k \omega^{-kj}\omega^{kj'} = \frac1N\sum_k\omega^{k(j'-j)} = \delta_{jj'}. ( QFT † QFT ) j j ′ = N 1 k ∑ ω − k j ω k j ′ = N 1 k ∑ ω k ( j ′ − j ) = δ j j ′ .
逆変換は ω → ω − 1 \omega\to\omega^{-1} ω → ω − 1 と置き換えるだけ:Q F T † ∣ k ⟩ = 1 N ∑ j ω − j k ∣ j ⟩ \mathrm{QFT}^\dagger\ket k=\frac1{\sqrt N}\sum_j\omega^{-jk}\ket j QFT † ∣ k ⟩ = N 1 ∑ j ω − j k ∣ j ⟩ 。
最小の例:n = 1 n=1 n = 1 はHadamardそのもの
N = 2 N=2 N = 2 , ω = e π i = − 1 \omega=e^{\pi i}=-1 ω = e π i = − 1 を定義に入れると
Q F T 2 = 1 2 ( 1 1 1 − 1 ) = H . \mathrm{QFT}_2 = \frac{1}{\sqrt2}\begin{pmatrix}1&1\\1&-1\end{pmatrix} = H. QFT 2 = 2 1 ( 1 1 1 − 1 ) = H .
Hadamardゲートは1量子ビットのQFTである 。第1.6 節のDeutsch–Jozsaで全ビットにHadamardをかける操作は、群 ( Z / 2 Z ) n (\mathbb Z/2\mathbb Z)^n ( Z /2 Z ) n 上のフーリエ変換とみなせる——QFTの「親戚」が既にあちこちに登場していたのである。
n = 2 n=2 n = 2 の例
N = 4 N=4 N = 4 , ω = i \omega=i ω = i で
Q F T 4 = 1 2 ( 1 1 1 1 1 i − 1 − i 1 − 1 1 − 1 1 − i − 1 i ) \mathrm{QFT}_4 = \frac12\begin{pmatrix}
1&1&1&1\\
1&i&-1&-i\\
1&-1&1&-1\\
1&-i&-1&i
\end{pmatrix} QFT 4 = 2 1 1 1 1 1 1 i − 1 − i 1 − 1 1 − 1 1 − i − 1 i
(数値的にユニタリ性を確認済み)。列を眺めると、第 j j j 列は「角速度 j j j で単位円を回る点列」であり、j j j が大きいほど位相が速く回る。QFTとは「位置の基底」から「回転速度の基底」への基底変換 である——この見方が次小節以降のすべての直観の源になる。
注意:振幅は直接読めない
QFTは重ね合わせ状態を重ね合わせ状態に写すユニタリであり、振幅そのものを取り出す ことはできない(測定すれば1つの k k k が確率的に得られるだけ)。この意味で、QFTを「古典FFTの高速版」として信号処理に流用することはできない。QFTが強力なのは、出力分布が少数の k k k に鋭く集中する ように仕組まれた問題——周期発見や位相推定のような構造を持った問題 ——に対してである。本章の残りは、この集中がいつどのように起こるかの解析だと言ってよい。
積表示(テンソル積分解)の完全な導出
QFTの最大の利点は、これが O ( n 2 ) O(n^2) O ( n 2 ) 個のゲートで実装できることである。その鍵が、出力状態がもつれのない積状態 に分解できるという事実(積表示)である。ここはShor理解の急所なので、導出を省略せずに実行する。
j j j の2進表現を j = j 1 j 2 ⋯ j n j=j_1j_2\cdots j_n j = j 1 j 2 ⋯ j n (j 1 j_1 j 1 が最上位ビット)、すなわち j = ∑ m = 1 n j m 2 n − m j=\sum_{m=1}^n j_m 2^{n-m} j = ∑ m = 1 n j m 2 n − m とし、2進小数の記法
0. j l j l + 1 ⋯ j n ≡ j l 2 + j l + 1 4 + ⋯ + j n 2 n − l + 1 0.j_lj_{l+1}\cdots j_n \equiv \frac{j_l}{2}+\frac{j_{l+1}}{4}+\cdots+\frac{j_n}{2^{n-l+1}} 0. j l j l + 1 ⋯ j n ≡ 2 j l + 4 j l + 1 + ⋯ + 2 n − l + 1 j n
を用いる。
ステップ1:k k k をビットごとに分解する 。出力の和の変数 k k k も2進展開 k = ∑ l = 1 n k l 2 n − l k=\sum_{l=1}^n k_l2^{n-l} k = ∑ l = 1 n k l 2 n − l (k l ∈ { 0 , 1 } k_l\in\{0,1\} k l ∈ { 0 , 1 } )し、(1.3) の指数を書き換える:
e 2 π i j k / 2 n = exp ( 2 π i j ∑ l = 1 n k l 2 − l ) = ∏ l = 1 n e 2 π i j k l 2 − l . e^{2\pi ijk/2^n} = \exp\!\Bigl(2\pi ij\sum_{l=1}^nk_l2^{-l}\Bigr) = \prod_{l=1}^n e^{2\pi ijk_l2^{-l}}. e 2 π ij k / 2 n = exp ( 2 π ij l = 1 ∑ n k l 2 − l ) = l = 1 ∏ n e 2 π ij k l 2 − l .
和 ∑ k = 0 N − 1 \sum_{k=0}^{N-1} ∑ k = 0 N − 1 は ∑ k 1 ⋯ ∑ k n \sum_{k_1}\cdots\sum_{k_n} ∑ k 1 ⋯ ∑ k n とビットごとの独立な和に分かれるので、
Q F T ∣ j ⟩ = 1 2 n / 2 ∑ k 1 = 0 1 ⋯ ∑ k n = 0 1 ∏ l = 1 n e 2 π i j k l 2 − l ∣ k 1 ⋯ k n ⟩ = 1 2 n / 2 ⨂ l = 1 n ( ∣ 0 ⟩ + e 2 π i j 2 − l ∣ 1 ⟩ ) . \mathrm{QFT}\ket j = \frac{1}{2^{n/2}}\sum_{k_1=0}^{1}\cdots\sum_{k_n=0}^{1}\ \prod_{l=1}^n e^{2\pi ijk_l2^{-l}}\ \ket{k_1\cdots k_n}
= \frac{1}{2^{n/2}}\bigotimes_{l=1}^n\Bigl(\ket0 + e^{2\pi ij2^{-l}}\ket1\Bigr). QFT ∣ j ⟩ = 2 n /2 1 k 1 = 0 ∑ 1 ⋯ k n = 0 ∑ 1 l = 1 ∏ n e 2 π ij k l 2 − l ∣ k 1 ⋯ k n ⟩ = 2 n /2 1 l = 1 ⨂ n ( ∣ 0 ⟩ + e 2 π ij 2 − l ∣ 1 ⟩ ) .
最後の等号では、各ビットの和が独立な2項和なので全体がテンソル積に因子化 することを使った。もつれた入力ではないから当然と思うかもしれないが、∣ j ⟩ \ket j ∣ j ⟩ は積状態でも、その像が計算基底の一様重ね合わせにビットごとの位相を付けただけ の積状態になるのは、指数関数が和を積に変えるという性質の賜物である。
ステップ2:位相を2進小数に読み替える 。j 2 − l = j 1 j 2 ⋯ j n − l . j n − l + 1 ⋯ j n j2^{-l} = j_1j_2\cdots j_{n-l}.j_{n-l+1}\cdots j_n j 2 − l = j 1 j 2 ⋯ j n − l . j n − l + 1 ⋯ j n (小数点が l l l 桁分左に移動)であり、e 2 π i ( 整数 ) = 1 e^{2\pi i(\text{整数})}=1 e 2 π i ( 整数 ) = 1 だから整数部分は捨ててよい :
e 2 π i j 2 − l = e 2 π i 0. j n − l + 1 j n − l + 2 ⋯ j n . e^{2\pi ij2^{-l}} = e^{2\pi i\,0.j_{n-l+1}j_{n-l+2}\cdots j_n}. e 2 π ij 2 − l = e 2 π i 0. j n − l + 1 j n − l + 2 ⋯ j n .
これを代入して積表示が完成する:
Q F T ∣ j 1 ⋯ j n ⟩ = 1 2 n / 2 ( ∣ 0 ⟩ + e 2 π i 0. j n ∣ 1 ⟩ ) ⊗ ( ∣ 0 ⟩ + e 2 π i 0. j n − 1 j n ∣ 1 ⟩ ) ⊗ ⋯ ⊗ ( ∣ 0 ⟩ + e 2 π i 0. j 1 j 2 ⋯ j n ∣ 1 ⟩ ) (1.4) \boxed{\ \mathrm{QFT}\ket{j_1\cdots j_n} = \frac{1}{2^{n/2}}
\Bigl(\ket0+e^{2\pi i\,0.j_n}\ket1\Bigr)\otimes
\Bigl(\ket0+e^{2\pi i\,0.j_{n-1}j_n}\ket1\Bigr)\otimes\cdots\otimes
\Bigl(\ket0+e^{2\pi i\,0.j_1j_2\cdots j_n}\ket1\Bigr)\ }\tag{1.4} QFT ∣ j 1 ⋯ j n ⟩ = 2 n /2 1 ( ∣ 0 ⟩ + e 2 π i 0. j n ∣ 1 ⟩ ) ⊗ ( ∣ 0 ⟩ + e 2 π i 0. j n − 1 j n ∣ 1 ⟩ ) ⊗ ⋯ ⊗ ( ∣ 0 ⟩ + e 2 π i 0. j 1 j 2 ⋯ j n ∣ 1 ⟩ ) ( 1.4 )
(n = 3 n=3 n = 3 , j = 5 j=5 j = 5 で右辺と定義(1.3) の直接計算が一致することを数値確認済み)。
要点
ビット順序に注意 。式(1.4) では、第1出力ビット (最上位)が最下位入力ビットだけ の位相 0. j n 0.j_n 0. j n を持ち、最終出力ビット が全ビットの位相 0. j 1 ⋯ j n 0.j_1\cdots j_n 0. j 1 ⋯ j n を持つ。つまり入力と出力でビットの「重み」が逆転している。後述の回路は自然に組むと第1ビットに 0. j 1 ⋯ j n 0.j_1\cdots j_n 0. j 1 ⋯ j n が載る——式(1.4) と逆順 ——ので、最後にSWAPゲートでビット順を反転して初めて式(1.4) のQFTになる。文献によっては「ビット逆順のままのQFT」を採用して SWAP を省くこともある(後続の処理で読む順序を変えれば済むため)。順序の取り違えは実装バグの定番なので、必ず小さい n n n で行列を検算する習慣をつけたい。
各出力ビットの状態 ( ∣ 0 ⟩ + e 2 π i θ ∣ 1 ⟩ ) / 2 (\ket0+e^{2\pi i\theta}\ket1)/\sqrt2 ( ∣ 0 ⟩ + e 2 π i θ ∣ 1 ⟩ ) / 2 はBloch球の赤道上の点 (経度 2 π θ 2\pi\theta 2 π θ )である。積表示は「n n n 桁の2進小数 0. j 1 ⋯ j n 0.j_1\cdots j_n 0. j 1 ⋯ j n を、精度の異なる n n n 本の時計の針 (赤道上の量子ビット)に分配して記録した状態」と読める:第1出力ビットの針は j n j_n j n しか区別しない粗い針、最終ビットの針は全桁を反映する最も精密な針である。位相推定(第1.5.6 節)はこの針たちを逆向きに読む操作にほかならない。
回路の構成
積表示(1.4) を実現する回路を組む。部品はHadamardと制御位相ゲート
R k = ( 1 0 0 e 2 π i / 2 k ) R_k = \begin{pmatrix}1 & 0\\ 0 & e^{2\pi i/2^k}\end{pmatrix} R k = ( 1 0 0 e 2 π i / 2 k )
の2種類だけである(R 1 = Z R_1=Z R 1 = Z , R 2 = S R_2=S R 2 = S , R 3 = T R_3=T R 3 = T と、第1.1 章のゲートが揃って再登場する)。
n = 3 n=3 n = 3 での逐語的な追跡
入力 ∣ j 1 j 2 j 3 ⟩ \ket{j_1j_2j_3} ∣ j 1 j 2 j 3 ⟩ に対し、次の手順を実行する。
(1) 第1ビットに H H H :
∣ j 1 ⟩ → ∣ 0 ⟩ + e 2 π i 0. j 1 ∣ 1 ⟩ 2 \ket{j_1}\to\frac{\ket0+e^{2\pi i\,0.j_1}\ket1}{\sqrt2} ∣ j 1 ⟩ → 2 ∣ 0 ⟩ + e 2 π i 0. j 1 ∣ 1 ⟩
(e 2 π i 0. j 1 = ( − 1 ) j 1 e^{2\pi i\,0.j_1}=(-1)^{j_1} e 2 π i 0. j 1 = ( − 1 ) j 1 だからこれは単なる H H H の作用の書き換えである)。
(2) 第2ビットを制御に、第1ビットへ制御 R 2 R_2 R 2 :j 2 = 1 j_2=1 j 2 = 1 のときだけ位相 e 2 π i / 4 e^{2\pi i/4} e 2 π i /4 が加わり
∣ 0 ⟩ + e 2 π i 0. j 1 j 2 ∣ 1 ⟩ 2 . \frac{\ket0+e^{2\pi i\,0.j_1j_2}\ket1}{\sqrt2}. 2 ∣ 0 ⟩ + e 2 π i 0. j 1 j 2 ∣ 1 ⟩ .
2進小数の第2桁が書き込まれた。
(3) 第3ビットを制御に、第1ビットへ制御 R 3 R_3 R 3 :同様に
∣ 0 ⟩ + e 2 π i 0. j 1 j 2 j 3 ∣ 1 ⟩ 2 . \frac{\ket0+e^{2\pi i\,0.j_1j_2j_3}\ket1}{\sqrt2}. 2 ∣ 0 ⟩ + e 2 π i 0. j 1 j 2 j 3 ∣ 1 ⟩ .
第1ビットの針が最精密の値を指した。
(4)(5) 第2ビットに H H H 、制御 R 2 R_2 R 2 (j 3 j_3 j 3 制御) :( ∣ 0 ⟩ + e 2 π i 0. j 2 j 3 ∣ 1 ⟩ ) / 2 \bigl(\ket0+e^{2\pi i\,0.j_2j_3}\ket1\bigr)/\sqrt2 ( ∣ 0 ⟩ + e 2 π i 0. j 2 j 3 ∣ 1 ⟩ ) / 2 。
(6) 第3ビットに H H H :( ∣ 0 ⟩ + e 2 π i 0. j 3 ∣ 1 ⟩ ) / 2 \bigl(\ket0+e^{2\pi i\,0.j_3}\ket1\bigr)/\sqrt2 ( ∣ 0 ⟩ + e 2 π i 0. j 3 ∣ 1 ⟩ ) / 2 。
(7) SWAP :第1・第3ビットを交換。これで各ビットの位相が ( 0. j 3 , 0. j 2 j 3 , 0. j 1 j 2 j 3 ) (0.j_3,\ 0.j_2j_3,\ 0.j_1j_2j_3) ( 0. j 3 , 0. j 2 j 3 , 0. j 1 j 2 j 3 ) の順になり、式(1.4) と一致する。
以上を回路図にまとめると次のようになる(時間は左から右へ流れる;∙ \bullet ∙ は制御、箱は標的への作用)。
回路のパターン を掴んでほしい:各ビットに「H H H の後、自分より下位の すべてのビットから制御位相を受け取る」を上から順に繰り返すだけである。下位ビットほど細かい桁(R k R_k R k の k k k が大きい=角度が小さい)を担い、SWAPが最後に重みの逆転を直す。一般の n n n でも構造は同一で、l l l 番目のビットの処理は「H H H 、続いて制御 R 2 , … , R n − l + 1 R_2,\ldots,R_{n-l+1} R 2 , … , R n − l + 1 」となる。
ここでも位相キックバック
手順(2)で「制御 R 2 R_2 R 2 が標的である第1ビット の位相を書き換える」と述べたが、R k R_k R k は対角行列なので、制御位相ゲートは制御と標的の区別がない対称なゲート である(行列を両方の向きで書いて同一になることを確認できる;第1.5.6 節末のkeyboxで論じた「位相の帰属の不定性」の演算版そのものである)。「j 2 j_2 j 2 の値が第1ビットの位相に転写される」という読み方は、まさに位相キックバックであり、QFT回路とはキックバックを n ( n − 1 ) / 2 n(n-1)/2 n ( n − 1 ) /2 回組織的に行って2進小数を組み立てる機械 だと総括できる。
ゲート数
第 l l l ビットには H H H が1個と制御 R k R_k R k が n − l n-l n − l 個かかるので、合計
∑ l = 1 n ( 1 + ( n − l ) ) = n ( n + 1 ) 2 = O ( n 2 ) \sum_{l=1}^n\bigl(1+(n-l)\bigr) = \frac{n(n+1)}2 = O(n^2) l = 1 ∑ n ( 1 + ( n − l ) ) = 2 n ( n + 1 ) = O ( n 2 )
個、末尾のSWAPが ⌊ n / 2 ⌋ \lfloor n/2\rfloor ⌊ n /2 ⌋ 個(SWAP 1個はCNOT 3個で組める)。古典FFTの O ( N log N ) = O ( 2 n ⋅ n ) O(N\log N)=O(2^n\cdot n) O ( N log N ) = O ( 2 n ⋅ n ) に対し、QFTは O ( n 2 ) O(n^2) O ( n 2 ) ——指数的に少ない 。ただし前小節の注意のとおり、この差がそのまま計算の高速化になるのは出力を賢く使える問題に限られる。
要点
指数的に小さい回転角と近似QFT 。R k R_k R k の回転角 2 π / 2 k 2\pi/2^k 2 π / 2 k は k k k とともに指数的に小さくなる。第1.1 章で論じたとおり、ゲートの回転角は物理的には連続なパラメータ(パルスの振幅・時間)であり、指数的に細かい角度を要求するのは精度的に苦しい。幸い、位相への寄与も 2 − k 2^{-k} 2 − k で指数的に小さいので、k > O ( log n ) k>O(\log n) k > O ( log n ) の R k R_k R k を全部捨てた近似QFT (AQFT)でも誤差は多項式的にしか増えず、ゲート数は O ( n log n ) O(n\log n) O ( n log n ) に落ちる。「どうせ小さい針の振れは読み取り精度以下」という割り切りであり、実機実装では標準的な最適化である。
QFTは何を「見る」のか:周期状態とピーク
Shorへの橋として、周期的な重ね合わせ にQFTをかけると何が起こるかを見る。周期 r r r が N N N を割り切る簡単な場合(N = r M N=rM N = r M )を考え、オフセット x 0 x_0 x 0 から r r r おきに立った一様重ね合わせ
∣ ψ ⟩ = 1 M ∑ m = 0 M − 1 ∣ x 0 + m r ⟩ \ket\psi = \frac{1}{\sqrt M}\sum_{m=0}^{M-1}\ket{x_0+mr} ∣ ψ ⟩ = M 1 m = 0 ∑ M − 1 ∣ x 0 + m r ⟩
にQFTを作用させる:
Q F T ∣ ψ ⟩ = 1 N M ∑ k = 0 N − 1 e 2 π i x 0 k / N ⏟ オフセット位相 ∑ m = 0 M − 1 e 2 π i m r k / N ⏟ 干渉因子 ∣ k ⟩ . \mathrm{QFT}\ket\psi = \frac{1}{\sqrt{NM}}\sum_{k=0}^{N-1}\ \underbrace{e^{2\pi ix_0k/N}}_{\text{オフセット位相}}\ \underbrace{\sum_{m=0}^{M-1}e^{2\pi imrk/N}}_{\text{干渉因子}}\ \ket k. QFT ∣ ψ ⟩ = N M 1 k = 0 ∑ N − 1 オフセット位相 e 2 π i x 0 k / N 干渉因子 m = 0 ∑ M − 1 e 2 π im r k / N ∣ k ⟩ .
干渉因子は公比 e 2 π i r k / N e^{2\pi irk/N} e 2 π i r k / N の等比数列の和で、直交関係(1.2) とまったく同じ機構により
∑ m = 0 M − 1 e 2 π i m r k / N = { M ( r k / N ∈ Z すなわち k = 0 , N r , 2 N r , … ) 0 ( それ以外 ) \sum_{m=0}^{M-1}e^{2\pi imrk/N} = \begin{cases} M & (rk/N\in\mathbb Z\ \text{すなわち}\ k=0,\tfrac Nr,\tfrac{2N}r,\ldots)\\ 0 & (\text{それ以外})\end{cases} m = 0 ∑ M − 1 e 2 π im r k / N = { M 0 ( r k / N ∈ Z すなわち k = 0 , r N , r 2 N , … ) ( それ以外 )
となる。すなわち測定で得られる k k k はN / r N/r N / r の倍数に限られ 、それぞれ等確率 1 / r 1/r 1/ r で出る(N = 8 N=8 N = 8 , r = 4 r=4 r = 4 で出力分布が k = 0 , 2 , 4 , 6 k=0,2,4,6 k = 0 , 2 , 4 , 6 に各 1 / 4 1/4 1/4 となることを数値確認済み)。オフセット x 0 x_0 x 0 は位相因子にしか現れず、確率分布に影響しない ——周期だけが抽出され、位置情報は消える。これは古典フーリエ解析の「シフトは位相にしか効かない」の量子版である。
要点
どこで「量子」が効いたのか 。古典で周期を知るには関数値の列が要るが、量子では重ね合わせの中の M M M 個の成分が互いに干渉 して、周期に合わない k k k の振幅を打ち消し合う。指数個の関数評価に相当する情報が1回のQFTと1回の測定で「周期の逆数」に圧縮される——Shorの指数的加速の実体はこの破壊的干渉である。r ∤ N r\nmid N r ∤ N の一般の場合はピークが k N / r kN/r k N / r 近傍に幅を持って立つが、その解析は次節の位相推定の非厳密ケースとまったく同型なので、そちらでまとめて行う。
位相推定アルゴリズム
QFTの最も重要な応用が位相推定 (Quantum Phase Estimation, QPE)である。設定は次の通り:
ユニタリ U U U の固有ベクトル ∣ u ⟩ \ket u ∣ u ⟩ が与えられている(用意できる)
その固有値 e 2 π i φ e^{2\pi i\varphi} e 2 π i φ の位相 φ ∈ [ 0 , 1 ) \varphi\in[0,1) φ ∈ [ 0 , 1 ) を精度良く求めたい
直観:「時計の針を読む」
固有値 e 2 π i φ e^{2\pi i\varphi} e 2 π i φ の位相 φ \varphi φ を「時計の針の角度 / 2 π /2\pi /2 π 」と思うと、位相推定は「未知の時計の針の位置を、多数の観察を組み合わせて2進小数で読み取る」アルゴリズムだと思える。1回だけ U U U を作用させて針の位置を測ってもノイズだらけの1ビットしか取れないが、U 2 , U 4 , U 8 , … U^2, U^4, U^8, \ldots U 2 , U 4 , U 8 , … と作用させると針は2倍速・4倍速・8倍速で回転し、それぞれから φ \varphi φ の異なるビットが取り出せる。これらを QFT で「ビット列」に整えて読むのが位相推定である。
位相キックバックの直観
制御ユニタリ Λ ( U ) \Lambda(U) Λ ( U ) を、制御ビット ∣ 1 ⟩ \ket 1 ∣ 1 ⟩ と標的 ∣ u ⟩ \ket u ∣ u ⟩ (固有ベクトル)に作用させると
∣ 1 ⟩ ⊗ ∣ u ⟩ → ∣ 1 ⟩ ⊗ U ∣ u ⟩ = e 2 π i φ ∣ 1 ⟩ ⊗ ∣ u ⟩ . \ket 1\otimes \ket u \to \ket 1\otimes U\ket u = e^{2\pi i\varphi}\,\ket 1\otimes \ket u. ∣ 1 ⟩ ⊗ ∣ u ⟩ → ∣ 1 ⟩ ⊗ U ∣ u ⟩ = e 2 π i φ ∣ 1 ⟩ ⊗ ∣ u ⟩ .
位相 e 2 π i φ e^{2\pi i\varphi} e 2 π i φ は代数的にはどちらの因子に付いてもよいが、慣習的に制御ビットの ∣ 1 ⟩ \ket 1 ∣ 1 ⟩ の係数として現れる と見なす。すなわち制御ビットを ( ∣ 0 ⟩ + ∣ 1 ⟩ ) / 2 (\ket 0+\ket 1)/\sqrt2 ( ∣ 0 ⟩ + ∣ 1 ⟩ ) / 2 にしておけば
( ∣ 0 ⟩ + ∣ 1 ⟩ ) ⊗ ∣ u ⟩ → ( ∣ 0 ⟩ + e 2 π i φ ∣ 1 ⟩ ) ⊗ ∣ u ⟩ . \left(\ket 0 + \ket 1\right)\otimes\ket u \to \left(\ket 0 + e^{2\pi i\varphi}\ket 1\right)\otimes\ket u. ( ∣ 0 ⟩ + ∣ 1 ⟩ ) ⊗ ∣ u ⟩ → ( ∣ 0 ⟩ + e 2 π i φ ∣ 1 ⟩ ) ⊗ ∣ u ⟩ .
未知の位相が制御ビットに「転写」される 。これが位相キックバック である。U 2 k U^{2^k} U 2 k を制御すれば係数は e 2 π i 2 k φ e^{2\pi i\, 2^k\varphi} e 2 π i 2 k φ となり、φ \varphi φ の2進展開の第 k k k ビットに対応する情報が制御ビットに載る。
要点
位相は「どちらのビットが持つ」のか 。積状態 ∣ ϕ ⟩ A ⊗ ∣ χ ⟩ B \ket\phi_A\otimes\ket\chi_B ∣ ϕ ⟩ A ⊗ ∣ χ ⟩ B のテンソル積分解は一意でなく、( e i α ∣ ϕ ⟩ A ) ⊗ ( e − i α ∣ χ ⟩ B ) (e^{i\alpha}\ket\phi_A)\otimes(e^{-i\alpha}\ket\chi_B) ( e i α ∣ ϕ ⟩ A ) ⊗ ( e − i α ∣ χ ⟩ B ) と位相を付け替えても全体としては同じ状態 である。位相の帰属の不定性は、状態ベクトルが本来 ray(位相を除いた同値類)であることに由来する数学的冗長性であって、物理的な不定性ではない——各部分系の物理状態は縮約密度行列(第1.8 節)で一意に定まり、これは位相の付け替えで不変である。演算のレベルでも同じことが起こる:「下のビットへの制御 e i α I e^{i\alpha}I e i α I ゲート」と「上のビットへの位相ゲート d i a g ( 1 , e i α ) \mathrm{diag}(1,e^{i\alpha}) diag ( 1 , e i α ) 」は、2 2 2 量子ビットユニタリとして完全に同一の行列 d i a g ( 1 , 1 , e i α , e i α ) \mathrm{diag}(1,1,e^{i\alpha},e^{i\alpha}) diag ( 1 , 1 , e i α , e i α ) である(直接計算で確認できる)。「位相がどちらのビットに付くか」という問いに物理的意味はなく、全体のユニタリだけが一意——位相キックバックが不思議に見えるのは、この冗長性を「位相が移動した」と読んでいるからにすぎない。
アルゴリズムの全経過
t t t 量子ビットの補助レジスタ(精度を決める)と固有ベクトル ∣ u ⟩ \ket u ∣ u ⟩ を用意する。M ≡ 2 t M\equiv 2^t M ≡ 2 t とおく。
(1) 一様重ね合わせの準備 :補助レジスタ ∣ 0 ⟩ ⊗ t \ket0^{\otimes t} ∣ 0 ⟩ ⊗ t に H ⊗ t H^{\otimes t} H ⊗ t を作用させ
1 M ∑ j = 0 M − 1 ∣ j ⟩ ⊗ ∣ u ⟩ . \frac{1}{\sqrt M}\sum_{j=0}^{M-1}\ket j\ \otimes\ \ket u. M 1 j = 0 ∑ M − 1 ∣ j ⟩ ⊗ ∣ u ⟩ .
(2) 制御 U 2 k U^{2^k} U 2 k の適用 :補助の第 k k k ビット(k = 0 , … , t − 1 k=0,\ldots,t-1 k = 0 , … , t − 1 、最下位から)を制御として U 2 k U^{2^k} U 2 k を作用させる。∣ j ⟩ \ket j ∣ j ⟩ の2進展開 j = ∑ k j k 2 k j=\sum_kj_k2^k j = ∑ k j k 2 k に対し、作用する U U U の総回数は ∑ k j k 2 k = j \sum_kj_k2^k=j ∑ k j k 2 k = j 回。キックバックにより
1 M ∑ j = 0 M − 1 e 2 π i j φ ∣ j ⟩ ⊗ ∣ u ⟩ . (1.5) \frac{1}{\sqrt M}\sum_{j=0}^{M-1}e^{2\pi ij\varphi}\ket j\ \otimes\ \ket u.\tag{1.5} M 1 j = 0 ∑ M − 1 e 2 π ij φ ∣ j ⟩ ⊗ ∣ u ⟩ . ( 1.5 )
∣ u ⟩ \ket u ∣ u ⟩ は一度も変化していない ことに注意——固有ベクトルだから位相しか出さず、その位相はすべて補助レジスタに蓄積された。
(3) 逆QFTと測定 :補助レジスタに Q F T † \mathrm{QFT}^\dagger QFT † を作用させ、計算基底で測定する。
全体の回路は次の形になる(t = 3 t=3 t = 3 の場合)。
下段のレジスタ(∣ u ⟩ \ket u ∣ u ⟩ )は最後まで変化せず、情報の流れはすべて「制御 U 2 k U^{2^k} U 2 k による位相キックバック → \to → 補助レジスタ」の向きであることが図から読み取れる。補助レジスタに蓄積した状態(1.5) は、φ \varphi φ が t t t ビットで書けるとき「Q F T ∣ 2 t φ ⟩ \mathrm{QFT}\ket{2^t\varphi} QFT ∣ 2 t φ ⟩ 」の形をしているので、Q F T † \mathrm{QFT}^\dagger QFT † がそれを計算基底へ巻き戻す——QFT回路(前小節)が2進小数を位相に「書き込む」機械なら、QPEはその逆再生で位相から2進小数を「読み出す」機械 である。この対称性が見えると、両者は一つのアルゴリズムの表裏であることが分かる。
厳密なケース
φ \varphi φ がちょうど t t t ビットで表せる場合、すなわち φ = a / M \varphi=a/M φ = a / M (a ∈ { 0 , … , M − 1 } a\in\{0,\ldots,M-1\} a ∈ { 0 , … , M − 1 } )なら、式(1.5) の補助レジスタは
1 M ∑ j e 2 π i j a / M ∣ j ⟩ = Q F T ∣ a ⟩ \frac{1}{\sqrt M}\sum_je^{2\pi ija/M}\ket j = \mathrm{QFT}\ket a M 1 j ∑ e 2 π ij a / M ∣ j ⟩ = QFT ∣ a ⟩
そのもの である。よって Q F T † \mathrm{QFT}^\dagger QFT † で確定的に ∣ a ⟩ \ket a ∣ a ⟩ に戻り、測定結果 a a a から φ = a / M \varphi=a/M φ = a / M が確率1で 読み出せる。
例題:U = T U=T U = T ゲートの位相推定
T = d i a g ( 1 , e i π / 4 ) T=\mathrm{diag}(1,e^{i\pi/4}) T = diag ( 1 , e iπ /4 ) の固有ベクトル ∣ 1 ⟩ \ket1 ∣ 1 ⟩ の固有値は e 2 π i ⋅ 1 / 8 e^{2\pi i\cdot 1/8} e 2 π i ⋅ 1/8 、すなわち φ = 1 / 8 = 0.001 ( 2 ) \varphi=1/8=0.001_{(2)} φ = 1/8 = 0.00 1 ( 2 ) 。t = 3 t=3 t = 3 ビットの補助レジスタで上のアルゴリズムを走らせると、φ ⋅ 2 3 = 1 \varphi\cdot2^3=1 φ ⋅ 2 3 = 1 が整数なので厳密なケースに該当し、測定結果は確定的に m = 1 m=1 m = 1 となる(状態ベクトルシミュレーションで P ( m = 1 ) = 1.000000 P(m{=}1)=1.000000 P ( m = 1 ) = 1.000000 を確認済み)。針の速度が 1 , 2 , 4 1,2,4 1 , 2 , 4 倍と上がるにつれ位相は 1 8 , 1 4 , 1 2 \tfrac18,\tfrac14,\tfrac12 8 1 , 4 1 , 2 1 回転——3本の針がそれぞれ2進小数の1桁ずつを担っているのが直接見える。
位相が正確に表せない場合の解析
一般には φ \varphi φ は無理数でもよく、t t t ビットで表しきれない。このときの成功確率を定量化する。b b b を M φ M\varphi M φ に最も近い整数とし、ずれを δ ≡ φ − b / M \delta\equiv\varphi-b/M δ ≡ φ − b / M (∣ δ ∣ ≤ 1 / 2 M |\delta|\le1/2M ∣ δ ∣ ≤ 1/2 M )とおく。逆QFT後に結果 m m m を得る振幅は
c m = 1 M ∑ j = 0 M − 1 e 2 π i j ( φ − m / M ) = 1 M ⋅ 1 − e 2 π i M φ − 2 π i m 1 − e 2 π i ( φ − m / M ) c_m = \frac1M\sum_{j=0}^{M-1}e^{2\pi ij(\varphi-m/M)}
= \frac1M\cdot\frac{1-e^{2\pi iM\varphi-2\pi im}}{1-e^{2\pi i(\varphi-m/M)}} c m = M 1 j = 0 ∑ M − 1 e 2 π ij ( φ − m / M ) = M 1 ⋅ 1 − e 2 π i ( φ − m / M ) 1 − e 2 π i M φ − 2 π im
(等比数列の和;分布のピーク構造は第1.5.5 節の干渉因子と同型である)。最良の候補 m = b m=b m = b について、∣ 1 − e i θ ∣ = 2 ∣ sin ( θ / 2 ) ∣ |1-e^{i\theta}|=2|\sin(\theta/2)| ∣1 − e i θ ∣ = 2∣ sin ( θ /2 ) ∣ と不等式 2 π ∣ x ∣ ≤ ∣ sin x ∣ ≤ ∣ x ∣ \frac{2}{\pi}|x|\le|\sin x|\le|x| π 2 ∣ x ∣ ≤ ∣ sin x ∣ ≤ ∣ x ∣ (∣ x ∣ ≤ π / 2 |x|\le\pi/2 ∣ x ∣ ≤ π /2 )を使うと
∣ c b ∣ = 1 M ∣ sin ( π M δ ) ∣ ∣ sin ( π δ ) ∣ ≥ 1 M ⋅ 2 M ∣ δ ∣ ⋅ 2 / π ⋅ π 2 π ∣ δ ∣ ⋅ 1 2 ⋅ 1 2 ⟹ P ( m = b ) = ∣ c b ∣ 2 ≥ 4 π 2 ≈ 0.405. |c_b| = \frac1M\,\frac{|\sin(\pi M\delta)|}{|\sin(\pi\delta)|}
\ \ge\ \frac1M\cdot\frac{2M|\delta|\cdot 2/\pi\cdot\pi}{2\pi|\delta|\cdot\tfrac12}\cdot\frac12
\quad\Longrightarrow\quad
P(m=b)=|c_b|^2\ \ge\ \frac{4}{\pi^2}\approx 0.405. ∣ c b ∣ = M 1 ∣ sin ( π δ ) ∣ ∣ sin ( π M δ ) ∣ ≥ M 1 ⋅ 2 π ∣ δ ∣ ⋅ 2 1 2 M ∣ δ ∣ ⋅ 2/ π ⋅ π ⋅ 2 1 ⟹ P ( m = b ) = ∣ c b ∣ 2 ≥ π 2 4 ≈ 0.405.
すなわち最良の t t t ビット近似が常に 40 % 40\% 40% 以上の確率で得られる (たとえば φ = 0.2 \varphi=0.2 φ = 0.2 , t = 3 t=3 t = 3 の数値実験では P ( m = b ) = 0.578 P(m{=}b)=0.578 P ( m = b ) = 0.578 、両隣を含めれば 0.837 0.837 0.837 )。定数確率で成功するなら、数回繰り返して多数決を取れば失敗確率は指数的に落ちる——BQPの定義(第1.7 節)で 2 / 3 2/3 2/3 という定数が本質的でなかったのと同じ理屈である。
さらに「小数点以下 n n n ビットの精度で、失敗確率 ε \varepsilon ε 以下」を保証したければ、補助レジスタを
t = n + ⌈ log 2 ( 2 + 1 2 ε ) ⌉ t = n + \left\lceil\log_2\Bigl(2+\frac{1}{2\varepsilon}\Bigr)\right\rceil t = n + ⌈ log 2 ( 2 + 2 ε 1 ) ⌉
ビットに取ればよいことが、裾の確率 ∑ ∣ m − b ∣ > e ∣ c m ∣ 2 \sum_{|m-b|>e}|c_m|^2 ∑ ∣ m − b ∣ > e ∣ c m ∣ 2 を上と同様の等比和評価で押さえることで示せる(N&C, §5.2.1)。目安として数ビット余分に持つだけで裾が急速に潰れる :φ = 0.2 \varphi=0.2 φ = 0.2 を n = 3 n=3 n = 3 ビット精度で求める場合、t = 5 t=5 t = 5 (2 2 2 ビット追加)で成功確率は既に 0.957 0.957 0.957 に達する(数値確認済み)。精度は t t t に対して指数的 に上がる(2 − t 2^{-t} 2 − t 刻み)一方、コストは制御 U 2 k U^{2^k} U 2 k の回数として線形 にしか増えない——この非対称性がQPEの威力である。
制御 U 2 k U^{2^k} U 2 k の実装コスト
最後の懸念として、U 2 t − 1 U^{2^{t-1}} U 2 t − 1 は「U U U を 2 t − 1 2^{t-1} 2 t − 1 回」であり指数回に見える。一般の U U U ではその通りだが、Shorで使うモジュラー乗算 U a U_a U a では U a 2 k = U a 2 k m o d N U_a^{2^k}=U_{a^{2^k}\bmod N} U a 2 k = U a 2 k mod N であり、指数 a 2 k m o d N a^{2^k}\bmod N a 2 k mod N は反復2乗法 で k k k 回の古典乗算で先に計算できる。すなわち各制御ユニタリは(べき乗済みの a ′ a' a ′ による)1回のモジュラー乗算回路で済み、全体は多項式規模に収まる。「量子回路の指数を古典前処理に押し付ける」この分業も、Shorの多項式時間性の隠れた立役者である。
要点
位相推定は量子アルゴリズムの主力エンジンである 。Shorの因数分解アルゴリズムは「モジュラー累乗ユニタリの位相推定」として理解でき、量子化学のエネルギー準位計算(Hamiltonian H H H の固有値問題を U = e − i H t U=e^{-iHt} U = e − i H t の位相推定に翻訳)も位相推定に帰着される。量子計算の実用的優位性が現れる中心的な場面である。
この章のまとめと見取り図
QFTは Z / 2 n Z \mathbb Z/2^n\mathbb Z Z / 2 n Z 上のDFTをユニタリとして実装したもの。すべての性質は1の原始根の直交関係(1.2) に還元される。Q F T 2 = H \mathrm{QFT}_2=H QFT 2 = H であり、Deutsch–JozsaのHadamard変換は ( Z / 2 Z ) n (\mathbb Z/2\mathbb Z)^n ( Z /2 Z ) n 上のQFTである。
積表示(1.4) によりQFTは積状態への写像であり、H H H と制御 R k R_k R k で O ( n 2 ) O(n^2) O ( n 2 ) ゲート(近似すれば O ( n log n ) O(n\log n) O ( n log n ) )で組める。回路の実体は「位相キックバックによる2進小数の組み立て」であり、出力はビット逆順で現れるためSWAPで直す。
周期的重ね合わせへのQFTは、等比和の破壊的干渉により出力を N / r N/r N / r の倍数へ集中させる。オフセットは消え、周期だけが残る。
位相推定は、制御 U 2 k U^{2^k} U 2 k のキックバックで固有位相を補助レジスタに転写し、逆QFTで読む。厳密なら確率1、一般でも最良近似が確率 ≥ 4 / π 2 \ge4/\pi^2 ≥ 4/ π 2 で得られ、数ビットの追加で任意の信頼度に増幅できる。
これらを部品として、次章のShorは「位数発見 → \to → 位相推定 → \to → QFT」と組み上がる。より広くは、QFTが効く問題は「隠れた部分群問題」(周期発見・離散対数はその特別な場合)として統一的に理解されており、量子的指数加速のほぼ唯一知られた源泉である。
AI(Claude)が書いた教材を、木下が勉強しながら公開しています。式と数値は検算していますが、誤りが残っているかもしれません。誤りのご指摘・削除のご依頼をいただければ直します。 連絡先:support@tecktom.com