Aks素数判定法: 素数に関するアルゴリズム

AKS素数判定法(AKSそすうはんていほう)は、与えられた自然数が素数であるかどうかを決定的多項式時間で判定できる、世界初のアルゴリズムである。ここで、素数判定法が多項式時間であるとは、与えられた自然数 n が素数であるかどうかを判定するのにかかる時間が log ⁡ ( n ) の多項式を上界とすることをいう。 n の多項式ではないことに注意する必要がある。

AKS素数判定法は2002年8月6日に "PRIMES is in P" と題された論文で発表された。Agrawal-Kayal-Saxena 素数判定法としても知られ、論文の著者であるインド工科大学マニンドラ・アグラワル教授と、2人の学生ニラジュ・カヤルナイティン・サクセナ英語版の3人の名前から付けられた。

この素数判定法が発見される以前にも、素数の判定方法は多数知られていたが、リーマン予想などの仮説を用いずに、決定的多項式時間で判定できるアルゴリズムは存在しなかった。

素数判定という重要な問題が実際にクラスPに属することを示した点で理論的には大躍進であった。しかし実用的には、多項式の次数が高すぎるので、今まで判定できなかった素数を高速に判定できるようになったわけではない(まだ「一般数体篩法」で因数分解した方がよい)。

発想

AKS素数判定法は、ある意味ではフェルマーテストの改良と見ることができる。

フェルマーの小定理対偶である次のような命題を考える。

    Aks素数判定法: 発想, アルゴリズム, 時間的計算量 , Aks素数判定法: 発想, アルゴリズム, 時間的計算量 互いに素自然数であるとする。
      Aks素数判定法: 発想, アルゴリズム, 時間的計算量 
    であるとき、Aks素数判定法: 発想, アルゴリズム, 時間的計算量 合成数である。

フェルマーテストはこの十分条件によって確率的素数判定を行うものであったが、上は必要条件ではないので、合成数であるにもかかわらずそれを検出できない場合があった。特に、カーマイケル数と呼ばれる合成数が無限個存在し、これらはいかなる Aks素数判定法: 発想, アルゴリズム, 時間的計算量  を用いても合成数であることを検出できない。

そこで、この条件を次のように改良する。

    Aks素数判定法: 発想, アルゴリズム, 時間的計算量 , Aks素数判定法: 発想, アルゴリズム, 時間的計算量  が互いに素な自然数であるとする。
      Aks素数判定法: 発想, アルゴリズム, 時間的計算量 
    であることは、 Aks素数判定法: 発想, アルゴリズム, 時間的計算量  は合成数であることと同値である。

このことは、二項定理により各次数の係数を評価すれば容易に証明できる。

上の式は、Aks素数判定法: 発想, アルゴリズム, 時間的計算量  が恒等的に 0 だと思えばフェルマーの小定理の対偶そのものである。つまり、上の条件による判定はフェルマーテストをより厳密にしたものといえる。

厳密にしたことによりフェルマーテストとは異なり必要十分条件を与えている。したがって上の合同式を真面目に評価してやれば素数性を判定する決定性アルゴリズムができるが、これは時間がかかりすぎる。つまり、最悪の場合 Aks素数判定法: 発想, アルゴリズム, 時間的計算量  個の係数を評価しなければならないので、これは Aks素数判定法: 発想, アルゴリズム, 時間的計算量  のビット数に対して指数関数時間である。

そこでもう少し大雑把に評価することにする。具体的には、何らかの小さい Aks素数判定法: 発想, アルゴリズム, 時間的計算量  をとって Aks素数判定法: 発想, アルゴリズム, 時間的計算量  を法として評価する。すると、Aks素数判定法: 発想, アルゴリズム, 時間的計算量  による剰余は高々 Aks素数判定法: 発想, アルゴリズム, 時間的計算量  次だから、評価する係数の数を減らすことができる。

    Aks素数判定法: 発想, アルゴリズム, 時間的計算量 

しかし、これは「大雑把な評価」である。評価を楽にした分、その精度も落ちている。このままでは、合成数なのに誤って素数であると判定してしまう恐れがある。そこで、パラメータ Aks素数判定法: 発想, アルゴリズム, 時間的計算量  を動かして、たくさんの Aks素数判定法: 発想, アルゴリズム, 時間的計算量  に対して上の合同式を評価することで埋め合わせにする。

