数論システム NZMATH に於 ける 素因数分解法 MPQS の性能 評価

21
数数数数数数 NZMATH 数数数数数数数数数数 MPQS 数数数数数 数数数数数数 数数数数数数 数数数数 数数数数数数数 08162894 数数数数 2012/1/25

description

数論システム NZMATH に於 ける 素因数分解法 MPQS の性能 評価. 2012/1/25. 首都 大学東京 都市教養学部 理工学系 数理科学コース 08162894  川原未鈴. 目次. 1、素因数分解法 MPQS とは? 2 、既存の プログラム の性能評価 3 、改良点 4 、改良前・後の MPQS の性能比較 5 、今後の課題. 1 .  素因数分解法 MPQS とは?. MPQS (複数多項式二次篩) 素因数分解法の一つである二次篩法 (QS) に改良を加え さらに効率のよい方法として考えられたもの。 1984 年 QS 71 桁 - PowerPoint PPT Presentation

Transcript of 数論システム NZMATH に於 ける 素因数分解法 MPQS の性能 評価

Page 1: 数論システム NZMATH に於 ける 素因数分解法 MPQS の性能 評価

数論システム NZMATH に於ける素因数分解法 MPQS の性能評価

首都大学東京 都市教養学部 理工学系 数理科学コース08162894  川原未鈴

2012/1/25

Page 2: 数論システム NZMATH に於 ける 素因数分解法 MPQS の性能 評価

目次

1、素因数分解法 MPQS とは?2、既存のプログラムの性能評価3、改良点4、改良前・後の MPQS の性能比較5、今後の課題

2

Page 3: 数論システム NZMATH に於 ける 素因数分解法 MPQS の性能 評価

1 .  素因数分解法 MPQS とは?

MPQS (複数多項式二次篩)

素因数分解法の一つである二次篩法 (QS) に改良を加えさらに効率のよい方法として考えられたもの。1984 年 QS     71 桁1986 年 MPQS    87 桁1994 年 MPQS    129 桁      ( 600 人以上のボランティアと 1600 台の CPU を用いた)

3

Page 4: 数論システム NZMATH に於 ける 素因数分解法 MPQS の性能 評価

複数多項式二次篩 MPQS

基本原理

(mod ), (mod ) となる()の組を見つける。見つけたら(mod ), (mod ) であるからgcd() を計算することで

4

Page 5: 数論システム NZMATH に於 ける 素因数分解法 MPQS の性能 評価

二次篩 QS (例 : = 3937 )

(1)

(2)因子基底   の平方     平方 1≔ ((mod) となるが存在 )

5

なぜ平方剰余?

                     (mod )              

Page 6: 数論システム NZMATH に於 ける 素因数分解法 MPQS の性能 評価

(3)篩い =3937

 

6

3 32 33

1

011 20

0

0

0

0

0

0

0

1

121

3個おき

個おき

2 22

(mod ) の解を考える

Page 7: 数論システム NZMATH に於 ける 素因数分解法 MPQS の性能 評価

(3)因子基底だけで表されるとってくる

      

(4)組み合わせてかける (mod ))←ガウスの消去法

        mod

 (5) gcd() を計算

gcd

7

Page 8: 数論システム NZMATH に於 ける 素因数分解法 MPQS の性能 評価

・二次式変えても  同じ因子基底で篩にかけることが出来る

① の式に両辺をかける

・篩い処理が完全に並列処理できる

8

二次篩との違い:篩の対象となる多項式を複数とれる

(mod ) ( 因子基底は二次篩と同じ )

Page 9: 数論システム NZMATH に於 ける 素因数分解法 MPQS の性能 評価

MPQS の流れ(1)まずは (mod ) をみたし、  なるがなるべく多く取れるものが望ましい。とりわけ (mod ) となる

(2)多項式を決定。  ( 係数を決定 )

(3)篩いを行い各に対して (mod ) なるを求めて、    smooth なを探す。

(4) smooth なものが必要な個数集まるまで(2) , (3)を   何回か繰り返し、その中からが平方数になるようなものを探す。   (ガウスの消去法)

(5) (mod ) が求められるので、     gcd() が自明でない因数ならば終了。

9

Page 10: 数論システム NZMATH に於 ける 素因数分解法 MPQS の性能 評価

         (mod )  (mod ) としなければならない。

そこで、 (mod ) となる  に対しては(mod ) となる小さな を求める。このなるがなるべく多く取れるものが望ましい。とりわけ (mod ) となる

10

Page 11: 数論システム NZMATH に於 ける 素因数分解法 MPQS の性能 評価

2 . 既存の MPQS の性能評価

性能評価①

・ NZMATH にある mpqs (平成17年卒の熊木幸司さんが書かれたもの)で実験・比較

・一つの CPU を使って約6時間で  どのくらいの桁数まで素因数分解できるか調べる

・実験の対象となった合成数は  ほぼ同じ桁数の素数2つの積であるような数とした

