tecktom.com

出てくるもの(1):成功確率と振幅増幅

2026年10月15日9分で読めますAI生成教科書『虎の巻』第6部 第4章 Grover と探索の下界
目次
  1. 最適な回数
  2. 当たりが複数あるとき
  3. 当たりの数を知らないとき
  4. 振幅増幅
  5. 当たりの数を数える
  6. 木下の層

AI 生成・木下が未勉強

相対エントロピーから情報と物理を組み立てる 第6部 第4章 §6.4.3 ★★★ 成功確率 sin⁡2((2k+1)θ)\sin^2((2k+1)\theta) を最大にする回数は約 (π/4)N/M(\pi/4)\sqrt{N/M}。回しすぎると下がるので、当たりの数を知らないときは回数を乱数で選ぶ。同じ回転は任意の手順の成功確率を上げる(振幅増幅)

最適な回数

成功確率 (6.4.14) は、角 (2k+1)θ(2k+1)\theta が π/2\pi/2 に最も近いときに最大になる。

k∗=⌊π4θ⌋(6.4.15)k_*=\Bigl\lfloor\frac{\pi}{4\theta}\Bigr\rfloor\tag{6.4.15}

と選ぶと、π4θ−1<k∗≤π4θ\frac\pi{4\theta}-1<k_*\le\frac\pi{4\theta} から (2k∗+1)θ(2k_*+1)\theta は π/2−θ\pi/2-\theta より大きく π/2+θ\pi/2+\theta 以下になり、

Pk∗≥cos⁡2θ=1−1N(6.4.16)P_{k_*}\ge\cos^2\theta=1-\frac1N\tag{6.4.16}

が成り立つ。NN が大きいと θ=arcsin⁡(1/N)=1/N+O(N−3/2)\theta=\arcsin(1/\sqrt N)=1/\sqrt N+\mathcal{O}(N^{-3/2}) なので k∗≈(π/4)Nk_*\approx(\pi/4)\sqrt N である。

成功確率は kk の単調な関数ではない。k∗k_* を過ぎても回し続けると、状態は ∣v⟩| v \rangle を通り越して反対側へ回り、成功確率は下がっていく。およそ 2k∗2k_* 回で状態は −∣s⟩-| s \rangle の近くに戻り、成功確率は 1/N1/N 程度まで落ちる。古典の探索では問い合わせを増やして損をすることはないので、ここは量子の探索に特有の性質である。図 6.4.2 に N=64N=64 の成功確率を古典の (6.4.1) と並べて示す。

図

図 6.4.2 N=64N=64 での成功確率。丸は Grover の反復 kk 回の後の sin⁡2((2k+1)θ)\sin^2((2k+1)\theta)(点線は kk を連続にした曲線)、四角は古典の手順の (k+1)/N(k+1)/N。どちらも厳密な値である。量子は k∗=6k_*=6 で 0.99660.9966 に達した後、回しすぎると下がる。古典は同じ6回で 0.1090.109。

当たりが複数あるとき

当たりが MM 個あるとき(1≤M<N1\le M<N)は、∣v⟩| v \rangle を当たりの一様な重ね合わせ ∣good⟩=M−1/2∑f(y)=1∣y⟩| \mathrm{good} \rangle =M^{-1/2}\sum_{f(y)=1}| y \rangle に、∣r⟩| r \rangle を外れの一様な重ね合わせ ∣bad⟩| \mathrm{bad} \rangle に置き換え、オラクルを O^f=∑y(−1)f(y)∣y⟩⟨y∣\hat O_f=\sum_y(-1)^{f(y)}| y \rangle \langle y | にすれば、前の節の議論がそのまま通る。∣s⟩=sin⁡θ∣good⟩+cos⁡θ∣bad⟩| s \rangle =\sin\theta| \mathrm{good} \rangle +\cos\theta| \mathrm{bad} \rangle で

sin⁡θ=MN,(6.4.17)\sin\theta=\sqrt{\frac MN},\tag{6.4.17}

成功確率(当たりのどれかが出る確率)は sin⁡2((2k+1)θ)\sin^2((2k+1)\theta)、最適な回数は ⌊π/(4θ)⌋≈(π/4)N/M\lfloor\pi/(4\theta)\rfloor\approx(\pi/4)\sqrt{N/M} である。当たりの割合が 1/41/4 のときは θ=π/6\theta=\pi/6 で、1回の反復で確実に当たる(例題 6.4.2 と同じ角)。割合が 1/21/2 を超えると θ>π/4\theta>\pi/4 で、反復するとかえって悪くなるので、そのときは反復せずに測ればよい。