この発想が、AKSアルゴリズムの肝である。つまり、十分にたくさんの Aks素数判定法: 発想, アルゴリズム, 時間的計算量  について上の合同式を確かめれば、Aks素数判定法: 発想, アルゴリズム, 時間的計算量  を法としたままでも素数性を厳密に判定することができる(これは自明ではないが、証明できる)。そして、Aks素数判定法: 発想, アルゴリズム, 時間的計算量  を動かす範囲や適切な Aks素数判定法: 発想, アルゴリズム, 時間的計算量  の値は Aks素数判定法: 発想, アルゴリズム, 時間的計算量  に対してそれほど大きくならないので、この方法は最初の合同式を真面目に評価するより速く、多項式時間で動作する。


アルゴリズム

素数性を判定すべき、2以上の自然数 Aks素数判定法: 発想, アルゴリズム, 時間的計算量  を入力する。

  1. もし、Aks素数判定法: 発想, アルゴリズム, 時間的計算量 累乗数であるならば「合成数である」と出力してアルゴリズムを終了する。
  2. Aks素数判定法: 発想, アルゴリズム, 時間的計算量  になる最小の Aks素数判定法: 発想, アルゴリズム, 時間的計算量  を見つける。
  3. もし、ある Aks素数判定法: 発想, アルゴリズム, 時間的計算量  に対して Aks素数判定法: 発想, アルゴリズム, 時間的計算量  ならば、「合成数である」と出力してアルゴリズムを終了する。
  4. もし、Aks素数判定法: 発想, アルゴリズム, 時間的計算量  ならば、「素数である」と出力してアルゴリズムを終了する。
  5. Aks素数判定法: 発想, アルゴリズム, 時間的計算量  から Aks素数判定法: 発想, アルゴリズム, 時間的計算量  まで、順に Aks素数判定法: 発想, アルゴリズム, 時間的計算量  を動かすものとする。もしAks素数判定法: 発想, アルゴリズム, 時間的計算量 ならば、「合成数である」と出力してアルゴリズムを終了する。
  6. 「素数である」と出力してアルゴリズムを終了する。

ただし、上において、

  • Aks素数判定法: 発想, アルゴリズム, 時間的計算量 Aks素数判定法: 発想, アルゴリズム, 時間的計算量 , Aks素数判定法: 発想, アルゴリズム, 時間的計算量 最大公約数
  • Aks素数判定法: 発想, アルゴリズム, 時間的計算量 Aks素数判定法: 発想, アルゴリズム, 時間的計算量  を法とした Aks素数判定法: 発想, アルゴリズム, 時間的計算量 位数、つまり Aks素数判定法: 発想, アルゴリズム, 時間的計算量  なる最小の自然数 Aks素数判定法: 発想, アルゴリズム, 時間的計算量  である。
  • Aks素数判定法: 発想, アルゴリズム, 時間的計算量 ガウス記号
  • Aks素数判定法: 発想, アルゴリズム, 時間的計算量 オイラーのφ関数

