SlideShare ist ein Scribd-Unternehmen logo
1 von 18
計算量
計算量
計算の複雑性を扱う
正確な計算回数をはかるのは難しい(無理)
なのでおおざっぱに何に比例するかで表す
計算量
計算の複雑性を扱う
正確な計算回数をはかるのは難しい(無理)
なのでおおざっぱに何に比例するかで表す
例:1+2+…+(n-1)+nの計算
計算回数はnに比例する→O(n)
例:n*mマスの計算
計算回数はn*mに比例する→O(nm)
計算量の種類
色々あるのでよく使うものを紹介
最悪計算量 もっとも運が悪いときの計算量
計算量の種類
色々あるのでよく使うものを紹介
最悪計算量 もっとも運が悪いときの計算量
例:n人分のデータから ある一人のデータを愚
直に探す。
めっちゃ運がいい時:いきなり見つかる 1回
めっちゃ運が悪い時:全員分見る n回
計算量の種類
色々あるのでよく使うものを紹介
償却計算量(ならし計算量)
ちょっとむずかしい
N回連続で処理するときの計算量を平均したも
の
(割愛します)
計算量の種類
色々あるのでよく使うものを紹介
その他
平均計算量(全パターンの平均。調べるのがむ
ずかしい)とか最良計算量とか
競技プログラミングでは大事で調べやすい最悪
計算量(+ならし計算量とか)を重視される
計算量はビッグに考えよう
定数倍は無視
例:1~2nまでの総和
計算回数は2nに比例するが、nにも比例する
→誤:O(2n) 正:O(n)
1~1000nでもO(1000n)でなくO(n)と書く
nが大きいと2倍とかどうでもいい(!?)
※但し競プロではつい付けることもあります。(流石に1000倍と
かはヤバイ)
計算量はビッグに考えよう
小さいものは無視
例:1~nまでの総和をnで割る
計算回数はn+1に比例するが、1は省く→
誤:O(n+1) 正:O(n)
nが大きくなったら1回とかどうでもいい
計算量はビッグに考えよう
小さいものは無視 他の例
O(n+1000000000)
nが大きくなったら1000000000とかどうでもい
い(!?) のでO(n)
O(2^n+n^2) ※2^nは2のn乗のこと
2^nの方がヤバイのでO(2^n)
O(n^2+m)
mがヤバイ可能性もあるのでO(n^2+m)のまま
よく出てくる計算量
定数時間
O(1) Nに比例しないとき 余裕
対数時間
O(logN) 二分探索とかで出てくる 余裕
多項式時間 mは適当な定数(2とか)とすると
O(N^m) N^1000も多項式時間。これは一応現実的
指数時間
O(m^N) 2^Nとか ヤバイ
計算量を見積もれるようになろう
競技プログラミングではプログラムに対して制限時間
がかけられる
正確な計算回数とかわからないのでおおざっぱに間に
合いそうとか考えてみる
大体ボーダーは1億回くらいが限度
例
O(n)でn<=1000000 最悪100万回くらいなので余裕
O(n^2)でn<=1000000 流石に1兆回は無理
興味があったら調べよう
書いてないこともいっぱいあります
結構おもしろい(個人的な感想)
N≠NP問題とか、解くと100万ドルもらえる問
題とかあったりします。
二分探索
まとめ
探索範囲を半分に絞っていく
絞れなかったら無理
データを二分探索することは、比較
ができてソートされていれば出来る
ソート
C++では自分で書かなくてもソート
してくれます。(完)
進捗ダメです
スライドは完成しなかった ~完~

Weitere ähnliche Inhalte

Andere mochten auch

Out of "Order" ~計算量の普通は気にしない部分の話
Out of "Order" ~計算量の普通は気にしない部分の話Out of "Order" ~計算量の普通は気にしない部分の話
Out of "Order" ~計算量の普通は気にしない部分の話ayatsuka
 
北海道関数型言語勉強会@札幌#2のお知らせ
北海道関数型言語勉強会@札幌#2のお知らせ北海道関数型言語勉強会@札幌#2のお知らせ
北海道関数型言語勉強会@札幌#2のお知らせKenta Murata
 
情報学特論#01
情報学特論#01情報学特論#01
情報学特論#01Kenta Murata
 
情報学特論#02
情報学特論#02情報学特論#02
情報学特論#02Kenta Murata
 
計算量のはなし(Redisを使うなら必読!O(logN)など)
計算量のはなし(Redisを使うなら必読!O(logN)など)計算量のはなし(Redisを使うなら必読!O(logN)など)
計算量のはなし(Redisを使うなら必読!O(logN)など)Makoto SAKAI
 
nichiyo-math vol.2
nichiyo-math vol.2nichiyo-math vol.2
nichiyo-math vol.2tsu nuts
 
Amortize analysis of Deque with 2 Stack
Amortize analysis of Deque with 2 StackAmortize analysis of Deque with 2 Stack
Amortize analysis of Deque with 2 StackKen Ogura
 
指数時間アルゴリズム入門
指数時間アルゴリズム入門指数時間アルゴリズム入門
指数時間アルゴリズム入門Yoichi Iwata
 
野良ビッグデータへのお誘い
野良ビッグデータへのお誘い野良ビッグデータへのお誘い
野良ビッグデータへのお誘いMasanori Takano
 

Andere mochten auch (13)

Out of "Order" ~計算量の普通は気にしない部分の話
Out of "Order" ~計算量の普通は気にしない部分の話Out of "Order" ~計算量の普通は気にしない部分の話
Out of "Order" ~計算量の普通は気にしない部分の話
 
北海道関数型言語勉強会@札幌#2のお知らせ
北海道関数型言語勉強会@札幌#2のお知らせ北海道関数型言語勉強会@札幌#2のお知らせ
北海道関数型言語勉強会@札幌#2のお知らせ
 
情報学特論#01
情報学特論#01情報学特論#01
情報学特論#01
 
情報学特論#02
情報学特論#02情報学特論#02
情報学特論#02
 
CMSI計算科学技術特論B(13) 大規模量子化学計算(2)
CMSI計算科学技術特論B(13) 大規模量子化学計算(2)CMSI計算科学技術特論B(13) 大規模量子化学計算(2)
CMSI計算科学技術特論B(13) 大規模量子化学計算(2)
 
計算量のはなし(Redisを使うなら必読!O(logN)など)
計算量のはなし(Redisを使うなら必読!O(logN)など)計算量のはなし(Redisを使うなら必読!O(logN)など)
計算量のはなし(Redisを使うなら必読!O(logN)など)
 
nichiyo-math vol.2
nichiyo-math vol.2nichiyo-math vol.2
nichiyo-math vol.2
 
Float is Legacy
Float is LegacyFloat is Legacy
Float is Legacy
 
計算量とオーダー
計算量とオーダー計算量とオーダー
計算量とオーダー
 
Amortize analysis of Deque with 2 Stack
Amortize analysis of Deque with 2 StackAmortize analysis of Deque with 2 Stack
Amortize analysis of Deque with 2 Stack
 
指数時間アルゴリズム入門
指数時間アルゴリズム入門指数時間アルゴリズム入門
指数時間アルゴリズム入門
 
計算量
計算量計算量
計算量
 
野良ビッグデータへのお誘い
野良ビッグデータへのお誘い野良ビッグデータへのお誘い
野良ビッグデータへのお誘い
 

計算量 Jyoken