4.Hafta. Sıralama Algoritmaları Çabuk Sıralama, Rastgele Algoritmalar

Save this PDF as:
 WORD  PNG  TXT  JPG

Ebat: px
Şu sayfadan göstermeyi başlat:

Download "4.Hafta. Sıralama Algoritmaları Çabuk Sıralama, Rastgele Algoritmalar"

Transkript

1 4.Hafta Sıralama Algoritmaları Çabu Sıralama, Rastgele Algoritmalar

2 2 Sıralama Algoritmaları Sıralama algoritmaları tipleri: Karşılaştırmaya dayalı sıralama algoritmaları Heap Sort, quicsort, isertio sort, bubble sort, merge sort,... E iyi çalışma zamaı ( log ) Doğrusal zama sıralama algoritmaları Coutig sort (sayma), radix(taba) sort, bucet (sepet) sort.

3 3 Yeride Sıralama :I-place Sortig Yeride Sıralama: Algoritmaı, boyutu Θ () ola estra depolama (te değişeli ve register (ayıtlar) dışıda) ala geretirmemesi. Algoritma: - Bubble sort - Isertio sort - Selectio sort - Merge sort - Heap sort - Quic sort Yeride Sıralama Evet Evet Evet Hayır(e ala gereir) Evet Evet

4 4 Heap (Yığı ağacı) Heap, iili ağaç (biary tree) olara düşüebileceğimiz bir veri yapısıdır. Dizi Copmlete biary tree yaı bir ağaç olara görülebilir. E düşü seviye hariç bütü seviyeler doludur. Her düğümdei veri edi çocu düğümleride büyü (max-heap) veya üçütür (mi-heap).

5 5 Heap (Yığı ağacı) Copmlete biary tree: ull değeri dolu olursa ull Seviye: 3 2 0

6 6 Heap (Yığı ağacı) Heap, bir dizi olara tasarlarsa Kö düğüm A[] dir. i. düğüm A[i] i. düğümü ebeveyi A[i/2] (tam bölme) i. düğümü sol çocuğu A[2i] i. düğümü sağ çocuğu A[2i + ] Left(i)=2i Right(i)=2i+ Paret(i)= i / 2 Paret(i) { retur i/2; } Left(i) { retur 2*i; } Right(i) { retur 2*i + ; } Kö düğüm çocularıda büyü ise max-heap A[Paret(i)] A[i] Kö düğüm çocularıda üçü ise mi-heap A[Paret(i)] A[i]

7 7 Max-Heap Özelliği Kö düğüm çocularıda büyü ise max-heap A[Paret(i)] A[i], bütü düğümler içi i> Diğer bir deyişle düğümü değeri ayı zamada ou ebeveyi değeridir. Heap i e büyü elamaı erededir?

8 8 Heap Yüseliği Taım: Ağaçtai bir düğümü yüseliği; e alt seviyedei yaprağa doğru gidile yol üzeridei earları sayısıdır. Ağacı yüseliği; ö düğümü yüseliğidir. elamalı bir heap ağacı yüseliği, temel heap işlemlerii aldığı zama ile oratılıdır. (lg )

9 9 Heap İşlemleri: Heapify() Max_Heapify(): Temel heap özelliğii oruma. (A[i] elamaıı aşağıya taşıma) Verile: i düğümü ( l ve r çocularıa sahip) Verile: l ve r düğümleri (ii alt heap ağacıı öleri) Eylem: Eğer A[i] < A[l] veya A[i] < A[r] ise, A[i] değerii, A[l] ve A[r] i e büyü değeri ile yer değiştir. Çalışma zamaı: O(h), h = height of heap = O(lg )

10 Heap İşlemleri: Heapify() Max_Heapify ( A, i) { 0 } L = Left(i); R = Right(i); if (L <= heap_size(a) && A[L] > A[i]) largest = L; else largest = i; if (R <= heap_size(a) && A[R] > A[largest]) largest = R; if (largest!= i) Swap(A, i, largest); Max_Heapify (A,largest);

11 Heapify(): Öre A = A = A = A = A =

12 2 Heapify() Aalizi

13 3 Heapify() Aalizi: ispat

14 Heap İşlemleri :Heap Yapıladırması BuildHeap() A[..] dizisii =leght[a] uzuluğuda ola bir heap döüştürülmesi. Alt dizidei A[( / 2 +) ] elamalar heap durumudadır. 4 BuildHeap(A) { heap_size(a) = legth(a); for (i = legth[a]/2 dowto ) Max_Heapify(A, i); }