当たりの数を知らないとき

最適な回数は MM によるので、MM を知らないと回数を決められない。M=1M=1 のつもりで (π/4)N(\pi/4)\sqrt N 回まわすと、本当は MM が大きかった場合に大きく回しすぎてしまう。M. Boyer・G. Brassard・P. Høyer・A. Tapp は、回数を乱数で選べばこの問題を避けられることを示した1M. Boyer, G. Brassard, P. Høyer and A. Tapp (1998), Fortschr. Phys. 46, 493。下の脚注へ。回数 kk を {0,1,…,m−1}\{0,1,\dots,m-1\} から一様に選ぶと、平均の成功確率は

P‾m=1m∑k=0m−1sin⁡2((2k+1)θ)=12−sin⁡(4mθ)4msin⁡2θ(6.4.18)\overline{P}_m=\frac1m\sum_{k=0}^{m-1}\sin^2\bigl((2k+1)\theta\bigr)=\frac12-\frac{\sin(4m\theta)}{4m\sin2\theta}\tag{6.4.18}

になる(sin⁡2x=12(1−cos⁡2x)\sin^2x=\frac12(1-\cos2x) と、等差に並んだ角の余弦の和 ∑k=0m−1cos⁡((2k+1)φ)=sin⁡(2mφ)/(2sin⁡φ)\sum_{k=0}^{m-1}\cos((2k+1)\varphi)=\sin(2m\varphi)/(2\sin\varphi) を φ=2θ\varphi=2\theta で使う)。m≥1/sin⁡2θm\ge1/\sin2\theta なら第2項の絶対値は 1/41/4 以下なので、P‾m≥1/4\overline P_m\ge1/4 である。MM を知らないまま mm を 11 から始めて一定の比で増やしていき、そのたびに乱数の回数だけ回して測り、当たりが出たら止める。この手順の問い合わせの回数の期待値は O(N/M)\mathcal{O}(\sqrt{N/M}) で、MM を知っている場合と同じ程度で済む。

振幅増幅

Grover の反復は、探索に限らない形に一般化できる。ある量子の手順 A^\hat A が、初期状態から

A^∣0⋯0⟩=a ∣good⟩+1−a ∣bad⟩(6.4.19)\hat A| 0\cdots0 \rangle =\sqrt a\,| \mathrm{good} \rangle +\sqrt{1-a}\,| \mathrm{bad} \rangle\tag{6.4.19}

を作り、成功の部分 ∣good⟩| \mathrm{good} \rangle を見分ける位相オラクル O^good\hat O_{\mathrm{good}} が使えるとする。∣s⟩| s \rangle を A^∣0⋯0⟩\hat A| 0\cdots0 \rangle に、R^s\hat R_s を A^(2∣0⋯0⟩⟨0⋯0∣−1)A^†\hat A(2| 0\cdots0 \rangle \langle 0\cdots0 |-\mathbf 1)\hat A^\dagger に置き換えた反復 Q^=A^(2∣0⋯0⟩⟨0⋯0∣−1)A^†O^good\hat Q=\hat A(2| 0\cdots0 \rangle \langle 0\cdots0 |-\mathbf 1)\hat A^\dagger\hat O_{\mathrm{good}} は、平面 span⁡{∣good⟩,∣bad⟩}\operatorname{span}\{| \mathrm{good} \rangle ,| \mathrm{bad} \rangle \} の中で角 2θa2\theta_a(sin⁡2θa=a\sin^2\theta_a=a)の回転になる(証明は補題 6.4.1 と同じ)。成功確率を 11 に近づけるには、A^\hat A と A^†\hat A^\dagger を約 π/(4a)\pi/(4\sqrt a) 回ずつ使えばよい。手順をくり返して成功を待つ古典の方法では約 1/a1/a 回かかるので、ここでも2乗の速さが得られる。これを振幅増幅と呼ぶ2G. Brassard, P. Høyer, M. Mosca and A. Tapp (2002), Contemp. Math. 305, 53。下の脚注へ。Grover のアルゴリズムは A^=H⊗n\hat A=H^{\otimes n}、a=M/Na=M/N の場合である。

