• 検索結果がありません。

計算量 - pweb

N/A
N/A
Protected

Academic year: 2024

シェア "計算量 - pweb"

Copied!
21
0
0

読み込み中.... (全文を見る)

全文

(1)

さて、本講義最後の話題は、

計算量

について

問題の難しさを如何に計るか ?

(2)

さて、本講義最後の話題は、

計算量

について

問題の難しさを如何に計るか ?

(3)

Church-Turingの提唱 (再掲)

「全てのアルゴリズム(計算手順)は、

チューリングマシンで実装できる」

(アルゴリズムと呼べるのは

チューリングマシンで実装できるものだけ)

· · · 「アルゴリズム」の定式化

(4)

計算量(complexity)

時間計算量 : 計算に掛かるステップ数

(TMでの計算の遷移の回数)

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

(TMでの計算で使うテープの区画数) 通常は、決まった桁数の四則演算 1 回を

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

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

(5)

計算量(complexity)

時間計算量 : 計算に掛かるステップ数

(TMでの計算の遷移の回数)

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

(TMでの計算で使うテープの区画数) 通常は、決まった桁数の四則演算 1 回を

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

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

(6)

計算量(complexity)

時間計算量 : 計算に掛かるステップ数

(TMでの計算の遷移の回数)

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

(TMでの計算で使うテープの区画数) 通常は、決まった桁数の四則演算 1 回を

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

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

(7)

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))

(8)

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))

(9)

計算量(complexity)

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

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

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

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

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

= どれ位難しい問題か

→ 問題の難しさ の評価

(10)

計算量(complexity)

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

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

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

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

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

= どれ位難しい問題か

→ 問題の難しさ の評価

(11)

計算量(complexity)

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

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

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

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

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

= どれ位難しい問題か

→ 問題の難しさ の評価

(12)

計算量(complexity)

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

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

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

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

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

= どれ位難しい問題か

→ 問題の難しさ の評価

(13)

基本的な例

加法 : O(n)

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

(14)

基本的な例

加法 : O(n)

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

(15)

: 互除法

入力 : 正整数 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))

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

(16)

: 互除法

入力 : 正整数 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))

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

(17)

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

事実上計算可能な難しさ

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

(複数テープTMなどに変更しても不変)

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

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

事実上計算不可能

(18)

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

事実上計算可能な難しさ

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

(複数テープTMなどに変更しても不変)

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

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

事実上計算不可能

(19)

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

事実上計算可能な難しさ

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

(複数テープTMなどに変更しても不変)

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

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

事実上計算不可能

(20)

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

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

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

Agrawal-Kayal-Saxena

“PRIMES is in P” (2002)

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

(21)

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

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

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

Agrawal-Kayal-Saxena

“PRIMES is in P” (2002)

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

参照

関連したドキュメント

河村

Turing )が人の計算 する様子を模して考案したものです.チューリング機械は,書込み機能のない機械に比

である。

( ) の中は先に計算される。( )

偏心補正計算 <試験合格へのポイント>

滑らかな常微分方程式の計算量 太田 浩行 * 河村 彰星 \dagger マルチン・ツィーグラー \ddagger カルステン・レースニク \S 概要 常微分方程式

Deutch の提案がしば しば取り上げられ、 かつ、 さらにその発展形態が考察されるようになってきてい

第5[蛋1オリフィスフランジおよびプレートの計算順序の骨了- 第1表