はじめに
この記事は量子コンピュータによる素因数分解のアルゴリズムである「Shorのアルゴリズム」の解説記事第4回目です。1-3回目は以下:
本記事ではShorのアルゴリズムの基本的な方針の説明、およびこれに関連した整数論まわりの定理に関して述べます。実はShorのアルゴリズムの基本方針はそれほど難しくないです。
以下「多項式時間で計算可能」とは、整数を2進数表示したとき、計算量がその桁数の多項式で表されるという意味です。
本記事はRef.Hosoyaを元に書かれています。
Shorのアルゴリズムの基本的な方針
整数を因数分解します。
未満でと互いに素である整数を適当に選びます。そして
を満たすを探します。このようなで最も小さいものは位数(order)と呼ばれますが、ここでは必ずしも最小である必要はないです。
が求まり、かつそれが偶数だったとしましょう。偶数になるのは偶然に頼ることになります。もしが偶数だったら、を以下のように因数分解できます:
よってEq.(1)より
です。いま正の整数との最大公約数をで表しましょう(greatest common divisor, gcd)。上の式より、がの倍数でない限り、のどちらかはの因数を与えます\。
ということで、もしも以下の3つの条件:
素因数分解が多項式時間で行える条件
- Eq.(1)を満たすを多項式時間で求めることができる
- 最大公約数(gcd)を多項式時間で求めることができる
- 試行錯誤が必要な部分:「と互いに素なを選ぶ」「が偶数」「はどちらもの倍数ではない」は多項式時間での計算を可能にするほど十分高確率で起きる
を満たすことができるなら、素因数分解が多項式時間で行えることになります。
そして量子コンピュータを用いればこれらを満たすことができます。正確に言うと、量子コンピュータが必要なのは1.のみです。以下各条件が満たされることに関して述べます。
条件1.に関して
1.に関しては、3回の記事で議論してきたべき剰余を計算する量子回路および量子フーリエ変換を行う量子回路で行えます。Shorのアルゴリズムにおいて量子コンピュータが担う課題は、Eq.(1)を満たすの推定です。これはまた今後の記事で述べます。
条件2.に関して
2.はユークリッドの互除法により多項式時間で行えるので量子コンピュータは必要ありません。最大公約数を求めるのに素因数分解はいりません。よく知られているように以下の定理が成立します:
2つのについて、のによる剰余をとすると
が成立する。
とする。
割るの商をとする。すなわち
とする。はとのgcdなので、Eq.(thm1.2)よりはの公約数(common divisor, cd)である。よってはとのcdである。ここでだから
一方はとのgcdなので、Eq.(thm1.1)よりはとのcd。そしてなので
Eq.(thm1.3)(thm1.4)より。ゆえに。
これに基づいた最大公約数の求め方がユークリッドの互除法です:
ユークリッドの互除法その1
のgcdを求めるには、まずを計算する。そしてをと、をと呼び直し、同様にを計算する。これを繰り返し、がゼロになったときのが最初ののgcd。
具体的にを計算します。、なのでです。
「ユークリッドの互除法その1」は以下と等価です:
ユークリッドの互除法その2
とを作る。そして大きい方から小さい方を引く。「大きい方から小さい方を引いたもの」とのうち、大きい方を、小さい方をと呼び直し、さらにとを構成する。これを繰り返すと有限回でとなるが、ゼロになる直前のの値がgcd。
具体的にを計算します。とではが大きいので、とを得る。、と呼び直してとを得る。なので、がgcd。
このようなgcdの計算は、計算過程を見てもわかるように高速に(=多項式時間で)実行できます。これはShorのアルゴリズムにおける重要な事実です。
条件3.に関して
まず「と互いに素な正の整数を選ぶ」に関して。オイラー関数を導入します:
オイラー関数 1以上n以下の自然数でと互いに素なものの個数(※1は1以外とは常に素)
「と互いに素なを選ぶ」が高確率で成功するのは以下の定理によります(Ref.Hosoyaから引用。証明等はRef.Wikipediaから辿ってみてください):
よって回程度試行すれば、1回くらいはと互いに素な数に行き当たります。
「Eq.(1)を満たすが偶数」「はどちらもの倍数ではない」に関して高確率で成功することは以下の定理で保証されます(Ref.Hosoyaから引用。証明は例えばRef.Ekertにあるようです):
与えられた奇数が素数のべきでない時に、より小さいと互いに素な数たちのうちで、その位数が偶数でしかもであるようなは半数以上ある:
これに関してコメントを加えておきます。いま位数を改めてとします。このときであることはすぐわかります。すなわちはを満たします。ここでが偶数だったとしましょう。このときなので、です。これは「はどちらもの倍数ではない」に反します。すなわち
ということが言えます。一方位数の奇数倍のについては素因数を計算するのに適しています。いづれにせよ、定理3および上の考察より、「Eq.(1)を満たすが偶数」「はどちらもの倍数ではない」は、多項式時間の計算を邪魔しないほど高確率で起きます。
結論
以上より、条件2.3.は満たされることがわかりました。条件1.「が与えられたとき位数を多項式時間で求めることができる」が達成できることは今後の記事で述べます。
おしまい & つづく。
Appendix: Shorのアルゴリズムまわりの定理
以下、Shorのアルゴリズムに(多かれ少なかれ)関連する定理を適当に挙げていきます。証明はあったりなかったりします。
オイラー関数の具体的な表示
整数のオイラー関数はの素因数分解を用いて表すことができますWikipedia:
- が素数のとき
- が互いに素のとき
- これらより、のように素因数分解したとき
と表せる。
原始根
原始根
素数に対して位数がであるような元のことをの原始根とよぶ。
証明は例えば
原始根(青空学園数学科)
参照のこと。
に関して、をでわった余りはすべて異なり、からまでを巡回する。
以下
原始根の定義と具体例(高校生向け) 高校数学の美しい物語
より。
を原始根とし、かつの中にで割った余りが等しいものがあるとする。いまでとする。このとき
だが、はと互いに素だからである。しかしなのでこれは原始根の定義に反する。ゆえにの中にで割った余りが等しいものはない。ところがは個存在するので、で割った余りはからを巡回する。
中国式剰余定理
中国式剰余定理
とが互いに素とする。このとき
の両方を満たす整数が以上未満の範囲にただ一つ存在する。
- 解の唯一性
2つ以上の解が存在するとする。これらをとする。はどちらの倍数でもあり、かつは互いに素なので、はの倍数。しかしは共に未満であるから、はゼロになる、すなわち。これは仮定に反する - 解の存在
具体的に解を構成する。は互いに素なので、ベズーの定理より(後述)
を満たす整数が存在する。ゆえに
である。ゆえにとすれば
となり、は未満という条件以外の満たすべき性質をもつ。をでわった余りにしておけば、上記性質を満たしかつ未満という満たすべき条件をもつ数が求まる。
ベズーの定理
以下
一次不定方程式ax+by=cの整数解(高校数学の美しい物語)
等より。
正の整数に関し、と()をでわった余りが同じと仮定する。
このときはの倍数。
しかしかつとは素なので矛盾。
→の証明:対偶をとる。とが互いに素でないとき、のcdの1つをとおくとはの倍数となり解を持たない。
←の証明:が互いに素なとき、をで割った余りはすべてことなるので(定理7より)、余りが1となるようなものが存在する。それをとおき、で割った商をとおくと
つまりとなりは整数解になっている。
→の証明:はの倍数なので整数解に対してもの倍数。つまりはの倍数。
←の証明:定理8の結果からは整数解をもつ。両辺を倍して、
も整数解をもつことがわかる。よってがの倍数のとき、両辺を適当に整数倍すれば右辺がとなるのでは整数解をもつ。
古典計算機で素数を確率的に判定するアルゴリズム
Shorのアルゴリズムでは、ある数が素数であるかを判定する必要があります(Ref.Hosoya)。素数を決定論的に多項式時間で判定するアルゴリズムは現在まで知られていません。しかし確率的に多項式時間で判定する方法が存在します。以下はRabinRabinによります(Ref.HosoyaP137 E.2より引用)。
素数判定の確率的アルゴリズム(Ref.HosoyaP137 E.2より引用) より小さい正の整数全体をとする。に依存する「証言関数」があり、次の性質をもつとする:
- が素数ならば
- が合成数ならば
素数判定は以下のようにする。より小さい「証言数」をランダムにえらび
ならばは合成数。一方
ならば確率
でを素数と判断してよい。
ランダムに選ぶ数を増やしていけば、判定を誤る確率はいくらでも小さくなるが、多項式量()だけで十分である。
具体的な証言関数は以下のようにして作ります。
証言関数の具体的な構成(Ref.HosoyaP137 E.2より引用) のように因数2をくくりだして
そうでないとき
と定義する。
以下の定理が知られています:
が素数ならばすべての証言数がを証言し、が合成数ならば以上の証言数がを証言する
これより上の確率的アルゴリズムが成立します。
フェルマーの小定理
以下はでので等しいことを表す。
帰納法で示す。と互いに素である正の整数に関して、なら、両辺でわってとなり、フェルマーの小定理が成立する。そこでを示す。
- ならは明らか。
- のとき命題の成立を仮定する。
である。ここで
でありこれは整数だが、は素数なのででは割られず、必ず因数にをもつ。よって
ゆえになら。
よって帰納法よりすべてのに対して。