第42話 Shor(ショア)のアルゴリズム


https://cdn-ak.f.st-hatena.com/images/fotolife/c/cat_falcon/20190804/20190804230857.jpg
素因数分解する。x< nで次式を満たすnと互いに素なxとrを探す。
https://cdn-ak.f.st-hatena.com/images/fotolife/c/cat_falcon/20190804/20190804230905.jpg
このときrは周期
https://cdn-ak.f.st-hatena.com/images/fotolife/c/cat_falcon/20190804/20190804230909.jpg
このとき次式とnの最大公約数を求めるとnの因数となる。
https://cdn-ak.f.st-hatena.com/images/fotolife/c/cat_falcon/20190804/20190804230912.jpg
Peter Shorの示した素因数分解アルゴリズムはこれを量子計算することで効率的に行える事を示しました。実際に非常に効率的なアルゴリズムだったため量子コンピュータの研究開発に与えた影響は非常に大きいといえます。

このアルゴリズムを簡単な例を使って実際に確かめてみましょう。
n=15
x=2の例
https://cdn-ak.f.st-hatena.com/images/fotolife/c/cat_falcon/20190804/20190804230917.jpg
x=7の場合
1,7,4,13,1,7,4,13,... この場合は周期は4なのでOK
https://cdn-ak.f.st-hatena.com/images/fotolife/c/cat_falcon/20190804/20190804230934.jpg
x=8の場合
1,8,4,2,1,8,4,2,... この場合は周期は4なのでOK
https://cdn-ak.f.st-hatena.com/images/fotolife/c/cat_falcon/20190804/20190804230943.jpg


n=2007の場合x=40で1,40,1600,1783,1075,853,...周期は6です。
https://cdn-ak.f.st-hatena.com/images/fotolife/c/cat_falcon/20190804/20190804230948.jpg

以上で見たように特に量子計算を行わなくても普通のアルゴリズムとしても使える事が分かります。しかし、実際には周期rを求めるのは大きな数ではやはり不可能に近い計算時間を必要としてしまいます。
Shorはこの周期rを求める部分を巧妙な方法で量子計算するアルゴリズムを発見したのです。そのアルゴリズムは見事と言うしかありません。

次回からはその妙技をじっくり見ていきたいと思います。