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

アルゴリズムと計算量

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for kab0718 kab0718
February 07, 2024
45

 アルゴリズムと計算量

Avatar for kab0718

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)
 先頭から順に隣接する要素と比較して入れ替え
 最後から二番目の要素まで上記繰り返し