解説

  1. 第5ステップで用いている判定法は、累乗数についてはうまく働かない。累乗数であるならばすなわち合成数なのだから、最初のステップにおいて累乗数であると判明した場合には「合成数である」と出力して終了する。
  2. 次に、Aks素数判定法: 発想, アルゴリズム, 時間的計算量  の位数が十分に大きくなるような法 Aks素数判定法: 発想, アルゴリズム, 時間的計算量  を求める。このような Aks素数判定法: 発想, アルゴリズム, 時間的計算量  が存在するのかどうかが問題となるが、最小公倍数に関する議論から Aks素数判定法: 発想, アルゴリズム, 時間的計算量  までに存在することが示される。
  3. その次に、Aks素数判定法: 発想, アルゴリズム, 時間的計算量  が実際に Aks素数判定法: 発想, アルゴリズム, 時間的計算量 であるかを確かめている。これは第5ステップが正しく動作するために必要である。Aks素数判定法: 発想, アルゴリズム, 時間的計算量  に属する必要十分条件が (n, r) = 1 であるが、この段階で最大公約数が 1 でなかったなら、それはつまり Aks素数判定法: 発想, アルゴリズム, 時間的計算量  の非自明な因数が発見されたということであるから、「合成数である」と出力して終了する。
  4. 第4ステップでは、もしこの段階で Aks素数判定法: 発想, アルゴリズム, 時間的計算量  であったならば、第3ステップにおいて Aks素数判定法: 発想, アルゴリズム, 時間的計算量 Aks素数判定法: 発想, アルゴリズム, 時間的計算量  までのすべての数と互いに素であると確認したことになるから、「素数である」と出力して終了する。これは、Aks素数判定法: 発想, アルゴリズム, 時間的計算量  が非常に小さい数の場合に発生するケースであり、400 より大きい Aks素数判定法: 発想, アルゴリズム, 時間的計算量  についてはあまり起こらない。
  5. 第5ステップは、アルゴリズムの中心的な部分である。ここでいずれかの Aks素数判定法: 発想, アルゴリズム, 時間的計算量  についてこの合同式が不成立であれば、Aks素数判定法: 発想, アルゴリズム, 時間的計算量  は合成数である。このことは二項定理を用いて係数を真面目に評価すれば容易に証明できる。
  6. 第5ステップにおいて、十分に多くの Aks素数判定法: 発想, アルゴリズム, 時間的計算量  を用いても合成数であることを検出できなかったなら、そのとき Aks素数判定法: 発想, アルゴリズム, 時間的計算量  は実際に素数である。このことがAKSアルゴリズムの中核であり、PRIMES is in P の半ばはその証明に費やされている。

時間的計算量

AKSアルゴリズムの時間的計算量は高々 Aks素数判定法: 発想, アルゴリズム, 時間的計算量  である。

PRIMES is in P の初版では、このアルゴリズムは Aks素数判定法: 発想, アルゴリズム, 時間的計算量  のアルゴリズムとして提示された。その後の改訂を経て、現在では Aks素数判定法: 発想, アルゴリズム, 時間的計算量  であることが証明されている。しかし、実際には Aks素数判定法: 発想, アルゴリズム, 時間的計算量  であろうと考えられている。また、現在の証明は篩理論の高度な結果によっているが、初歩的な代数学の知識だけでも Aks素数判定法: 発想, アルゴリズム, 時間的計算量  であることは証明できる。

ただし、記法 Aks素数判定法: 発想, アルゴリズム, 時間的計算量  は、次のように定義される。

    Aks素数判定法: 発想, アルゴリズム, 時間的計算量 

即ち、記号 Aks素数判定法: 発想, アルゴリズム, 時間的計算量 ランダウの記号 O を少しだけ弱めたものである。Aks素数判定法: 発想, アルゴリズム, 時間的計算量  ならば、任意の Aks素数判定法: 発想, アルゴリズム, 時間的計算量  について Aks素数判定法: 発想, アルゴリズム, 時間的計算量  が成立する(逆は成り立たない)。

各ステップの評価

  1. p進ニュートン法を用いれば、各自然数 Aks素数判定法: 発想, アルゴリズム, 時間的計算量  について Aks素数判定法: 発想, アルゴリズム, 時間的計算量 Aks素数判定法: 発想, アルゴリズム, 時間的計算量  で計算できる。Aks素数判定法: 発想, アルゴリズム, 時間的計算量  なる Aks素数判定法: 発想, アルゴリズム, 時間的計算量  の上界は Aks素数判定法: 発想, アルゴリズム, 時間的計算量  であるから、最初のステップは Aks素数判定法: 発想, アルゴリズム, 時間的計算量  で動作する。
  2. 第2ステップは、Aks素数判定法: 発想, アルゴリズム, 時間的計算量  であったことを思い出せば、Aks素数判定法: 発想, アルゴリズム, 時間的計算量  で動作するといえる。
  3. 第3ステップでは、ユークリッドの互除法を用いれば最大公約数 1 つを Aks素数判定法: 発想, アルゴリズム, 時間的計算量  で計算できる。これを Aks素数判定法: 発想, アルゴリズム, 時間的計算量  回繰り返すので、第3ステップにかかる時間は Aks素数判定法: 発想, アルゴリズム, 時間的計算量  である。
  4. 第4ステップは、単に比較するだけであるから Aks素数判定法: 発想, アルゴリズム, 時間的計算量  である。
  5. 第5ステップでは、Aks素数判定法: 発想, アルゴリズム, 時間的計算量  で考えているので多項式の次数は高々 Aks素数判定法: 発想, アルゴリズム, 時間的計算量  であり、Aks素数判定法: 発想, アルゴリズム, 時間的計算量  で考えているので係数は高々 Aks素数判定法: 発想, アルゴリズム, 時間的計算量  である。高速フーリエ変換を用いれば、このような多項式のAks素数判定法: 発想, アルゴリズム, 時間的計算量  で計算される。繰り返しの回数をかければ、第5ステップは Aks素数判定法: 発想, アルゴリズム, 時間的計算量  で動作するといえる。
  6. 第6ステップは、定数時間である。

