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

Post on 15-Jan-2016

128 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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

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

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

2012/1/25

目次

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

2

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

MPQS (複数多項式二次篩)

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

3

複数多項式二次篩 MPQS

基本原理

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

4

二次篩 QS (例 : = 3937 )

(1)

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

5

なぜ平方剰余?

                     (mod )              

(3)篩い =3937

 

6

3 32 33

1

011 20

0

0

0

0

0

0

0

1

121

3個おき

個おき

2 22

(mod ) の解を考える

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

      

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

        mod

 (5) gcd() を計算

gcd

7

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

① の式に両辺をかける

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

8

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

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

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

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

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

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

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

9

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

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

10

2 . 既存の MPQS の性能評価

性能評価①

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

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

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

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

実験環境 ハードウェア

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

実験結果

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

平均 9331.4 11212.8 15699.9 19949.8 21601.6 24808.2

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

13

性能評価②

・ NZMATH にある mpqs で実験

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

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

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

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

14

実験結果  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つの過程以外のところでも多くの時間がかかっている

16

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

≪ 改良前≫

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

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

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

≪ 改良後≫

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

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

3、改良点

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

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

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

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

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

17

実験結果桁数 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 の平方剰余の場合、既存のものより圧倒的に速くなった

5、今後の課題

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

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

19

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

参考文献

・中村憲.数論アルゴリズム .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

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

21

top related