• Tidak ada hasil yang ditemukan

時間計算量: 計算に必要な手間 (基本となる演算の回数)

N/A
N/A
Protected

Academic year: 2024

Membagikan "時間計算量: 計算に必要な手間 (基本となる演算の回数)"

Copied!
18
0
0

Teks penuh

(1)

計算量(complexity)

• 時間計算量: 計算に必要な手間

(基本となる演算の回数)

空間計算量: 計算に必要なメモリ量

(必要な数表の大きさ・覚えておくべき途中結果) 理論上の厳密な定式化には

計算モデルとしてチューリングマシンを用いるが、

通常は、決まった桁数の四則演算 1 回を

1 ステップと数えることが多い 入力データ長 n に対する

増加のオーダー (Landau の O-記号) で表す

(2)

Landau の O-記号・o-記号 f, g:N→R>0に対し、

f=O(g)⇐⇒ N > 0,C > 0:n:

(nN=⇒f(n)Cg(n))

f=o(g)⇐⇒ f(n)

g(n) →0 (n→ ∞)

⇐⇒ε > 0:N > 0:n:

(nN=⇒f(n)εg(n))

(3)

計算量(complexity)

問題を解くアルゴリズムによって決まる

· · · アルゴリズムの計算量

→ アルゴリズムの効率 の評価 問題の計算量:

その問題を解くアルゴリズムの計算量の下限 最も効率良く解くと、どれ位で解けるか

= どうしてもどれ位必要か

= どれ位難しい問題か

→ 問題の難しさ の評価

(4)

基本的な例

加法: O(n)

乗法: O(n2)かと思いきや O(nlognlog logn) (高速フーリエ変換(FFT))

(5)

: 互除法

入力: 正整数 x, y 入力データ長:

n=dlog2xe+dlog2ye∼max{logx,logy}

出力: 最大公約数 d=gcd(x, y) 計算量の評価:

割算の回数: O(n)

1回の割算: 素朴な方法でも O(n2)

(FFT を使えば O(nlognlog logn))

→ 併せて O(n3) (FFTで O(n2lognlog logn))

· · · 充分に高速なアルゴリズム

(6)

重要な難しさのクラス 多項式時間 P · · · ∃k:O(nk)

事実上計算可能な難しさ

計算モデルの変更に関して頑健な

計算量のクラス

「しらみつぶし」が入ると

大体 O(2n) 程度以上になる(指数時間 EXP)

“事実上計算不可能”

(7)

: 素数判定(PRIMES) n=log2N : N の二進桁数

試行除算(小さい方から割っていく)だと

O(nk2n/2) くらい掛かりそう 実は多項式時間で解ける!!

Agrawal-Kayal-Saxena

“PRIMES is in P” (2002)

(出版は Ann. of Math. 160(2) (2004),781-793.)

(8)

素数判定に関する Fermat テスト Fermat の小定理

p : 素数 =⇒ (aZ:apa (mod p)) 対偶を取って、

(aZ:aN6≡a (mod N)) =⇒ N : 合成数 多くの aZ に対し、aNa (mod N) ならば、

N が素数である可能性は高いだろう しかし実は、

aZ:aNa (mod N)

となる合成数 N も存在 (擬素数・Carmichael)

(9)

Agrawal-Kayal-Saxena の多項式時間素数判定

Fermat テストを多項式版にしたもの

aZ: (X+a)NX+a (mod N) ?

• 正しく素数を判定できる

多項式時間で判定できる

? 比較的少ない個数の a で確かめれば良い

? 比較的次数の低い多項式を法とした計算で良い

(10)

素数判定と素因数分解との違い このような効率の良い素数判定は、

具体的に素因数を見付けている訳ではない 素因数分解は P であるかどうか未解決

(多項式時間アルゴリズムが知られていない) 現状で知られているのは、

準指数時間 LN[u, v] (0 < u < 1)

のアルゴリズム (現時点で最高速なのは u=1/3)

(11)

素因数分解アルゴリズム等の計算量を表すのに LN[u, v] :=exp(v(logN)u(log logN)1−u)

が良く用いられる n=logN (Nの桁数) とおくと、

LN[0, v] =evlog logN=nv : 多項式時間

LN[1, v] =evlogN=evn: 指数時間

主パラメタは uで、多項式時間と指数時間とを補間

(12)

代表的な素因数分解法

(p−1)-

楕円曲線法 (Elliptic Curve Method)

二次篩法 (Quadratic Sieve)

数体篩法 (Number Field Sieve)

(13)

二次篩法の原理

y2z2 (mod N) となる y, z を探す

→ N|(y2−z2) = (y−z)(y+z) y≡ ±z (mod N) でない限り、

gcd(y−z, N) が N の非自明な約数 !!

(最大公約数は互除法により高速に計算可能)

(14)

二次篩法の原理