15 5 Öre:BuildHeap() A = {4,, 3, 2, 6, 9, 0, 4, 8, 7} i i i i i

16 6 BuildHeap() Aalizi Heapify() her çağrıldığıda O(lg ) zama alır. Max_Heapify (A, i), O(h) zama geretirir, burada h i. düğümü yüseliği yai log dir. Her seviyede O(/2 h+ ), Max_Heapify çağrısı yapılırsa O(/2 h ), (özellile /2 çağrılarda) BuildHeap çalışma zamaı aşağıdai şeilde hesaplaır.

17 7 BuildHeap() Aalizi:İspat

18 8 BuildHeap() Aalizi:İspat

19 BuildHeap() Aalizi 9

20 20 Heap Sort Algoritması Heapsort(A) { BuildHeap(A); } } for (i = legth(a) dowto 2) { Swap(A[], A[i]); heap_size(a) -= ; Heapify(A, );

21 2 Heap Sort Algoritması Aalizi BuildHeap() çağrılması: O() time Heapify() - çağrılması : O(lg ) time HeapSort() toplam çalışma zamaı T() = O() + ( - ) O(lg ) T() = O() + O( lg ) T() = O( lg )

22 22 Heap Sort Algoritması Aalizi BuildHeap() çağrılması: O() time Heapify() - çağrılması : O(lg ) time HeapSort() toplam çalışma zamaı = O() + ( - ) O(lg ) = O() + O( lg ) = O( lg )

23 23 Heap Sort Heapsort iyi bir algoritmadır faat pratite geelde Quicsort daha hızlıdır. Aca heap veri yapısı, öceli sırası uygulaması (priority queues) içi iaılmaz faydalıdır. Her biri ilişili bir aahtar (ey) veya değer ola elamaları oluşturduğu A dizisii muhafaza etme içi bir veri yapısı. Destelee işlemler Isert(), Maximum(), ve ExtractMax()

24 24 Heap Sort Isert(S, x) : S dizisie x elemaıı eler Maximum(S): S dizisidei masimum elamaı geri dödürür ExtractMax(S) S dizisidei masimum elamaı geri dödürür ve elamaı dizide çıarır

25 25 Öcelili Kuyru Uygulamaları (Implemetig Priority Queues) HeapIsert(A, ey) { heap_size[a] ++; i = heap_size[a]; while (i > AND A[Paret(i)] < ey) { A[i] = A[Paret(i)]; i = Paret(i); } A[i] = ey; }

26 26 Öcelili Kuyru Uygulamaları (Implemetig Priority Queues)

27 27 Öcelili Kuyru Uygulamaları (Implemetig Priority Queues)

28 28 Öcelili Kuyru Uygulamaları (Implemetig Priority Queues) HeapMaximum(A) { retur A[]; } HeapExtractMax(A) { if (heap_size[a] < ) { error; } max = A[]; A[] = A[heap_size[A]] heap_size[a] --; Heapify(A, ); retur max; }

29 Çabu Sıralama, Rastgele Algoritmalar Böl ve fethet Bölütüler E ötü durum çözümlemesi Sezgi (Ögörü) Rastgele çabu sıralama Çözümleme 29

30 30 Çabu sıralama (Quic Sort) C.A.R. Hoare tarafıda 962'de öerildi. Böl ve fethet algoritması. "Yeride" sıralar (araya yerleştirme sıralamasıda olduğu gibi; birleştirme sıralamasıda farlı). (Ayar yapılırsa ) ço prati.

31 3 Çabu sıralama (Quic Sort) Böl ve fethet -elemalı bir dizilimi çabu sıralaması:. Böl: Dizilimi pivot (ese sabit) x'i etrafıda ii altdizilime bölütüle; burada soldai altdizilim elemaları x sağdai altdizilim elemaları olsu. 2. Fethet: İi altdizilimi özyielemeli sırala. 3. Birleştir: Öemsiz (yeride sıraladığı içi) Aahtar: Doğrusal-zamalı (())bölütü altyordamı.

32 32 Çabu sıralama (Quic Sort) Böl ve fethet Quicsort algoritmasıda yapıla aa iş öz yielemede bölütülere ayırma işlemidir. Bütü iş bölütüleme de yapılmatadır. Buradai aahtar olay bölütü alt yordamı doğrusal zamada yai () olması. Merge sort algoritmasıda aa iş ise öz yielemeli birleştirme yapmadır, ().

33 Çabu sıralama (quicsort) içi sözdeod 33

34 Çabu sıralama (Quic Sort) Bölütüleme öreği 34

35 Çabu sıralama (Quic Sort) Bölütüleme öreği 35

36 Çabu sıralama (Quic Sort) Bölütüleme öreği 36

37 Çabu sıralama (Quic Sort) Bölütüleme öreği 37

38 Çabu sıralama (Quic Sort) Bölütüleme öreği 38

39 Çabu sıralama (Quic Sort) Bölütüleme öreği 39

40 Çabu sıralama (Quic Sort) Bölütüleme öreği 40

41 Çabu sıralama (Quic Sort) Bölütüleme öreği 4

42 Çabu sıralama (Quic Sort) Bölütüleme öreği 42

43 43 Çabu sıralamaı çözümlemesi Bütü girişleri bir biride farlı olduğu abul edilirse çalışma zamaı parçaları dağılımıa bağlıdır. Pratite, terarlaya girdi elemaları varsa, daha iyi algoritmalar vardır. elemaı ola bir dizilimde T(), e ötü oşma süresi olsu.

44 44 Çabu sıralamaı e ötü durumu (worst-case) Girdiler sıralı ya da ters sıralı. (Aca sıralı girişler isert sort içi e iyi durum olur) E üçü yada e büyü elemaları etrafıda bölütüleme. Bölütüü bir yaıda hiç elema yo veya parçalarda biri sadece bir elemaa sahip

45 Çabu sıralamaı E ötü durum özyieleme ağacı 45

46 Rastgele çabu sıralama çözümlemesi (aalizi) E ötü durum: T(0)= T = max 0 (T + T + θ ) Çözüm: T c 2 olduğu abul edilirse, T = max (c + c 2 + θ T = c max ( θ T = c( θ, T c 2 2c + θ T c 2 olur. 46

47 Çabu sıralamaı E iyi durum (Best Case) çözümlemesi ( Yalızca sezgi gelişimi amaçlı!) 47

48 Çabu sıralamaı E iyiye yaı durumu (Average Case) çözümlemesi 48

49 Çabu sıralamaı E iyiye yaı durumu (Average Case) çözümlemesi: Daha fazla sezgi E iyi ve e ötü durumları birleşimi: average case 49

50 50 Rastgele çabu sıralama Geelde şaslı olma içi Ortadai elamaı yaııda (/2) bölme yapılır Rastgele seçile bir elamaa göre bölme yapılır (Prati daha iyi çalışır.) FİKİR: Rastgele bir elema çevreside bölütü yap. Çalışma zamaı girişi sırasıda bağımsızdır. Giriştei dağılım ousuda herhagi bir varsayıma gere yotur. Hiçbir girdi e ötü durum davraışıa ede olmaz. E ötü durum yalızca rasgele sayı üretecii çıışıa bağlıdır.

51 Rastgele çabu sıralama (Radomized Quicsort) Bütü elemaları farlı olduğu abul edilir 5 Rastgele seçile elemaı yaııda bölüür Bütü bölme (:-, 2:2-2,,-:) durumları / oraıda eşit olasılığa sahiptir. Rastgele seçile algoritmaı average-case durumuu iyileştirir.

52 52 Rastgele çabu sıralama (Radomized Quicsort)

53 Rastgele çabu sıralama çözümlemesi (aalizi) 53

54 Rastgele çabu sıralama çözümlemesi 54

55 55 Rastgele çabu sıralama Beleei hesaplaması

56 56 Rastgele çabu sıralama Beleei hesaplaması

57 57 Rastgele çabu sıralama Beleei hesaplaması

58 58 Rastgele çabu sıralama Beleei hesaplaması

59 59 Rastgele çabu sıralama Beleei hesaplaması Karmaşı yieleme

60 60 Rastgele çabu sıralama Yerie oyma metodu

61 6 Rastgele çabu sıralama Yerie oyma metodu

62 62 Rastgele çabu sıralama Yerie oyma metodu

63 David Luebe 63 3/3/206 İici terimdei lg, lg ile sıırladırılır. Daha sıı bir üst sıır lg lg lg lg lg lg lg lg i toplamı dışıa taşıyı Daha sıı bir sıır içi toplamı böl

64 David Luebe 64 3/3/206 Şimdiye adari toplamı sıırı Daha sıı bir üst sıır lg lg lg lg lg 2 lg lg lg lg İl terimdei lg, lg /2 ile sıırladırılır lg /2 = lg ile sıırlıdır ve (lg - ) i toplamı dışıa taşıyı

65 David Luebe 65 3/3/206 Daha sıı bir üst sıır ) ( lg lg lg lg lg lg lg (lg - ) i dağıtı Guassia serisi

66 David Luebe 66 3/3/206 Daha sıı bir üst sıır 4 8 lg lg lg 2 lg 2 lg 2 ) ( lg X Guassia series

67 David Luebe 67 Daha sıı bir üst sıır 3/3/206 lg lg lg lg whe olur!!!

68 Orjial Partitio Algoritması 68

69 Çabu sıralama (Quic Sort) Bölütüleme öreği-2 pivot so elama 69

70 70 Pratite çabu sıralama Çabu sıralama öemli bir geel masatlı sıralama algoritmasıdır. Çabu sıralama tipi olara birleştirme (Merge Sort) sıralamasıda ii at daha hızlıdır. Çabu sıralama öbelleleme ve saal belle uygulamalarıda olduça uyumludur.

71 7 Quic sort ile Heapsort arşılaştırma Aaliz souçlarıa göre heap sort u e ötü durumu, hızlı sıralamaı ortalama durumuda ötüdür aca hızlı sıralamaı e ötü durumu ço daha ötüdür. Heapsort u ortalama durum aalizi ço armaşıtır faat e ötü durum ile ortalama durum arasıda ço az far vardır. Heapsort geelde Quicsort ta 2 at daha fazla zama alır. Ortalama olara maliyeti pahalı olmasıa rağme O( 2 ) olasılığıı öler. Quicsort radom bölütleme yapılırsa e ötü durumda log olur

72 E: Sıralama Algoritmaları Aaliz

73 Alt Sıırları Sıralama Doğrusal-Zama (liear time) Sıralaması Alt Sıırları Sıralama Karar ağaçları Doğrusal-Zama Sıralaması Sayma sıralaması Taba sıralaması Kova sıralaması 73

74 74 Ne adar hızlı sıralayabiliriz? Şu aa adar gördüğümüz tüm sıralama algoritmaları arşılaştırma sıralamalarıydı. Elemaları bağıl düzelerii saptamata yalız arşılaştırma ullaırlar. Öreği, araya yerleştirme, birleştirme sıralamaları, çabu sıralama, yığı sıralaması. Karşılaştırma sıralamalarıda gördüğümüz e iyi eötü-durum oşma süresi O(lg) idi. O(lg) elde edebileceğimizi e iyisi mi? Karar ağaçları bu soruu yaıtıa yardımcı olur.

75 75 Karar-ağacı öreği

76 76 Karar-ağacı öreği

77 77 Karar-ağacı öreği

78 78 Karar-ağacı öreği

79 79 Karar-ağacı modeli Bir arar ağacı her arşılaştırma sıralaması uygulamasıı modelleyebilir: Her giriş boyutu içi bir ağaç. Algoritmayı ii elemaı arşılaştırdığıda bölüüyormuş gibi görü. Ağaç tüm olası omut izleridei arşılaştırmalar içerir. Algoritmaı çalışma zamaı = taip edile yolu uzuluğu. E ötü-durum çalışma zamaı = ağacı boyu.

80 80 Karar-ağacı sıralamasıda alt sıır! e

81 8 Karar-ağacı sıralamasıda alt sıır Ramdomize Quic Sort da asimtoti olara e iyi arşılaştırma sıralama algoritması olduğu söyleebilir.

82 82 Doğrusal zamada sıralama Sayma sıralaması (Coutig Sort): Elemalar arası arşılaştırma yo. Giriş: A[.. ], burada A[ j] {, 2,, }., üçü ise iyi bir algoritma olur,, büyü ise ço ötü bir algoritma olur (log daha ötü) Çıış: B[.. ], sıralı. Yede depolama: C[.. ].

83 83 Sayma sıralaması adet girişi tamsayı olduğu abul edilir. Girişleri 0 ile arasıda olduğu abul edilir. Temel olara bir x elamaı içi ediside üçü elemaları sayısıı bulmayı amaçlar. Öreği x elemaıda üçü 7 elema varsa x elemaıı doğru yeri 8 olur. Girile dizi boyutuda bir e diziye ihtiyaç duyar Elemaları aralığı adar elemaa sahip iici bir e diziye ihtiyaç duyar.

84 Sayma sıralaması 84

85 85 Sayma sıralaması Dizi girişi ile 4 arasıdadır. O zama =4 olur.

86 Dögü 86

87 Dögü 2 87

88 Dögü 2 88

89 Dögü 2 89

90 Dögü 2 90

91 Dögü 2 9

92 Dögü 3 92

93 Dögü 3 93

94 Dögü 3 94

95 Dögü 4 95

96 Dögü 4 96

97 Dögü 4 97

98 Dögü 4 98

99 Dögü 4 99

100 Çözümleme 00

101 0 Çalışma Zamaı = O() ise, sayma sıralaması Θ() süresi alır. Eğer = 2 veya =2 ço ötü bir algoritma olur. tamsayı olmalı. Ama sıralamalar Ω( lg ) süresi alıyordu! (arar ağacı) Hata erede? Yaıt: Karşılaştırma sıralaması Ω( lg ) süre alır. Sayma sıralaması bir arşılaştırma sıralaması değildir. Aslıda elemalar arasıda bir tae bile arşılaştırma yapılmaz!

102 02 Çalışma Zamaı usig System; class Program { static void Mai(strig[] args) { Radom rad = ew Radom(); it[] arr = ew it[8]; for (it i = 0; i < 8; i++) { arr[i] = rad.next(0, 0); Cosole.Write(" "+arr[i]);} Cosole.WriteLie(); it[] ewarr = CoutigSort(arr, arr.mi(), arr.max()); foreach(it x i arr) Cosole.Write(" "+x); } private static it[] CoutigSort(it[] arr, it mi, it max) { it[] cout = ew it[max - mi + ]; it z = 0; for (it i = 0; i < cout.legth; i++) { cout[i] = 0; } for (it i = 0; i < arr.legth; i++) { cout[arr[i] - mi]++; } for (it i = mi; i <= max; i++) { while (cout[i - mi]-- > 0) { arr[z] = i; z++; } } } } retur arr;

103 03 Sayma sıralamaı artıları esileri Artıları: ve da doğrusaldır (lieer). Kolay uygulaır. Esileri: Yeride sıralama yapmaz. Estra depolama alaıa ihtiyaç duyar. Sayıları üçü tam sayı olduğu varsayılır. Byte ise e dizii boyutu e fazla 2 8 = 256 olur faat sayılar it ise yai 32 bit li sayılar ise 2 32 = 4.2 milyar sayı eder oda yalaşı 6 Gb yer tutar.

104 5. Hafta Sıra İstatistileri, Bilie Probleme İdirgeme (Devam) Doğrusal-Zama Sıralaması Taba sıralaması Kova sıralaması 04

105 Quicsort Aalizi: Ortalama Durum (0:-, :-2, 2:-3,, -2:, -:0) bölüme üretiliyor ise her bir bölümei / olasılığı vardır. T() i belee çalışma zamaı T T T T T () değeride 2 tae var Çözümü T()alog+b olduğu abul edilsi

106 T Quicsort Aalizi: Ortalama Durum T b a lg b a lg b a lg b a lg b 2b Yieleme ile çözüm Tümevarım hipotezi yerleştir =0 durumuda geişlet 2b/ sabit olduğuda () içerisie dahil et

107 07 3/3/206 Quicsort Aalizi: Ortalama Durum T a lg b 2 2 2a 2a a lg lg lg 2 2b b ( ) 2b Yieleme ile çözüm Toplamı dağıt Toplamı değerledir: b+b+ +b = b (-) Çüü -<, 2b(-)/ < 2b

108 David Luebe 08 T Quicsort Aalizi: Ortalama Durum 2a 2a a lg a lg b a lg b 2 lg lg lg 2b 2 lg a 2b 4 2 lg 8 olur. 2 2b b, a 4 lg 2 2 lg 8 2 olduguda İspat:T() a lg + b 3/3/206 toplamıdai terimler e fazla log olur. Bu durumda e fazla terim vardır. olur.