tsujimotterの下書きノート

このブログは「tsujimotterのノートブック」の下書きです。数学の勉強過程や日々思ったことなどをゆるーくメモしていきます。下書きなので適当です。

記事一覧はこちらです。このブログの趣旨はこちら

メインブログである「tsujimotterのノートブログ」はこちら

Shorのアルゴリズム(勉強過程)

量子コンピュータが話題になっている昨今ですが、そのきっかけの一つとなったのは、素因数分解ができるという量子アルゴリズム「Shorのアルゴリズム」でしょう。

以前から、その仕組みを理解したいと思っていたのですが、よいきっかけがあったので少しずつ勉強してみようと思います。その勉強過程をここにまとめます。現時点での理解を書いているので、間違っているかもしれませんから信用はなさらないでください。

数論パート

Shorのアルゴリズムの問題設定としては、 N という自然数の約数を求めたいという問題です。

まず、ランダムに  a < N をとってきます。これが  N の約数ならもうここでおしまいです。そうでない場合も、もし  \operatorname{gcd}(a,  N) > 1 であれば、それが  N の約数なのでおしまいです。

そこで、 \operatorname{gcd}(a, N) = 1 の場合を考えます。そんなときでも、 a \bmod{N} の位数が分かれば、非自明な因数が得られます。その方法については、本当に初等整数論的に理解できます。

 a^r \equiv 1 \pmod{m} なる最小の  r のことを \bmod{N} の位数といいます。 a N と互いに素であれば、 (\mathbb{Z}/N\mathbb{Z})^\times が群を成すことから必ず位数を持ちます。これが計算でき、かつ、 r が偶数である場合、  r/2 は整数になりますので  a^{r/2} が計算できます。このことを念頭に

 a^r - 1 = (a^{r/2} - 1)(a^{r/2} + 1) \equiv 0 \pmod{N}

なる因数分解を考えます。すると、 (a^{r/2} - 1)(a^{r/2} + 1) N で割り切れることになります。したがって、 a^{r/2} - 1 a^{r/2} + 1 の少なくともどちらか一方に  N の非自明な約数があるわけですね。

なるほど、たしかに  a の位数  r が見つかって、それが偶数であれば  N の非自明な約数が見つかるわけですね。 r が奇数のときは、残念ながらこの方法では約数を見つけられませんので、 a を棄却して再度やり直しです。偶数位数の元は必ず存在しますので、いつかはいい感じの  a が見つかります。

そこで、 a \bmod{N} の位数を探す旅に出るわけですね。ここまでは古典コンピュータで計算できる話なので、以降が本質的に量子アルゴリズムの領域となります。

量子パート

(ここの章がまだよくわかっていない)
 a \bmod{N} の位数を計算するのは、古典コンピュータにおいては難しい問題です。一方、量子アルゴリズムにはうまい方法があるというのです。

一般に量子ゲートとは、ブラケット  \left|\alpha\right\rangle から  \left|\beta \right\rangle へ変換するユニタリ演算子

 U\left|\alpha\right\rangle = \left|\beta\right\rangle

です。量子状態は絶対値を規格化する必要があるので、その間の変換ということで自動的にユニタリになるそうです。

さて、

 U_{x, N} \left|\alpha\right\rangle = \left|\alpha x \bmod{N} \right\rangle

なるユニタリ変換を考えます。 \bmod{N} x 倍する変換ですね。

その固有状態を  \left|u_s\right\rangle 0\leq s \leq r-1)とすると、

 \displaystyle U_{x, N} \left|u_s\right\rangle = \exp\left(2\pi i \frac{s}{r}\right) \left|u_s\right\rangle

となり、固有値の位相の部分に  s/r が出てきます。

そこで、ユニタリ行列の固有値の位相を取り出してくるようなゲートを作ってあげれば良いということになります。その方法が量子位相推定アルゴリズム(QPE)です。先日の日曜数学会でKumaさんという方が、この内容について発表されていました。

ユニタリ行列があったときに、その位相を2進展開して  0.b_1b_2b_3\ldots のように表すわけです。段階的にゲートをかけることで、その各桁を小数第一位から順に取り出すことができるというもののようです。


QPEを使えば、位相  s/r の小数近似が得られますよね。あとは、それを分数の形に戻してあげればよい。そんなときに使えるのが連分数展開です。

連分数展開を使って、小数の近似をする方法については、以前こちらで紹介しました。
www.youtube.com


連分数の係数が一定以上大きくなるところまで計算してあげれば良さそうですね。こうして得られる分数  s'/r' の分母として  r' が求まりますが、 r' が位数と一致すればOK。実際  a^{r'} \equiv 1 \pmod{N} になることを計算してみれば良いわけですね。


そんなわけで、もっとも本質的な部分は量子位相推定ということになりそうです。実際、Kumaさんによると、量子アルゴリズムの多くはこれに帰着されるとのことなので、QPEを勉強することは量子アルゴリズムの理解に有効そうです。

それでは今日はこの辺で。

参考文献

まだ一部しか読んでないですが、この本がおすすめとのことです。

数論パートはこちらのスライドを参考にしました。

www.slideshare.net