Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Algoritma Analizi 1 Lower Bounds for Sorting Input elementlerinin karsilastirilmasina dayanarak siralama yapan sorting algoritmalari siralama yapmak icin.

Benzer bir sunumlar


... konulu sunumlar: "Algoritma Analizi 1 Lower Bounds for Sorting Input elementlerinin karsilastirilmasina dayanarak siralama yapan sorting algoritmalari siralama yapmak icin."— Sunum transkripti:

1 Algoritma Analizi 1 Lower Bounds for Sorting Input elementlerinin karsilastirilmasina dayanarak siralama yapan sorting algoritmalari siralama yapmak icin en kotu durumda  (n lg n) karsilastirma yapmali. Dolayisiyle merge sort ve heapsort asymptotik olarak optimal. Diger siralama algoritmalari (counting sort, radix sort, bucket sort) karsilastirma isleminden farkli islemler kullanmak suretiyle siralama yapanlarin orderi daha iyi olabilir-- run in linear time.

2 Algoritma Analizi 2 Decision Tree Herbir internal node a i : a j ile ilistirilir ( 1  i,j  n.) Her bir leave (yaprak) a ise bir permutation  ( i ) ilistirilir.

3 Algoritma Analizi 3 Lower Bound for Worst Case N elementi siralayan bir decision tree nin yuksekligi  (n lg n). Proof: n elementin n! tane permutation i var. Her bir permutasyon farkli bir siralamanin sirasini gosterir, tree en azindan n! yapraga sahip. h yukseklige sahip bir binary tree 2 h le yapraktan fazla yapraga sahip olamayacagindan, n!  2 h  h  lg(n!) By Stirling’s approximation: n! > (n/e) n h  lg(n!)  lg(n/e) n = n lg n - n lg e =  (n lg n)

4 Algoritma Analizi 4 Counting Sort n input elementinin her biri 1 ile k arasinda bir integer, ve k = O(n) ise siralama O(n) zaman alir.

5 Algoritma Analizi 5 Counting-Sort (A, B, k) 1. for i  1 to k do 2. C[i]  0 3. for j  1 to length[A] do 4. C[A[j]]  C[A[j]] for i  2 to k do 6. C[i]  C[i] + C[i-1] 7. for j  length[A] downto 1 do 8. B[C[A[ j ]]]  A[j] 9. C[A[j]]  C[A[j]] - 1

6 Algoritma Analizi 6 Algorithm Analysis Toplam running time: O(n+k). k=O(n), oldugunda worst case: O(n). –for-loop of lines 1-2 takes time O(k) –for-loop of lines 3-4 takes time O(n) –for-loop of lines 5-6 takes time O(k) –for-loop of lines 7-9 takes time O(n) Stable, in place degil. Karsilastirma yapilmiyor: Elemanlarin degerleri kullanilarak array indeksleniyor

7 Algoritma Analizi 7 Radix Sort Once “least significant digit” (en degersiz digit) e gore siralama yap, daha sonra geri kalan digitlere gore siralama yap. Her bir digit e gore siralama yapan siralama metodu “stable” olmali The key is sort the “least significant digit” first and the remaining digits in sequential order. The sorting method used to sort each digit must be “stable”.

8 Algoritma Analizi 8 Ornek  495  446    

9 Algoritma Analizi 9 Radix-Sort(A, d) 1. for i  1 to d 2. do use a stable sort to sort array A on digit i

10 Algoritma Analizi 10 Algorithm Analysis Her bir iteration  ( n+k ) zaman alir. Iteration sayisi n: radix sort icin gerekli running time  ( d n+ d k ) dir. d sabit ve k = O(n) ise, radix sort un komplexitesi linear dir. Eger radix sort counting sort u ara stable sort olarak kullaniyorsa, in place siralama yapmaz. –Eger memory storage onemli ise, ara siralama icin quicksort veya diger sorting algoritmalari kullanmak tercih edilebilir.

11 Algoritma Analizi 11 Bucket Sort Counting sort ve radix sort integer lar icin iyi sorting algoritmalaridir. Floating point sayilar icin bucket sort veya diger comparison-based metodlar kullanilir. Input un random bir islemle [0,1) araliginda uniform olarak uretildigini dusunelim (diger araliklar [0,1) araligina scale edilebilir) Temel fikir: araligi n tane esit boyda alt araliklara (buckets) bol, daha sonra n input sayilarini bucket lere yerlestir. Her bir bucket deki elementler kendi icinde siralanir. Daha sonra butun bucket deki sirali elementler birlestirilir.

12 Algoritma Analizi 12 An Example

13 Algoritma Analizi 13 Bucket-Sort (A) 1. n  length[A] 2. for i  1 to n 3. do insert A[i] into list B[  nA[i]  ] 4. for i  0 to n-1 5. do sort list B[i] with insertion sort 6. Concatenate the lists B[i] s together in order


"Algoritma Analizi 1 Lower Bounds for Sorting Input elementlerinin karsilastirilmasina dayanarak siralama yapan sorting algoritmalari siralama yapmak icin." indir ppt

Benzer bir sunumlar


Google Reklamları