・ 50 ~ 55 桁の約10個の合成数に対し , 桁ごとの平均時間を算出11

Page 12: 数論システム NZMATH に於 ける 素因数分解法 MPQS の性能 評価

実験環境 ハードウェア

CPU: AMD Phenom(tm) Ⅱ X6 1090T Processor (3.2GHz 6cores)Memory: 8GBDisk: HDD 2TB, SSD 64GB

システムServer: Windows Server 2008 R2 StandardEmulator: VMware(R) Player Ver.3.1.3Linux OS: CentOS 5.5 (CPU: 4cores, Memory: 2GB, HDD: 200GB )

Python: 2.7.1

NZMATH: 1.1.0

以下実験結果はすべて sec

12

Page 13: 数論システム NZMATH に於 ける 素因数分解法 MPQS の性能 評価

実験結果

桁数 50 桁 51 桁 52 桁 53 桁 54 桁 55 桁

平均 9331.4 11212.8 15699.9 19949.8 21601.6 24808.2

約7時間弱で 55 桁の合成数を素因数分解できることがわかった

13

Page 14: 数論システム NZMATH に於 ける 素因数分解法 MPQS の性能 評価

性能評価②

・ NZMATH にある mpqs で実験

・過程を(ⅰ)係数を決める(ⅱ)篩う(ⅲ)ガウスの消去法(ⅳ) total  に分けてそれぞれの時間を算出

・ 10 、 15 、 20 、 25 、 30 、 35 、 40 桁の合成数について実験

・それぞれの実験の対象となった合成数は  ほぼ同じ桁数の素数2つの積であるような数とした

・各桁の 10 個の合成数に対し , それぞれの平均時間を算出

14

Page 15: 数論システム NZMATH に於 ける 素因数分解法 MPQS の性能 評価

実験結果  10 桁 15 桁 20 桁 25 桁 30 桁 35 桁 40 桁

係数決め 0.001 0.006 0.048 0.243 0.740 5.748 19.734

篩い 0.008 0.048 0.148 1.009 3.743 17.809 80.105

ガウスの消去法 0.002 0.004 0.052 0.289 1.683 10.049 85.323

Total time 0.019 0.073 0.358 1.983 8.340 43.080 242.986

その他の時間 0.008 0.015 0.110 0.443 2.175 9.474 57.823

15

・3つの過程の中で最も時間がかかっているのは篩いの部分・3つの過程以外のところでも多くの時間がかかっている

Page 16: 数論システム NZMATH に於 ける 素因数分解法 MPQS の性能 評価

16

≪問題箇所≫( 1 ) (mod ) をみたし、なるがなるべく多く取れる。とりわけ (mod ) となる

≪ 改良前≫

(mod 8) の場合にはすべて (mod 8) をとってくる。

つまり (mod 8) の場合には

すべてに成り立っていても(mod 8)をとってくる。

≪ 改良後≫

 (mod 8)かつ(ⅰ)すべてに成り立っていたら

(ⅱ)で一つでも成り立っていなかったら (mod 8) をとってくる。

3、改良点

Page 17: 数論システム NZMATH に於 ける 素因数分解法 MPQS の性能 評価

4、改良前・後の性能比較

・改良前と改良後のプログラムで実験・比較

・ 10 、 15 、 20 、 25 、 30 、 35 、 40 桁の合成数について実験

・それぞれの実験の対象となった合成数は 素数 × 素数 × となるものを使用。

・各桁の約 10 個の同じ合成数に対し , 改良前・後のそれぞれの  平均時間を算出

17

Page 18: 数論システム NZMATH に於 ける 素因数分解法 MPQS の性能 評価

実験結果桁数 before after

10 0.021 0.016

15 0.101 0.031

20 0.424 0.223

25 1.942 0.841

30 11.602 5.513

35 48.827 21.658

40 251.060 141.346

18

が mod 8 で 1 , かつ 法 3,5,7,11,13 の平方剰余の場合、既存のものより圧倒的に速くなった

Page 19: 数論システム NZMATH に於 ける 素因数分解法 MPQS の性能 評価

5、今後の課題

・ Block Lanczos 法の実装   ・・・ガウスの消去法よりも効率の良い方法なので

・篩の行程で Large Prime を取り入れた篩の実装

19

smooth にある程度近いものの残りの因子を因子基底の中に含ませてしまう方法

Page 20: 数論システム NZMATH に於 ける 素因数分解法 MPQS の性能 評価

参考文献

・中村憲.数論アルゴリズム .2009.

・ Richard Crandall and Carl Pomerance.  Prime numbers. Springer-Varlag,New York,2001.

・David M.Bressoud.

  Factorization and Primality Testing. Springer-Varlag,New York,1989.

・熊木幸司.

  複数多項式二次篩の数論システム NZMATHへの実装とその考察 ,2005.

20

Page 21: 数論システム NZMATH に於 ける 素因数分解法 MPQS の性能 評価

ご清聴ありがとうございました。

21