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

計算量

N/A
N/A
Protected

Academic year: 2024

シェア "計算量"

Copied!
20
0
0

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

全文

(1)

本講義最後の話題は、

計算量

について

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

(2)

Church-Turingの提唱(再掲)

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

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

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

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

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

(3)

計算量 (complexity)

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

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

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

TMでの計算で使うテープの区画数)

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

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

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

(4)

計算量 (complexity)

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

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

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

TMでの計算で使うテープの区画数)

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

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

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

(5)

計算量 (complexity)

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

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

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

TMでの計算で使うテープの区画数)

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

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

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

(6)

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

f=O(g)⇐⇒ NN,C > 0:nN:

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

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

g(n) →0 (n→ ∞)

⇐⇒ε > 0:NN:nN:

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

(7)

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

f=O(g)⇐⇒ NN,C > 0:nN:

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

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

g(n) →0 (n→ ∞)

⇐⇒ε > 0:NN:nN:

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

(8)

計算量 (complexity)

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

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

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

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

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

= どれ位難しい問題か

→ 問題の難しさの評価

(9)

計算量 (complexity)

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

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

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

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

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

= どれ位難しい問題か

→ 問題の難しさの評価

(10)

計算量 (complexity)

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

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

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

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

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

= どれ位難しい問題か

→ 問題の難しさの評価

(11)

計算量 (complexity)

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

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

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

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

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

= どれ位難しい問題か

→ 問題の難しさの評価

(12)

基本的な例

加法:O(n)

乗法:O(n2)かと思いきや O(nlognlog logn)

(高速フーリエ変換 (FFT)

(13)

基本的な例

加法:O(n)

乗法:O(n2)かと思いきや O(nlognlog logn)

(高速フーリエ変換 (FFT)

(14)

例:互除法

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

n=log2x+log2y∼max{logx,logy}

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

割算の回数:O(n)

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

FFT を使えば O(nlognlog logn))

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

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

(15)

例:互除法

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

n=log2x+log2y∼max{logx,logy}

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

割算の回数:O(n)

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

FFT を使えば O(nlognlog logn))

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

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

(16)

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

事実上計算可能な難しさ

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

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

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

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

事実上計算不可能

(17)

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

事実上計算可能な難しさ

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

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

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

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

事実上計算不可能

(18)

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

事実上計算可能な難しさ

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

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

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

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

事実上計算不可能

(19)

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

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

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

Agrawal-Kayal-Saxena

“PRIMES is in P” (2002)

(出版は

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

(20)

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

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

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

Agrawal-Kayal-Saxena

“PRIMES is in P” (2002)

(出版は

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

参照

関連したドキュメント

省量子メモリ化と量子─古典協調計算

基本操作マニュアル 43 3-7-4

・ (何十)÷(何十)の ・除数が1位数や2位数 ・除数が1位数や2位数で ・除数が1位数や2位数 計算を十を単位とし

自分 命令 至急 生きる 免除 自然 余り 下手 計算 小児科 気配 不便 分割 十分 季節 経験 保存 数える 文化

このドリルの構成 第1部 たし算・ひき算 加法と減法の計算問題,基本的な文章題。数の素材は,整数と小数です。

8 ビット比較器 16 32 25 全加算器 2 5 4 ビット順次桁上け加算器 8 20 8 ビット順次桁上け加算器 16 40 $4_{-}$ $16$ $32$ 33

今後の課題と議論 本稿で示した近似因数分解の計算量は $O(2^{6v}d^{4v}n^{4v+2})$ であ可主変数の次数

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