Remove ads
素数に関するアルゴリズム ウィキペディアから
AKS素数判定法(AKSそすうはんていほう)は、与えられた自然数が素数であるかどうかを決定的多項式時間で判定できる、世界初のアルゴリズムである。ここで、素数判定法が多項式時間であるとは、与えられた自然数 が素数であるかどうかを判定するのにかかる時間が の多項式を上界とすることをいう。 の多項式ではないことに注意する必要がある。
AKS素数判定法は2002年8月6日に "PRIMES is in P" と題された論文で発表された。Agrawal-Kayal-Saxena 素数判定法としても知られ、論文の著者であるインド工科大学のマニンドラ・アグラワル教授と、2人の学生ニラジュ・カヤル、ナイティン・サクセナの3人の名前から付けられた。
この素数判定法が発見される以前にも、素数の判定方法は多数知られていたが、リーマン予想などの仮説を用いずに、決定的多項式時間で判定できるアルゴリズムは存在しなかった。
素数判定という重要な問題が実際にクラスPに属することを示した点で理論的には大躍進であった。しかし実用的には、多項式の次数が高すぎるので、今まで判定できなかった素数を高速に判定できるようになったわけではない(まだ「一般数体篩法」で因数分解した方がよい)。
AKS素数判定法は、ある意味ではフェルマーテストの改良と見ることができる。
フェルマーテストはこの十分条件によって確率的素数判定を行うものであったが、上は必要条件ではないので、合成数であるにもかかわらずそれを検出できない場合があった。特に、カーマイケル数と呼ばれる合成数が無限個存在し、これらはいかなる を用いても合成数であることを検出できない。
そこで、この条件を次のように改良する。
このことは、二項定理により各次数の係数を評価すれば容易に証明できる。
上の式は、 が恒等的に 0 だと思えばフェルマーの小定理の対偶そのものである。つまり、上の条件による判定はフェルマーテストをより厳密にしたものといえる。
厳密にしたことによりフェルマーテストとは異なり必要十分条件を与えている。したがって上の合同式を真面目に評価してやれば素数性を判定する決定性アルゴリズムができるが、これは時間がかかりすぎる。つまり、最悪の場合 個の係数を評価しなければならないので、これは のビット数に対して指数関数時間である。
そこでもう少し大雑把に評価することにする。具体的には、何らかの小さい をとって を法として評価する。すると、 による剰余は高々 次だから、評価する係数の数を減らすことができる。
しかし、これは「大雑把な評価」である。評価を楽にした分、その精度も落ちている。このままでは、合成数なのに誤って素数であると判定してしまう恐れがある。そこで、パラメータ を動かして、たくさんの に対して上の合同式を評価することで埋め合わせにする。
この発想が、AKSアルゴリズムの肝である。つまり、十分にたくさんの について上の合同式を確かめれば、 を法としたままでも素数性を厳密に判定することができる(これは自明ではないが、証明できる)。そして、 を動かす範囲や適切な の値は に対してそれほど大きくならないので、この方法は最初の合同式を真面目に評価するより速く、多項式時間で動作する。
素数性を判定すべき、2以上の自然数 を入力する。
ただし、上において、
AKSアルゴリズムの時間的計算量は高々 である。
PRIMES is in P の初版では、このアルゴリズムは のアルゴリズムとして提示された。その後の改訂を経て、現在では であることが証明されている。しかし、実際には であろうと考えられている。また、現在の証明は篩理論の高度な結果によっているが、初歩的な代数学の知識だけでも であることは証明できる。
ただし、記法 は、次のように定義される。
即ち、記号 はランダウの記号 O を少しだけ弱めたものである。 ならば、任意の について が成立する(逆は成り立たない)。
したがって、全体の時間は であるといえる。
全体の時間を支配しているのは、第5ステップの時間であり、ひいては の大きさである。したがって、実は は よりも小さく定まるということを証明できれば、計算量の評価を改善することができる。
更に、いくつかの証明されていない仮説を認めるならば、 の評価をより小さくできる。
これらの仮説はともに一般リーマン仮説を認めれば証明できる。多くの数学者がリーマン仮説は正しいと信じていることを考えれば、 つまり、AKSアルゴリズムの時間的計算量が である見込みは高い。
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.