Presentation is loading. Please wait.

Presentation is loading. Please wait.

逐次ソート 2011/05/16. ソート(sort) 順序集合の要素a 1 … a n の上下関係を整 える 一般的には、整数の集合 N を考えればよ い ソートの計算量が問題となる どのような入力に対し、どのようなアル ゴリズムが最適か?

Similar presentations


Presentation on theme: "逐次ソート 2011/05/16. ソート(sort) 順序集合の要素a 1 … a n の上下関係を整 える 一般的には、整数の集合 N を考えればよ い ソートの計算量が問題となる どのような入力に対し、どのようなアル ゴリズムが最適か?"— Presentation transcript:

1 逐次ソート 2011/05/16

2 ソート(sort) 順序集合の要素a 1 … a n の上下関係を整 える 一般的には、整数の集合 N を考えればよ い ソートの計算量が問題となる どのような入力に対し、どのようなアル ゴリズムが最適か?

3 安定なソート・不安定なソート 安定なソート 同じ値の要素が複数あったときにソート後順番が保 たれている 4 5 1 1 5 2 7 1 4 5 1 5 2 7 不安定なソート ソート後の順番が保障されていない 1 4 5 2 5 1 7

4 計算量(1) オーダー( order) O () ソートアルゴリズムが、データ個数nに 対しどれだけの計算時間を必要とするか の目安 高速なコンピュータでも、アルゴリズム が適切でないと、nが大きくなったとき に破綻する

5 計算量(2) (例)ある入力nに対し アルゴリズム F 1 の計算時間が F 1 (n)= C 1 n + C 2 アル ゴリズム F 2 の計算時間数が F 2 (n)= D 1 n 2 + D 2 n+ D 3 F 1 (α) < F 2 (α) となるような α が存在する

6 計算量(3) ステップ数の最大項をとる O(n 2 +n)= O(n 2 ) O(log n +n 2 )=O(l og n) O(n n )>O(n 2 )>O(n log n)>O(log n)>O(n) 最大項の係数は無視してよい O(kn 2 +ln)= O(n 2 )

7 比較によるアルゴリズム 計算量 O(n 2 ) バブルソート( bubble sort) 挿入ソート (insert sort) 計算量 O(n l o g n ) クイックソート (quick sort) ヒープソート (heap sort) マージソート (marge sort)

8 比較によらないアルゴリズム 計算量 O(n) ただし制限あり バケットソート( backet sort) 大量のメモリを必要とする 基数ソート (radix sort) バケットソートよりも遅い

9 アルゴリズムによる計算時間

10 いろいろな計算量 最速計算量 当然 O(n) 最悪計算量 もっとも悪いパターンのときの計算量 O( n log (n) ) が上界 平均計算量 n!のパターンの平均計算量

11 決定木(比較木)(1) 計算量の抽象化 決定木(比較木) アルゴリズムの動きを概念化 二分探索木と似ているが、違う概念であることに注 意

12 決定木(比較木)(2)

13 決定木(比較木)(3) 決定木の平均深さは log 2 n! 以上 計算量の上界 O( log2 n! ) = O( log n*n) =O (n log n) n校によるトーナメント試合の試合数

14 決定木(比較木)(4) 二分探索木の平衡木・AVL木につ いての議論は適用できる 平衡木を作ることがそのまま計算量 の上界を求めることになる もっとも深い葉が最悪計算量に相当 する

15 ベンチマークテスト

16 参考文献 http://www.ics.kagoshima- u.ac.jp/~fuchida/edu/algorithm/sort-algorithm/ http://www.ics.kagoshima- u.ac.jp/~fuchida/edu/algorithm/sort-algorithm/ The Art of Computer Programming Vol. Ⅲ D.A.Knuth ASCII 出版 バイブル。大著であるが親切に書かれており初学者 にも意外とわかりやすい 理論面を丁寧に記述している 練習問題が豊富 (だが5分で解ける問題、とかう ざい設定がしてある) 定本 C プログラミングのためのアルゴリズムとデータ 構造 近藤嘉雪 SOFTBANK BOOKS 簡潔で実用的。理論的な面は追及していない

17 順序集合 集合の要素間に上下関係を与えたもの ある集合 A の任意2つの要素 a 、 b に与えら れた二項関係により、 前順序集合 半順序集合 全順序集合 などが定義される

18 前順序集合 集合 A のすべての要素 a 、 b に対し二項関 係 (A,≤ ) があって、 反射則 : a ≤ a 推移則 : a ≤ b かつ b ≤ c ならば a ≤ c が成り立つとき、これを半順序集合という

19 半順序集合 集合 A のすべての要素 a 、 b に対し二項関 係 (A,≤ ) があって、 反射則 : a ≤ a 推移則 : a ≤ b かつ b ≤ c ならば a ≤ c 反対称律 : a ≤ b かつ b ≤ a ならば a = b が成り立つとき、これを半順序集合という

20 全順序集合 半順序集合 A の2つの要素 a, b に対し、 a ≤ b または b ≤ a のいずれか、あるいは両方 が成り立つとき、 a と b は比較可能 (comparable) であるといいう 順序集合 (A, ≤) の任意の2つの要素 a, b が比較 可能であるとき、順序 ≤ は全順序 (total order) または線型順序 (linear order) であると いい、順序集合 A は全順序集合 (totally ordered set) であるという(完全律 (totalness) )

21 順序集合の例 整数の部分集合 A ⊆ Z は算術演算に対し順序集 合、かつ全順序集合 (ただし、複素数 C は順序集合ではない) グー、チョキ、パーは感覚的勝敗に対し順序 集合ではない (推移則が成り立たない) 集合 A ⊂ N={ 4,1,4,7,8} は普通の算術演算に対し順序集合 (要素4が2つあるので、前順序集合)


Download ppt "逐次ソート 2011/05/16. ソート(sort) 順序集合の要素a 1 … a n の上下関係を整 える 一般的には、整数の集合 N を考えればよ い ソートの計算量が問題となる どのような入力に対し、どのようなアル ゴリズムが最適か?"

Similar presentations


Ads by Google