y2z2 (mod N) なる y, z の組を見付けるには ? x を沢山取り、x2 を N で割った余り r を沢山作る

x2r (mod N) r=z2 なら y=x でOK

そんなにうまくいくのか?

x;

kN にとって、

r=x2−kN が小さくなるようにする

• それを組み合わせて(掛け合わせて)

うまく作れることがある

(15)

: N=18281

1452 2744 = 23 · 73 1492 3920 = 24 · 51 · 72 1592 7000 = 23 · 53 · 71 (145·149·159)2 210· 54 · 76

( 25 · 52 · 73 )2

145·149·15916648=: y 25·52·73 185=: z gcd(y−z, N) =101

: N=18281 の非自明な約数!!

(16)

二次篩法の原理

うまく組み合わさるには、

x2 を N で割った余りの

素因数の重なりが多いと良い

始めに幾つかの小さい素数を決めておく(因子底)

x2 を N で割った余り r で、

素因数が因子底の素数のみから成るものを貯める

必要なだけ貯ったら、

平方数を作る組合せを探す計算に移行

(17)

何が「篩」か ?

候補の x を沢山計算するときに、

採用され易そうな候補 x だけ選んで計算 x2−N が因子底の幾つかで割れることが

予め判っているものを選ぼう 或る x2−N が p で割れていたら、

(x±p)2−N,(x±2p)2−N, . . .

も p で割れることが予め判る !!

−→ 因子底の素数毎に、

候補に残り易そうな x が 等間隔に並ぶ !!

(18)

素因数分解法

一般的な整数に対する方法

特殊な形の整数に対する方法 一般的な整数に対する方法で

現在最強と言われている方法

· · · 数体篩法(number field sieve method) 二次篩法のアイデア+代数的整数論の知見

Referensi

Dokumen terkait

問四 ■形式上の不備・文末表現は要素G参照 基準配点 1 2点 ■模範解答例A B C事物を比較し、類推によって共通の関係、構造を見出し、その構造、関係の抽象的な図式を言語化して一般D E F的な事象に適用していくというのが人間という種に固有の発達であるから、発達の前提には類推があるとい うこと。 ■採点方法:各要素単独採点

は。 fを変化させなu、。 ロ この理由により, file i n凹 tへの出力は騰されない0 8 プログラム パラメタの意味および外務定義 プログラム パラメタは, このPuca lにおいては, プログラムの外留でll:冨されh その プ ログラムで使うものをかく。tex t型またはその他の fileの宜数は, プログラムの中で宜曾

問四 ■形式上の不備・文末表現は要素H参照 基準配点 1 5点 ■模範解答例A B C D多数の国家が分立する中で、他国の軍事力増大に対抗し、自国の安全と強大化を目指そうとする人間の本 E F性が「嫉妬深い競争心」であり、それにより、特定の国家の強大化を阻むために国家同士が互いの動向を監 G視し合い、支配的勢力に対抗するために同盟を生み出すから。

■採点方法:各要素単独採点 ■字数:解答欄三行一行以下のものは全体不可(0点) ■要素A日本論や日本人論で繰り広げられている日本賛美が:2点 ・「日本回帰」が、もともと日本人がどういう点で優れているのかということで説明がさ れていないものは、要素A加点なし ・同意例:日本論などで展開されている、日本の優れた原点が、

7 問三 ■形式上の不備・文末表現は要素F参照 基準配点 1 3点 ■模範解答例A B C人間が生きる日常のあらゆる場面で何らかの存在の実感と共に到来し、直面しているにもかかわらず人間 D Eには手も届かず意のままにもできず、それと現実との差異を受け容れる謙虚さ、また自身を省みて行いを正 す責任感を人間に持たせるもの。 ■採点方法:各要素単独採点

18 第 2 回 7 月 難関大本番レベル記述模試 生物 採点基準 【採点方法】 1.正解の場合・・・○をする。 2.一部正答の場合 ①加点ポイントに下線を引く。 ②加点する点数を下線の最後に書く。 ③△とし,点数を△の中に書く。 ④減点箇所は(-1)と書く。 《例》4点満点の場合 正答

19 第 1 回 5 月 有名大本番レベル模試 生物 採点基準 【採点方法】 1.正解の場合・・・○をする。 2.一部正答の場合 ①加点ポイントに下線を引く。 ②加点する点数を下線の最後に書く。 ③△とし,点数を△の中に書く。 ④減点箇所は(-1)と書く。 《例》4点満点の場合 正答

19 第 3 回 9 月 難関大記述模試 生物 採点基準 【採点方法】 1.正解の場合・・・○をする。 2.一部正答の場合 ①加点ポイントに下線を引く。 ②加点する点数を下線の最後に書く。 ③△とし,点数を△の中に書く。 ④減点箇所は(-1)と書く。 《例》4点満点の場合 正答