計算量
計算量(complexity)
そのプログラムがどれくらい速いかを大雑把に表す指標
入力サイズの増加に対して、実行時間がどれくらいの割合で増加するかを表す指標
問題を解決するためのアルゴリズムをコンピュータで処理させようとするとき、その処理に必要な資源 (計算時間, 記憶容量など)の尺度
書くときは$ O(n) のような表記で書かれる
ランダウのO表記法とかビッグオー記法とか
ランダウのO表記法以外にも以下がある。
Θ記法
Ω記法
o記法
ω記法
アルゴリズムを計算量で表すと
線形探索だと$ O(n)
二分探索だと$ O(\log n)
バブルソートだと $ O(n^2)
空間計算量, 領域計算量(space complexity)
コンピュータが特定の手順に従って与えられた問題を解く際に必要とする記憶領域の容量
アルゴリズムの実行にどれだけ記憶領域 (メモリ) が必要かの量
プログラムの実行に必要な記憶領域
時間計算量(time complexity)
プログラムの実行に必要な時間
アルゴリズムの実行にどれだけ時間がかかるかという尺度に基づいて評価する時間計算量
もっと細かいもの
一番よいときの計算量を最良時間計算量 (best-case time complexity)
運が悪く最悪の条件の場合の計算量は最悪時間計算量 (worst-case time complexity)
確認用
Q. 計算量
Q. 領域計算量
Q. 時間計算量
Q. 多項式
Q. $ O(n \log n), O(n) どちらが計算量が大きい?
Q. $ O(\log n), O(n) どちらが計算量が大きい?
Q. 指数オーダーで解ける問題と言ったときの計算量の例は?
Q. 線形探索法の計算量はいくら?
Q. 二分探索法の計算量はいくら?
関連
多項式
NP完全
NP困難
複雑性クラス
参考
計算量オーダーの求め方を総整理! 〜 どこから log が出て来るか 〜
【初心者向け】 プログラムの計算量を求める方法
W - 2.06.計算量
計算量 - SlideShare
計算量の漸近記法(Θ記法・O記法・Ω記法・o記法・ω記法) - Public Theta Blog
できるだけ嘘を書かずに計算量やオーダーの説明をしようとした記事 - えびちゃんの日記
競技プログラマでも $O$-notation についてもうちょっとちゃんと考えたかった話 - torus711 のアレ
EX21 - 計算量の見積もり
[初心者向け] プログラムの計算量を求める方法
メモ
複雑性クラス - Wikipedia
計算量オーダーの求め方を総整理! 〜 どこから log が出て来るか 〜 #競技プログラミング - Qiita
#CS(情報科学)