振幅増幅を使うと、成功確率を正確に 11 にすることもできる。k=⌈π/(4θ)−1/2⌉k=\lceil\pi/(4\theta)-1/2\rceil 回まわすと決め、角を少し小さい θ′=π/(2(2k+1))≤θ\theta'=\pi/(2(2k+1))\le\theta に直せば、(2k+1)θ′=π/2(2k+1)\theta'=\pi/2 で確実に当たる。角を小さくするには、補助の量子ビットを1つ足し、それを c∣1⟩+1−c∣0⟩\sqrt c| 1 \rangle +\sqrt{1-c}| 0 \rangle(c=sin⁡2θ′/sin⁡2θc=\sin^2\theta'/\sin^2\theta)に回してから、「当たりで、しかも補助の量子ビットが 11」を新しい成功とみなせばよい。成功の確率が aa から ca=sin⁡2θ′ca=\sin^2\theta' に下がり、角が θ′\theta' になる。

当たりの数を数える

平面の中の回転 G^\hat G の固有値は e±2iθ\mathrm{e}^{\pm2\mathrm{i}\theta} で、∣s⟩| s \rangle は2つの固有ベクトルの重みが 1/21/2 ずつの重ね合わせである。そこで、G^\hat G を制御つきでかける位相推定(第6部第2章)で固有値の位相 ±θ/π\pm\theta/\pi を読めば、M=Nsin⁡2θM=N\sin^2\theta から当たりの数が分かる。これを量子計数と呼ぶ。位相推定は2つの固有値のどちらかを確率 1/21/2 ずつで読むが、sin⁡2\sin^2 は符号によらないので、どちらを読んでも同じ MM が出る。

例題 6.4.3 当たりの数を間違えると ★★

オリジナルN=1024N=1024、当たりの数 M=16M=16 とする。

  1. 最適な回数 k∗k_* と、そのときの成功確率を求めよ。
  2. M=1M=1 と思い込んで ⌊(π/4)N⌋\lfloor(\pi/4)\sqrt N\rfloor 回まわしたときの成功確率を求めよ。
  3. 回数を {0,…,m−1}\{0,\dots,m-1\} から一様に選ぶ方法で、m=⌈1/sin⁡2θ⌉m=\lceil1/\sin2\theta\rceil としたときの平均の成功確率を式 (6.4.18) から求めよ。
解答

(1) sin⁡θ=16/1024=1/8\sin\theta=\sqrt{16/1024}=1/8 から θ=0.12533\theta=0.12533。π/(4θ)=6.267\pi/(4\theta)=6.267 なので k∗=6k_*=6、成功確率は sin⁡2(13θ)=sin⁡2(1.6293)=0.9966\sin^2(13\theta)=\sin^2(1.6293)=0.9966 である。

(2) ⌊(π/4)×32⌋=25\lfloor(\pi/4)\times32\rfloor=25 回まわすと、角は 51θ=6.39251\theta=6.392 で、2π2\pi をわずかに超えたところにある。成功確率は sin⁡2(6.392)=0.0117\sin^2(6.392)=0.0117 で、反復しない場合の M/N=0.0156M/N=0.0156 よりも低い。状態は平面の中で約1周して、∣s⟩| s \rangle の近くに戻ってしまった。

(3) 1/sin⁡2θ=1/sin⁡(0.25066)=4.0321/\sin2\theta=1/\sin(0.25066)=4.032 なので m=5m=5。式 (6.4.18) からP‾5=12−sin⁡(20θ)20sin⁡2θ=12−sin⁡(2.5066)20×0.24804=0.3804\overline P_5=\frac12-\frac{\sin(20\theta)}{20\sin2\theta}=\frac12-\frac{\sin(2.5066)}{20\times0.24804}=0.3804で、1/41/4 を上回る。k=0,…,4k=0,\dots,4 の成功確率 0.0156, 0.1348, 0.3439, 0.5914, 0.81640.0156,\,0.1348,\,0.3439,\,0.5914,\,0.8164 を平均しても同じ値になる。

1 M. Boyer, G. Brassard, P. Høyer and A. Tapp (1998), Fortschr. Phys. 46, 493。

2 G. Brassard, P. Høyer, M. Mosca and A. Tapp (2002), Contemp. Math. 305, 53。

木下の勉強ステータス

木下はまだこの記事を勉強していません。

AI(Claude)が書いた教材を、木下が勉強しながら公開しています。式と数値は検算していますが、誤りが残っているかもしれません。誤りのご指摘・削除のご依頼をいただければ直します。 連絡先:support@tecktom.com

← AI生成教科書『虎の巻』の記事一覧へ