Upgrade to Pro — share decks privately, control downloads, hide ads and more …

アルゴリズムと計算量

kab0718
February 07, 2024
9

 アルゴリズムと計算量

kab0718

February 07, 2024
Tweet

Transcript

  1. 計算量の求め方
 右記のプログラムの計算量を求める
 1. 各行のステップ数を足して全体の
 ステップ数を算出する
 ...1+n^2+n^2+1 = 2+2n^2 
 2.

    最大次数以外の項を除く
 ...2+2n^2 → 2n^2
 3. 係数を除く
 ...2n^2 → n^2
 このコードの計算量は O(n^2)

  2. 計算量の求め方
 Q. なんで最大次数以外の項を除くの?
 
 A. nが大きくなると他の項がほぼ無視できるため
 例)ステップ数が2n^2+10n+10, n=10000 
 2n^2+10n+10

    = 200100010
 2n^2 = 200000000
 
 Q. 係数を除くのはなぜ?
 
 A. 計算量の定義上、定数倍程度の違いはさほど重要じゃない
 O(n^3)とO(10n^2)だと10n^2の方が早いので

  3. 有名なアルゴリズム
 min <= x < max におけるxの値を特定したいときの手法
 • 線形探索法: O(n)


    minから順に比較していく
 • 二分探索法: O(logn)
 2/max以上かを繰り返し確認していく
 ソート済のものにしか使えない
 
 

  4. ソートアルゴリズム(最悪/平均/最良)
 • クイックソート: O(n^2)/O(nlogn)/O(nlogn)
 基準値を決めてそれより大きい配列と小さい配列に分割
 上記を再帰的に繰り返し行う
 • 選択ソート: O(n^2)/O(n^2)/O(n^2)
 最小の要素を見つけ先頭の要素と入れ替え


    先頭の要素を除いて最小を見つけ二番目の要素と入れ替え...
 • バブルソート: O(n^2)/O(n^2)/O(n)
 先頭から順に隣接する要素と比較して入れ替え
 最後から二番目の要素まで上記繰り返し