次に、位相推定問題を解くための量子アルゴリズムである位相推定手順 について説明します。
まず精度の低いウォームアップから始め、この手法の基本的な直感を説明します。
続いて、位相推定手順で使用される重要な量子演算である量子フーリエ変換 と、その量子回路実装について説明します。
量子フーリエ変換を理解した後、位相推定手順を完全な一般性で記述し、その性能を分析します。
ウォームアップ:低精度による位相の近似
まず、位相推定問題に対して低精度の解を提供する、位相推定手順のいくつかの単純なバージョンから始めます。
これは、レッスンの後半で見る一般的な手順の背後にある直感を説明するのに役立ちます。
位相キックバックの利用
位相推定問題に対するシンプルなアプローチとして、求める値 θ \theta θ について何かを学べる方法があります。それは位相キックバック 現象に基づいています。
後で見るように、これは本質的に、レッスンの後半で説明する一般的な位相推定手順の1量子ビット版です。
位相推定問題への入力の一部として、演算 U U U の量子回路が与えられています。
この回路の記述を使って、制御 -U U U 演算の回路を作成できます。次の図はこれを示しています(左に演算 U U U を量子ゲートとして表し、右に制御-U U U 演算を示しています)。
制御-U U U 演算の量子回路を作成するには、まず U U U の回路に制御量子ビットを追加し、U U U の回路内のすべてのゲートをそのゲートの制御版に置き換えます。これにより、1つの新しい制御量子ビットが U U U の回路内のすべてのゲートを効果的に制御します。
これにはすべてのゲートの制御版が必要ですが、ゲートセットに含まれていない場合でも、これらの制御演算の回路を常に構築できます。
次に、以下の回路を考えます。ここで、上の量子ビット以外のすべての量子ビットの入力状態 ∣ ψ ⟩ \vert\psi\rangle ∣ ψ ⟩ は、U U U の固有ベクトルである量子状態です。
この回路の測定結果の確率は、固有ベクトル ∣ ψ ⟩ \vert\psi\rangle ∣ ψ ⟩ に対応する U U U の固有値に依存します。
どのように依存するかを正確に決定するために、回路を詳しく分析しましょう。
回路の初期状態は
∣ π 0 ⟩ = ∣ ψ ⟩ ∣ 0 ⟩ \vert\pi_0\rangle = \vert\psi\rangle \vert 0\rangle ∣ π 0 ⟩ = ∣ ψ ⟩ ∣0 ⟩
であり、最初のアダマールゲートはこの状態を次のように変換します。
∣ π 1 ⟩ = ∣ ψ ⟩ ∣ + ⟩ = 1 2 ∣ ψ ⟩ ∣ 0 ⟩ + 1 2 ∣ ψ ⟩ ∣ 1 ⟩ . \vert\pi_1\rangle = \vert\psi\rangle \vert +\rangle
= \frac{1}{\sqrt{2}} \vert\psi\rangle \vert 0\rangle + \frac{1}{\sqrt{2}} \vert\psi\rangle \vert 1\rangle. ∣ π 1 ⟩ = ∣ ψ ⟩ ∣ + ⟩ = 2 1 ∣ ψ ⟩ ∣0 ⟩ + 2 1 ∣ ψ ⟩ ∣1 ⟩ .
次に、制御-U U U 演算が実行され、状態は次のようになります。
∣ π 2 ⟩ = 1 2 ∣ ψ ⟩ ∣ 0 ⟩ + 1 2 ( U ∣ ψ ⟩ ) ∣ 1 ⟩ . \vert\pi_2\rangle
= \frac{1}{\sqrt{2}} \vert\psi\rangle \vert 0\rangle + \frac{1}{\sqrt{2}} \bigl(U \vert\psi\rangle\bigr) \vert 1\rangle. ∣ π 2 ⟩ = 2 1 ∣ ψ ⟩ ∣0 ⟩ + 2 1 ( U ∣ ψ ⟩ ) ∣1 ⟩ .
∣ ψ ⟩ \vert\psi\rangle ∣ ψ ⟩ が固有値 λ = e 2 π i θ \lambda = e^{2\pi i\theta} λ = e 2 πi θ を持つ U U U の固有ベクトルであるという仮定を使うと、
この状態を次のように表すことができます。
∣ π 2 ⟩ = 1 2 ∣ ψ ⟩ ∣ 0 ⟩ + e 2 π i θ 2 ∣ ψ ⟩ ∣ 1 ⟩ = ∣ ψ ⟩ ⊗ ( 1 2 ∣ 0 ⟩ + e 2 π i θ 2 ∣ 1 ⟩ ) \vert\pi_2\rangle
= \frac{1}{\sqrt{2}} \vert\psi\rangle \vert 0\rangle + \frac{e^{2\pi i \theta}}{\sqrt{2}} \vert\psi\rangle \vert 1\rangle = \vert\psi\rangle \otimes \left( \frac{1}{\sqrt{2}} \vert 0\rangle + \frac{e^{2\pi i \theta}}{\sqrt{2}} \vert 1\rangle\right) ∣ π 2 ⟩ = 2 1 ∣ ψ ⟩ ∣0 ⟩ + 2 e 2 πi θ ∣ ψ ⟩ ∣1 ⟩ = ∣ ψ ⟩ ⊗ ( 2 1 ∣0 ⟩ + 2 e 2 πi θ ∣1 ⟩ )
ここで位相キックバック現象が観察されます。
ドイッチュのアルゴリズムやドイッチュ-ジョザアルゴリズムの場合とは少し異なります。クエリゲートを使っていないからですが、考え方は似ています。
最後に、2番目のアダマールゲートが実行されます。少し簡略化すると、この状態の次の式が得られます。
∣ π 3 ⟩ = ∣ ψ ⟩ ⊗ ( 1 + e 2 π i θ 2 ∣ 0 ⟩ + 1 − e 2 π i θ 2 ∣ 1 ⟩ ) \vert\pi_3\rangle
= \vert\psi\rangle \otimes \left( \frac{1+ e^{2\pi i \theta}}{2} \vert 0\rangle + \frac{1 - e^{2\pi i \theta}}{2} \vert 1\rangle\right) ∣ π 3 ⟩ = ∣ ψ ⟩ ⊗ ( 2 1 + e 2 πi θ ∣0 ⟩ + 2 1 − e 2 πi θ ∣1 ⟩ )
測定は以下の確率で結果 0 0 0 と 1 1 1 を生じます。
p 0 = ∣ 1 + e 2 π i θ 2 ∣ 2 = cos 2 ( π θ ) p 1 = ∣ 1 − e 2 π i θ 2 ∣ 2 = sin 2 ( π θ ) . \begin{aligned}
p_0 &= \left\vert \frac{1+ e^{2\pi i \theta}}{2} \right\vert^2 = \cos^2(\pi\theta)\\[1mm]
p_1 &= \left\vert \frac{1- e^{2\pi i \theta}}{2} \right\vert^2 = \sin^2(\pi\theta).
\end{aligned} p 0 p 1 = 2 1 + e 2 πi θ 2 = cos 2 ( π θ ) = 2 1 − e 2 πi θ 2 = sin 2 ( π θ ) .
θ \theta θ の関数として、2つの可能な結果 0 0 0 と 1 1 1 の確率をプロットしたものを示します。
当然ながら、2つの確率の合計は常に 1 1 1 です。
θ = 0 \theta = 0 θ = 0 のとき、測定結果は常に 0 0 0 となり、θ = 1 / 2 \theta = 1/2 θ = 1/2 のとき、測定結果は常に 1 1 1 となることに注目してください。
つまり、測定結果から θ \theta θ が正確に何であるかはわかりませんが、それに関するある情報が得られます。もし θ = 0 \theta = 0 θ = 0 または θ = 1 / 2 \theta = 1/2 θ = 1/2 のどちらかであることが保証されていれば、この回路からどちらが正しいかをエラーなしに学べます。
直感的には、回路の測定結果を θ \theta θ の「1ビットの精度」での推測として考えることができます。
言い換えると、θ \theta θ を2進数表記で書いて1ビットに丸めると、次のような数になります。
0. a = { 0 a = 0 1 2 a = 1. 0.a = \begin{cases}
0 & a = 0\\
\frac{1}{2} & a = 1.
\end{cases} 0. a = { 0 2 1 a = 0 a = 1.
測定結果はビット a a a の推測と見なすことができます。
θ \theta θ が 0 0 0 でも 1 / 2 1/2 1/2 でもない場合、推測が間違える確率はゼロではありませんが、
0 0 0 または 1 / 2 1/2 1/2 に近づくほど、エラーの確率は小さくなります。
この手順で2つのアダマールゲートが果たす役割を問うのは自然なことです。
最初のアダマールゲートは、制御量子ビットを ∣ 0 ⟩ \vert 0\rangle ∣0 ⟩ と ∣ 1 ⟩ \vert 1\rangle ∣1 ⟩ の均一な重ね合わせに設定します。これにより、位相キックバックが発生するとき、∣ 0 ⟩ \vert 0\rangle ∣0 ⟩ の状態ではなく ∣ 1 ⟩ \vert 1\rangle ∣1 ⟩ の状態に対して発生し、測定結果に影響する相対的な 位相差が生まれます。これをしなかった場合、位相キックバックがグローバルな 位相を生じさせ、異なる測定結果の確率には何の影響も与えないでしょう。
2番目のアダマールゲートにより、干渉 という現象を通じて数 θ \theta θ について何かを学べます。2番目のアダマールゲートの前の上の量子ビットの状態は
1 2 ∣ 0 ⟩ + e 2 π i θ 2 ∣ 1 ⟩ , \frac{1}{\sqrt{2}} \vert 0\rangle + \frac{e^{2\pi i \theta}}{\sqrt{2}} \vert 1\rangle, 2 1 ∣0 ⟩ + 2 e 2 πi θ ∣1 ⟩ ,
であり、この状態を測定すると 0 0 0 と 1 1 1 をそれぞれ確率 1 / 2 1/2 1/2 で得ることになり、θ \theta θ について何も教えてくれません。しかし、2番目のアダマールゲートを実行することで、θ \theta θ が出力確率に影響するようになります。
位相の倍増
上の回路は位相キックバック現象を使って θ \theta θ を1ビットの精度で近似します。
1ビットの精度で十分な状況もありますが、素因数分解にはそれよりもはるかに高い精度が必要です。
自然な疑問として、θ \theta θ についてさらに多くを学ぶにはどうすればよいでしょうか?
非常に単純な方法の1つは、回路内の制御-U U U 演算を次のような回路のようにこの演算の2つのコピー に置き換えることです。
制御-U U U 演算の2つのコピーは、制御-U 2 U^2 U 2 演算と等価です。
∣ ψ ⟩ \vert\psi\rangle ∣ ψ ⟩ が固有値 λ = e 2 π i θ \lambda = e^{2\pi i \theta} λ = e 2 πi θ を持つ U U U の固有ベクトルであれば、この状態は U 2 U^2 U 2 の固有ベクトルでもあり、今度は固有値 λ 2 = e 2 π i ( 2 θ ) \lambda^2 = e^{2\pi i (2\theta)} λ 2 = e 2 πi ( 2 θ ) を持ちます。
したがって、このバージョンの回路を実行すると、θ \theta θ が 2 θ 2\theta 2 θ に置き換えられる以外は、前と同じ計算を実行していることになります。
θ \theta θ が 0 0 0 から 1 1 1 の範囲で変化したときの出力確率を示すプロットを示します。