tecktom.com

位数発見は UaU_a の位相推定である

2026年10月15日8分で読めますAI生成教科書『虎の巻』第6部 第3章 Shor のアルゴリズム
目次
  1. 掛け算のユニタリと固有ベクトル
  2. 回路
  3. 出力の分布
  4. 木下の層

AI 生成・木下が未勉強

相対エントロピーから情報と物理を組み立てる 第6部 第3章 §6.3.2 ★★★ 掛け算の置換 UaU_a の固有値は e2πis/r\mathrm{e}^{2\pi\mathrm{i} s/r}。固有ベクトルの和が ∣1⟩| 1 \rangle なので、準備の難しい固有ベクトルを作らずに位相推定ができる

掛け算のユニタリと固有ベクトル

nn 量子ビットのレジスタの計算基底 ∣y⟩| y \rangle(0≤y<2n0\le y<2^n)に対し、

Ua∣y⟩={∣ay mod N⟩(0≤y<N)∣y⟩(N≤y<2n)(6.3.3)U_a| y \rangle =\begin{cases}| ay\bmod N \rangle & (0\le y<N)\\ | y \rangle & (N\le y<2^n)\end{cases}\tag{6.3.3}

と定める。aa が NN と互いに素なので y↦ay mod Ny\mapsto ay\bmod N は {0,…,N−1}\{0,\dots,N-1\} の並べ替えで、UaU_a は置換行列、したがってユニタリである。

∣1⟩| 1 \rangle に UaU_a を繰り返し当てると ∣1⟩,∣a⟩,∣a2⟩,…| 1 \rangle ,| a \rangle ,| a^2 \rangle ,\dots( mod N\bmod N)を巡り、rr 回で戻る。この rr 個の基底が張る部分空間の上で UaU_a は巡回置換で、その固有ベクトルは

∣us⟩=1r∑k=0r−1e−2πisk/r∣ak mod N⟩,s=0,1,…,r−1(6.3.4)| u_s \rangle =\frac{1}{\sqrt r}\sum_{k=0}^{r-1}\mathrm{e}^{-2\pi\mathrm{i} sk/r}| a^k\bmod N \rangle ,\qquad s=0,1,\dots,r-1\tag{6.3.4}

である。実際、UaU_a を当てると ∣ak⟩| a^k \rangle が ∣ak+1⟩| a^{k+1} \rangle に移るので、和の添字を k′=k+1k'=k+1 に付け替えると

Ua∣us⟩=1r∑k′=1re−2πis(k′−1)/r∣ak′ mod N⟩=e2πis/r∣us⟩U_a| u_s \rangle =\frac1{\sqrt r}\sum_{k'=1}^{r}\mathrm{e}^{-2\pi\mathrm{i} s(k'-1)/r}| a^{k'}\bmod N \rangle =\mathrm{e}^{2\pi\mathrm{i} s/r}| u_s \rangle

となる(k′=rk'=r の項は ar≡1a^r\equiv1 なので k′=0k'=0 の項と同じ)。固有値の位相は φs=s/r\varphi_s=s/r で、位相の分母が求めたい位数である。

固有ベクトル ∣us⟩| u_s \rangle そのものを準備するには rr を知っている必要がある。ところが式 (6.3.4) を ss について足すと、k≠0k\neq0 の項は1の rr 乗根の和として消え、

1r∑s=0r−1∣us⟩=∣1⟩(6.3.5)\frac1{\sqrt r}\sum_{s=0}^{r-1}| u_s \rangle =| 1 \rangle\tag{6.3.5}

が残る。簡単に準備できる ∣1⟩| 1 \rangle が、rr 個の固有ベクトルの等しい重みの重ね合わせになっている。∣1⟩| 1 \rangle を入れて位相推定を走らせると、固有ベクトルが互いに直交しているので、結果は「ss を {0,…,r−1}\{0,\dots,r-1\} から一様に選び、∣us⟩| u_s \rangle で位相推定をした」ときの分布に一致する。ss が何になるかは選べないが、どの ss でも位相 s/rs/r の分母に rr が含まれている。

回路

位相推定(第6部第2章)は、第1のレジスタの tt 個の量子ビットに Hadamard ゲートを当て、jj 番目の量子ビットで制御した Ua2jU_a^{2^j} を第2のレジスタに当て、第1のレジスタに逆量子 Fourier 変換を当てて測る(図 6.3.1)。制御した Ua2jU_a^{2^j} を全部当てた直後の状態は

12t/2∑x=02t−1∣x⟩∣ax mod N⟩(6.3.6)\frac{1}{2^{t/2}}\sum_{x=0}^{2^t-1}| x \rangle | a^x\bmod N \rangle\tag{6.3.6}

で、第2のレジスタに関数 f(x)=ax mod Nf(x)=a^x\bmod N の値が重ね合わせで書かれている。ff は周期 rr の関数なので、この章の問題は「関数の周期を求める問題」とも言える。

Ua2jU_a^{2^j} を「UaU_a を 2j2^j 回」当てると手間が 2t2^t に比例してしまう。しかし Ua2j=Ua2j mod NU_a^{2^j}=U_{a^{2^j}\bmod N} で、a2j mod Na^{2^j}\bmod N は前の値を2乗して NN で割る操作(反復2乗)を jj 回行えば古典の計算で求まる。したがって各ゲートは「決まった数 a2j mod Na^{2^j}\bmod N を掛けて NN で割った余りを取る」1回の掛け算の回路で済む。

図

図 6.3.1 位数を求める回路。上の tt 量子ビットが位相を書き込む第1のレジスタ、下の nn 量子ビットが ∣1⟩| 1 \rangle から始める第2のレジスタ。jj 番目の量子ビットで制御した Ua2jU_a^{2^j} は、古典の計算で先に求めた a2j mod Na^{2^j}\bmod N を掛ける1回の掛け算の回路である。第2のレジスタは測らなくてよい。

出力の分布

∣us⟩| u_s \rangle に対する位相推定で mm を得る確率は、第6部第2章の式 (6.2.8) で求めたとおり

P(m ∣ s)=Ft(sr−m2t),Ft(δ)≔∣12t∑x=02t−1e2πixδ∣2=sin⁡2(π2tδ)22tsin⁡2(πδ)(6.3.7)P(m\,|\,s)=F_t\Bigl(\frac sr-\frac m{2^t}\Bigr),\qquad F_t(\delta)\coloneqq\biggl|\frac1{2^t}\sum_{x=0}^{2^t-1}\mathrm{e}^{2\pi\mathrm{i} x\delta}\biggr|^2=\frac{\sin^2(\pi2^t\delta)}{2^{2t}\sin^2(\pi\delta)}\tag{6.3.7}

である。∣1⟩| 1 \rangle から始めると ss が一様に混ざるので、出力 mm の分布は

P(m)=1r∑s=0r−1Ft(sr−m2t)(6.3.8)P(m)=\frac1r\sum_{s=0}^{r-1}F_t\Bigl(\frac sr-\frac m{2^t}\Bigr)\tag{6.3.8}

になる。Ft(δ)F_t(\delta) は δ=0\delta=0 で 11、δ\delta が 1/2t1/2^t の整数倍(00 以外)で 00 になる、幅 1/2t1/2^t の鋭い山である。したがって P(m)P(m) はm≈2ts/rm\approx2^ts/r の rr か所に山を持つ。rr が 2t2^t を割り切るときは山の位置がちょうど整数になり、P(m)P(m) はそこに 1/r1/r ずつ乗った分布になる。図 6.3.2 は N=21N=21、a=2a=2(r=6r=6)、t=9t=9 の分布で、式 (6.3.8) と、状態ベクトルを直接計算した分布が一致することを検算で確かめてある。

図

図 6.3.2 N=21N=21、a=2a=2(位数 r=6r=6)、t=9t=9 の出力の分布 P(m)P(m)(確率 0.0020.002 未満の mm は省いた)。山は 512s/6512s/6 の近くに立つ。s=0,3s=0,3 では 512s/6512s/6 が整数なので山は1本で高さ 1/61/6、s=1,2,4,5s=1,2,4,5 では最も近い整数の確率が 0.1140.114 で、両隣にすそが残る。

例題 6.3.2 N=15N=15、a=7a=7 の固有ベクトルと出力 ★★

オリジナルN=15N=15、a=7a=7 とする。

  1. (1) ∣1⟩| 1 \rangle の軌道を書き、固有ベクトル ∣u0⟩,…,∣u3⟩| u_0 \rangle ,\dots,| u_3 \rangle と固有値を求めよ。
  2. (2) 式 (6.3.5) を成分で確かめよ。
  3. (3) t=3t=3 のとき、出力 mm の分布を求めよ。tt をどれだけ増やしても分布の形が変わらない理由を述べよ。
解答

(1) 7⋅1=77\cdot1=7、7⋅7=49≡47\cdot7=49\equiv4、7⋅4=28≡137\cdot4=28\equiv13、7⋅13=91≡17\cdot13=91\equiv1 なので軌道は 1→7→4→13→11\to7\to4\to13\to1、r=4r=4 である。式 (6.3.4) で e−2πis/4=(−i)s\mathrm{e}^{-2\pi\mathrm{i} s/4}=(-\mathrm{i})^s なので

∣us⟩=12(∣1⟩+(−i)s∣7⟩+(−1)s∣4⟩+is∣13⟩),U7∣us⟩=is∣us⟩| u_s \rangle =\tfrac12\bigl(| 1 \rangle +(-\mathrm{i})^s| 7 \rangle +(-1)^s| 4 \rangle +\mathrm{i}^s| 13 \rangle \bigr),\qquad U_7| u_s \rangle =\mathrm{i}^s| u_s \rangle

で、固有値は 1,i,−1,−i1,\mathrm{i},-1,-\mathrm{i} である。

(2) ∣7⟩| 7 \rangle の係数の和は 12∑s(−i)s=12(1−i−1+i)=0\frac12\sum_s(-\mathrm{i})^s=\frac12(1-\mathrm{i}-1+\mathrm{i})=0、∣4⟩| 4 \rangle と ∣13⟩| 13 \rangle も同様に 00 で、∣1⟩| 1 \rangle の係数の和は 12⋅4=2\frac12\cdot4=2 である。12∑s∣us⟩=∣1⟩\frac12\sum_s| u_s \rangle =| 1 \rangle となり、式 (6.3.5) が成り立つ。

(3) 位相 s/4s/4 は 33 ビットの2進小数 0.000, 0.010, 0.100, 0.1100.000,\,0.010,\,0.100,\,0.110 でちょうど書けるので、∣us⟩| u_s \rangle に対する位相推定は確率1で m=8s/4=2sm=8s/4=2s を出す。ss が一様に混ざるので P(m)=1/4P(m)=1/4(m=0,2,4,6m=0,2,4,6)、他の mm は 00 である。tt を増やしても r=4r=4 が 2t2^t を割り切る限り位相は tt ビットで正確に書けて、m=2ts/4m=2^ts/4 に 1/41/4 ずつ乗る形は変わらない(t=8t=8 なら m=0,64,128,192m=0,64,128,192)。rr が2の冪のときだけ起こる特別な場合で、一般の rr では図 6.3.2 のようなすそが残る。

木下の勉強ステータス

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

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

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