したがって、全体の時間は Aks素数判定法: 発想, アルゴリズム, 時間的計算量  であるといえる。

評価の改良

全体の時間を支配しているのは、第5ステップの時間であり、ひいては Aks素数判定法: 発想, アルゴリズム, 時間的計算量  の大きさである。したがって、実は Aks素数判定法: 発想, アルゴリズム, 時間的計算量 Aks素数判定法: 発想, アルゴリズム, 時間的計算量  よりも小さく定まるということを証明できれば、計算量の評価を改善することができる。

  • 篩理論より Aks素数判定法: 発想, アルゴリズム, 時間的計算量  であるということが分かるので、実際にはアルゴリズムは Aks素数判定法: 発想, アルゴリズム, 時間的計算量  で動作する。

更に、いくつかの証明されていない仮説を認めるならば、Aks素数判定法: 発想, アルゴリズム, 時間的計算量  の評価をより小さくできる。

  • アルチン予想を認めるならば Aks素数判定法: 発想, アルゴリズム, 時間的計算量  である。
  • ソフィー・ジェルマン素数の密度予想が正しいと仮定すれば、Aks素数判定法: 発想, アルゴリズム, 時間的計算量  である。

これらの仮説はともに一般リーマン仮説を認めれば証明できる。多くの数学者がリーマン仮説は正しいと信じていることを考えれば、Aks素数判定法: 発想, アルゴリズム, 時間的計算量  つまり、AKSアルゴリズムの時間的計算量が Aks素数判定法: 発想, アルゴリズム, 時間的計算量  である見込みは高い。

関連項目

外部リンク

Tags:

Aks素数判定法 発想Aks素数判定法 アルゴリズムAks素数判定法 時間的計算量Aks素数判定法 関連項目Aks素数判定法 外部リンクAks素数判定法アルゴリズム多項式多項式時間決定的アルゴリズム素数自然数順序集合

🔥 Trending searches on Wiki 日本語:

廷臣八十八卿列参事件川村忠平岩紙マイク・トラウト未来への10カウント金正恩リンダカラー∞前田拳太郎藤本万梨乃及川光博八神純子SUPER EIGHTピンクの電話吉高由里子菊池亮太田中達也 (1982年生のサッカー選手)孫正義ブルーロックNiziU伊藤沙莉吉川赳川口春奈ウィリアム・アダムス進撃の巨人石田ゆり子松木玖生高野洸シマツナソ小池百合子FiVE小松菜奈持田昌典田中好子山本裕典アーロン・ジャッジ林遣都昭和天皇あぶない刑事の登場人物柴咲コウスターダストレビューBE:FIRST木戸大聖昭和不老不死伝説 バンパイア椎名林檎青山剛昌この素晴らしい世界に祝福を!モーニング娘。西川貴教佐上峻作Yahoo! JAPAN名探偵コナン ハロウィンの花嫁花澤香菜ダンジョン飯朝鮮民主主義人民共和国細谷真大ゴールデンカムイ性行為菊地亜美布施明白石涼子東京都第15区木村昴つつじが岡公園ミンジ鬼滅の刃ダイアン徳川家康新納慎也REITA清原果耶地方病 (日本住血吸虫症)名探偵コナンのアニメエピソード一覧田尾安志大谷舞風鳥取三津子🡆 More