数論システム NZMATH の 開発と応用 巨大な自然数の高速計算に すぐ使えるプログラム 理工学研究科 中村 憲 数理情報科学専攻 内山 成憲 2006年12月8日 東京国際フォーラム 本講演の内訳 • • • • どうして必要なのか あるもので間に合わないのか 何ができ, どうやって使うのか 手に入れるには, また開発に参加するには 6 November 2015 数論システム NZMATH.
Download ReportTranscript 数論システム NZMATH の 開発と応用 巨大な自然数の高速計算に すぐ使えるプログラム 理工学研究科 中村 憲 数理情報科学専攻 内山 成憲 2006年12月8日 東京国際フォーラム 本講演の内訳 • • • • どうして必要なのか あるもので間に合わないのか 何ができ, どうやって使うのか 手に入れるには, また開発に参加するには 6 November 2015 数論システム NZMATH.
数論システム
NZMATH
開発と応用 の
巨大な自然数の高速計算に すぐ使えるプログラム
理工学研究科 中村 憲 数理情報科学専攻 内山 成憲 2006 年 12 月 8 日 東京国際フォーラム
本講演の内訳
• • • • どうして必要なのか あるもので間に合わないのか 何ができ , どうやって使うのか 手に入れるには , また開発に参加するには 数論システム NZMATH 28 April 2020 2
どうして必要なのか … 例えば暗号
• • • みんなが 広く 使える 暗号 の必要性 – – 不特定多数がアクセスできる状況の維持 情報の通信や保存の機密性・安全性の確保 暗号の 仕組は一般に公開 されている – 平文を暗号文にする 暗号鍵 これが 公開 されている公開鍵暗号もある – 暗号文を平文に戻す 復号鍵 正当な利用者のみの 秘密 復号鍵は暗号文や暗号鍵から 計算困難 – その保証に 巨大な自然数の計算 がしばしば必要 ( あまり厳密ではないが印象を理解する為の説明を少し詳しくする ) 28 April 2020 数論システム NZMATH 3
• •
どうして必要なのか … 公開鍵暗号
一方で復号鍵は暗号鍵から 計算困難 他方で復号鍵は暗号鍵の 逆の操作 をする 暗号鍵 計算困難 平文 暗号文 復号鍵 異なる自然数 p, q p, q を隠す 分解は極めて困難 28 April 2020 数論システム NZMATH 簡単 積 n = p × q n を公開する 4
どうして必要なのか …
整数因数分解 • • • • • 21 桁の n を n = p × q, p≠1, q≠1 と分解したい : n = 400849298419414319179 小さい奇数 3, 5, 7, 9, … で順に試し割算する : 全部で 10010610563 回が必要で 3.2GHz
のパソコンで 8 時間 45 分 30 秒 かかり p = 20021221127, q = 20021221277 逆に p × q は 一瞬 で , 手計算でも 8 時間は不要 この方法では n が 50 桁以上なら , これ迄 現存し た計算機の全能力を総動員したとしても不可能 数論アルゴリズムで n が 百数十桁なら分解可能 数論システム NZMATH 28 April 2020 5
あるもので間に合わないのか
1. Maple, Mathematica, Macsyma … 高額 2. Magma … 開発援助費程度 ☆これらはソース非公開で細部修正できない☆ 3. Pari/GP, Kant/Kash, SIMATH/SimCalc a.
基本的に無料ライセンス b.
利用言語と開発言語が違う c.
開発者が数論アルゴリズム以外に忙殺される ( メモリ管理 , 多倍長 , データ構造 , 対話式インタプリタ ) ☆このうち
b, c
は
1, 2
にも当て嵌まる☆ 28 April 2020 数論システム NZMATH 6
あるもので間に合わないのか 利用者 = 開発者 … Python
1.
2.
3.
4.
5.
メモリ管理 , 多倍長を備えている 豊富なデータ構造を持つオブジェクト指向 利用言語と開発言語が同じスクリプト言語 – – 広範に利用されている易しい言語 計算速度より開発速度を重視 どんな OS でも移植が簡単にできる – 他の言語との相互リンクができる 計算速度の向上や他システムの利用 数論システム NZMATH 28 April 2020 7
何ができ
,
どうやって使うのか
arith1 ( 初等数論 ), bigrandom ( 巨大乱数 ), combinatorial ( 初等組合せ論 ), elliptic ( 楕円曲線 ), equation ( 多項式の根 ) , factor ( 自然数因数分解 ), finitefield ( 有限体 ), gcd ( 互除法 ), group ( 群 ), imaginary ( 近似複素数 ), integerResidueClass ( 整数剰余 ), lattice ( 格子 ), matrix ( 行列 ), multiplicative ( 乗法的関数 ), permute ( 置換群 ), polynomial ( 多項式 ), prime ( 素数判定 ), quad ( 二次体 ), rational ( 有理数 ), rationalFunction ( 有理関数 ), real ( 近似実数 ), ring ( 環 ), vector ( ベクトル ), zassenhaus ( 整多項式因数分解 ) 28 April 2020 数論システム NZMATH 8
何ができ
,
どうやって使うのか
応 用 群 近似実数 近似複素数 多項式の根 置換群 整多項式 因数分解 二次体 楕円曲線 環 有理数 整数剰余 多項式 有限体 有理関数 ベクトル , 行列 , 格子 基 礎 初等数論 互除法 素数判定 乗法的関数 自然数因数分解 初等組合せ論 補助 巨大乱数 28 April 2020 予定 半群 , 代数拡大 , 局所体 数論システム NZMATH 9
何ができ
,
どうやって使うのか
先の例の n = 400849298419414319179 の因数分解を実演してみます .
• まず python (command line) を起動します .
• 次の二つのコマンドを実行します .
import nzmath.factor.methods
nzmath.factor.methods.mpqs(400849298419414319179 ) 数論システム NZMATH 28 April 2020 10
手に入れるには また開発に参加するには • • • • 公式サイト :
http://tnt.math.metro-u.ac.jp/nzmath/
メイリングリスト :
http://tnt.math.metro-u.ac.jp/nzmath/ml.html
開発プロジェクトページ :
http://sourceforge.net/projects/nzmath/
開発グループ :
http://nzmath.sourceforge.net/ 数論システム NZMATH 28 April 2020 11
Please read README for more details. Python is available from http://www.python.org/ . Windows Installer NZMATH Version 0.5.1
解凍レンジ マイ コンピュータ プロパティ 詳細設定 環境変数 ユーザ環境変数 PYTHONPATH C:\Documents and Settings\nakamula\ デスクトップ \nzmath-seeds-2006\NZMATH-0.5.1
システム環境変数 Path ;C:\Python25 please refer Tutorial . 28 April 2020 数論システム NZMATH 12
御静聴ありがとうございました
興味のある方は本文に subscribe とだけ書いたメイルを [email protected]
宛に出してください 28 April 2020 数論システム NZMATH 13