3. Sortiere Beispiel für Aalyse vo Verfahre ud gleichzeitig eie Art, Datemege zu verwalte. Sortiere: eie Folge so permutiere, dass sie aufsteiged geordet ist. 3,7, 7,,3 Motivatio: 5% aller Recherzeit wird für Sortiere verbraucht. Vorlesug Algorithme (RN/MK/AZ) WSI für Iformatik, Uiversität Tübige
3. Sortiere durch Auswahl: Eigabe:,3,6,7,6, Ausgabe: 3,6,6,7,, Jeweils Miimum suche, ausgebe, streiche.) Wie repräsetiere wir Ei- ud Ausgabefolge? Beutze z.b. Felder A ud B: i-tes Ei- ud Ausgabeelemet i A[i] bzw. B[i]..) Was bedeutet es, eie Zahl zu streiche? Beutze weiteres Feld: Rem: array [...] of boolea Rem[i] = true bedeutet, dass A[i] durchgestriche ist. Vorlesug Algorithme (RN/MK/AZ) WSI für Iformatik, Uiversität Tübige
3.) Wie bestimme wir die Positio des Miimums? fuctio Posofmi: iteger; var i, pos : iteger begi i ; while Rem[i] do i i; pos i; for i = to do if (A[i] < A[pos]) ad ot Rem[i] the pos i; Posofmi pos; ed Vorlesug Algorithme (RN/MK/AZ) WSI für Iformatik, Uiversität Tübige 3
We wir icht Zahle sortiere, soder beliebige Elemete eies bestimmte Typs, so ersetze wir (A[i] < A[pos]) durch lesstha (A[i], A[pos]), wobei fuctio lesstha (x,y : typ): boolea geeiget defiiert werde muss. Vorlesug Algorithme (RN/MK/AZ) WSI für Iformatik, Uiversität Tübige 4
Sortiere durch Auswahl for i to do Rem[i] := false; for i to do begi j posmi; B[i] A[j]; Rem[j] true ed; Vorlesug Algorithme (RN/MK/AZ) WSI für Iformatik, Uiversität Tübige 5
Elegatere ud platzeffizietere Lösug 8 6 3 7 6 3 6 8 7 6 for i to do 3 6 8 7 6 begi j posmi (i,); 3 6 6 7 8 (* posmi liefert Miimum vo A[i],...,A[] *) 3 6 6 7 8 exchage (A[i], A[j]); 3 6 6 7 8 ed; Vorlesug Algorithme (RN/MK/AZ) WSI für Iformatik, Uiversität Tübige 6
3. Quicksort (Sortiere durch Teile) Wede Teile- ud Beherrsche -Prizip a. Eigabe: Feld S mit Werte x, x,..., x Idee. Teile S-{x } bzgl. x i Mege A,B (Teile) A = x i ud x x, sei A = j B = { i i } { x i ud x > x } i Speichere A i S[]...S[j] x i S[j] B i S[j]...S[] A i x j j B. Wede Verfahre rekursiv auf A ud B a. (Beherrsche) Vorlesug Algorithme (RN/MK/AZ) WSI für Iformatik, Uiversität Tübige 7
Implemetierug: Füge S [] 0 = ud S[ ] = zu S hizu. Dies erspart eiige Tests. Teil : Teile i ; j ; k S[] ; repeat while S[ i] k do i i ; while S [ j] > k do j j- ; if i j fi util i > j ; Vertausche (S[], S[j]) the vertausche (S[i], S[j]) i i ; j j- ; Vorlesug Algorithme (RN/MK/AZ) WSI für Iformatik, Uiversität Tübige 8
Aalyse: Koste = Azahl der Vergleiche zwische S[i] s. Koste im schlechteste Fall: Koste eies Aufrufs Quicksort (l,r) sid a) umittelbare Koste bei Teile-Schritt O(r-l) Vergleiche b) Koste der rekursive Aufrufe Sei QS() = max. Azahl vo Vergleiche, die Quicksort a Feld der Läge durchführt. Es gilt: QS QS ( ) = O( ) ( 0) = QS( ) = 0. max{ QS( j ) QS( j)} j 443 443 rek. Aufruf für A für B Vorlesug Algorithme (RN/MK/AZ) WSI für Iformatik, Uiversität Tübige 9
Behauptug: QS Beweis: durch Iduktio ( ) ( ) ( i = O ) = i= Bemerkug: A Eigabe,, 3,..., führt Quicksort wirklich O( ) Vergleiche durch. Obere Schrake ist also scharf. Vorlesug Algorithme (RN/MK/AZ) WSI für Iformatik, Uiversität Tübige 0
Koste im Mittel: Aahme:. Elemete vo S sid paarweise verschiede.. Jede der! mögliche Permutatioe der Eigabe ist gleich wahrscheilich. Damit köe wir o.b.d.a. aehme, dass die Schlüssel die Zahle,,..., sid ud dass S[] = k ist mit Wahrscheilichkeit / für k. Vorlesug Algorithme (RN/MK/AZ) WSI für Iformatik, Uiversität Tübige
Da müsse rekursiv Teilprobleme der Größe k- ud -k gelöst werde. Diese Teilprobleme sid wieder zufällige Folge, d.h. sie erfülle Aahme.) ud.). (Beweis: etfällt, siehe Literatur) ( ) Sei QS die mittlere Azahl der Vergleiche, die Quicksort a eiem Feld der Größe durchführt. Vorlesug Algorithme (RN/MK/AZ) WSI für Iformatik, Uiversität Tübige
QS ud ( 0) = QS() = 0 QS( ) = "Erwartugswert QS( A) QS( B) QS = = k = k = 0 ( ) ( QS( k ) QS( k) ) ( k) ( ) = QS( k) k = 0 QS " Vorlesug Algorithme (RN/MK/AZ) WSI für Iformatik, Uiversität Tübige 3
ud ( ) QS( ) = ( ) QS( k) Da: ( ) QS( ) QS( ) = ( ) QS( ) = QS( ) ( ) QS( ) = ( ) QS( ) k = 0 Vorlesug Algorithme (RN/MK/AZ) WSI für Iformatik, Uiversität Tübige 4
Vorlesug Algorithme (RN/MK/AZ) WSI für Iformatik, Uiversität Tübige 5 ( ) ( ) ( ).... QS QS = = = ) ( ) ( K K
Vorlesug Algorithme (RN/MK/AZ) WSI für Iformatik, Uiversität Tübige 6 ( ) ( ) ( ) ( ) ( ) ( ) ( )( ) ( ) O i i i i QS i i i i log l = = = = = = = = d.h. Satz: Die mittlere Laufzeit vo Quicksort ist O( log ).
3.3 Heapsort (Sortiere durch Auswahl) Heap ist Datestruktur, die folgede Operatioe uterstützt: fuctio Emptyheap : heap; liefert Heap mit Wert ø. procedure Isert (x: item, var h: heap); verädert Wert vo h durch Eifüge vo x fuctio Extractmi (var h: heap): item; verädert Wert vo h durch Streiche des Miimums ud liefert gestrichees Elemet. Vorlesug Algorithme (RN/MK/AZ) WSI für Iformatik, Uiversität Tübige 7
Heapsort: h Emptyheap; for i = to do Isert (A[i], h); for i = to do B[i] Extractmi (h); Vorlesug Algorithme (RN/MK/AZ) WSI für Iformatik, Uiversität Tübige 8
Zur Realisierug vo Heaps: Ei biärer Baum ist etweder leer oder er besteht aus eiem Kote, der Wurzel geat wird, ud eiem rechte ud like Teilbaum. Bsp.: u v w u ist die Wurzel, v die Wurzel des like Teilbaums vo u,... v = Kid vo u, u = Elterkote vo v, x ist ei Blatt. x Vorlesug Algorithme (RN/MK/AZ) WSI für Iformatik, Uiversität Tübige 9
Sei u ei Kote i eiem Baum T. Tiefe(u) := Höhe(u) := 0, falls u die Wurzel ist Tiefe(Elterkote(u)), sost Bsp.: Tiefe(w) = 0, falls u ei Blatt ist max{höhe(v) v ist Kid vo u}, sost Bsp.: Höhe(w) = Tiefe(T) := max {Tiefe(u) u ist Kote i T} Höhe(T) := max {Höhe(u) u ist Kote i T} = Höhe(Wurzel(T)) Vorlesug Algorithme (RN/MK/AZ) WSI für Iformatik, Uiversität Tübige 0
(Biäre) Heaps lasse sich durch Biärbäume darstelle: Bsp.: {,, 3, 4, 5} darstellbar durch 5 4 3 oder oder... 3 4 5 Jeder Baumkote u ist mit eiem Elemet S[u] beschriftet. Zusätzlich forder wir die Heap-Eigeschaft : Ist u Elterkote vo v, so ist S [ u] S[ v] Vorlesug Algorithme (RN/MK/AZ) WSI für Iformatik, Uiversität Tübige
Realisierug der Heap-Operatioe: fuctio Emptyheap: klar! fuctio Extractmi: Miimumsbestimmug: Mi. steht a der Wurzel Miimumsetferug: Baum muss reorgaisiert werde Vorlesug Algorithme (RN/MK/AZ) WSI für Iformatik, Uiversität Tübige
Bsp.: 6 4 Reorg. I 0 6 4 8 0 6 5 3 8 6 5 3 I) Beliebiges Blatt wird etfert ud a die Wurzel gesetzt. Vorlesug Algorithme (RN/MK/AZ) WSI für Iformatik, Uiversität Tübige 3
II) daach wird durch sukzessives Vertausche mit dem kleiste Kid die Heap-Eigeschaft wiederhergestellt: Reorg. II 4 6 0 Reorg. II 4 6 6 8 6 5 3 8 0 5 3 Vorlesug Algorithme (RN/MK/AZ) WSI für Iformatik, Uiversität Tübige 4
procedure Isert: Eizufügedes Elemet a Kote ahäge, welcher höchstes ei Kid hat. Daach Vertausche mit Elterkote, falls dieser größer ist usw. Bsp.: Eifüge des Elemets 5: 4 6 6 4 4 6 6 6 5 8 0 5 8 5 5 8 6 5 5 3 0 3 0 3 Vorlesug Algorithme (RN/MK/AZ) WSI für Iformatik, Uiversität Tübige 5
Ausgewogee Bäume: Es gibt k 0, sodass. Alle Blätter habe Tiefe k oder k ud. Blätter der Tiefe k sitze gaz liks. Bsp.: 4 5 6 3 7 Nummerierug der Kote: Nummeriere Kote der Höhe ach ud ierhalb jeder Höhe vo liks ach rechts. 8 9 0 Vorlesug Algorithme (RN/MK/AZ) WSI für Iformatik, Uiversität Tübige 6
Da gilt: () Hat ei Kote Nummer i >, so hat sei Elterkote die Nummer i /. () Hat ei Kote Nummer i, so habe seie Kider (falls existet) die Nummer i ud i. Darstellug ausgewogeer biärer Baum durch Paar (A,), wobei Azahl der Kote ud A Array, sodass A[i] Beschriftug des Kotes mit Nummer i ist für alle i =,...,. Vorlesug Algorithme (RN/MK/AZ) WSI für Iformatik, Uiversität Tübige 7
Beispiel: 6 3 4 0 4 5 6 8 7 9 3 8 9 0 4 7 A: 6 4 0 8 7 9 3 4 3 4 5 6 7 8 9 0 Vorlesug Algorithme (RN/MK/AZ) WSI für Iformatik, Uiversität Tübige 8
Zur Implemetierug vo Heapsort: type heap = record ed A: array [...N] of item; <*N hireiched groß*> : iteger; fuctio Emptyheap : heap; var h: heap; begi h. 0; <*keie Elemete*> Emptyheap h ed Vorlesug Algorithme (RN/MK/AZ) WSI für Iformatik, Uiversität Tübige 9
procedure Isert (x: item; var h: heap); var i,j: iteger; fiish: boolea; begi h. h. ;<*ei Elemet mehr*> i h. h.a[i] x; <*eues, liksbüdiges El.*> fiish (i = ); while ot fiish do begi j i div <*j Elterkote vo i*> if h.a[i] < h.a[j] the Iterchage (h.a[i], h.a[j]) else fiish true; i j; if fiish = false the fiish (i=); ed ed Vorlesug Algorithme (RN/MK/AZ) WSI für Iformatik, Uiversität Tübige 30
Zur Laufzeit-Aalyse vo Heapsort: Heapsort besteht i.w. aus je Aufrufe vo Isert ud Extractmi. Leicht sieht ma: Ausführugszeit vo Isert ud Extractmi ist O(Höhe des Baumes) Lemma: Hat ei ausgewogeer Baum die Höhe m, so ethält er midestes m ud weiger als m Kote. Vorlesug Algorithme (RN/MK/AZ) WSI für Iformatik, Uiversität Tübige 3
Nu gilt: m m Wir erhalte Laufzeit = log ( m) = O( ( log ) ) O( log ). O = Bemerkuge: Obwohl Heapsort im Gegesatz zu Quicksort sogar im Worst Case Laufzeit O( log ) hat, ist Quicksort i der Praxis meist überlege. Für vergleichsbasierte Sortierverfahre läßt sich die utere ( ) Schrake Ω log beweise, Heapsort ist i diesem Sie also asymptotisch optimal. Diese utere Schrake gilt auch im Durchschitt (bei Gleichverteilug). Vorlesug Algorithme (RN/MK/AZ) WSI für Iformatik, Uiversität Tübige 3
3.4 Mergesort (Sortiere durch Mische) Bisher betrachtete Sortierverfahre: Date im Hauptspeicher. Für extere Speichermedie, aber adere Sortierverfahre vorteilhaft, z.b. Sortiere durch Mische: Füge zwei (oder mehrere) sortierte Folge zu eier sortierte Folge zusamme. Z.B. 6 6 5 3 8 5 8 6 6 5 5 3 Vorlesug Algorithme (RN/MK/AZ) WSI für Iformatik, Uiversität Tübige 33
Mischalgorithmus: Start mit leerer Ausgabefolge Solage mid. eie Eigabefolge ichtleer, - bestimme x = mi A, wobei A die Mege der erste Elemete der ichtleere Eigabefolge ist, -etfere x aus Eigabefolge, wo es vorkommt ud - füge es as Ede der Ausgabefolge. Korrektheit: x ist icht ur das Miimum über A, soder über der Mege aller verbleibede Eigabeelemete... Vorlesug Algorithme (RN/MK/AZ) WSI für Iformatik, Uiversität Tübige 34
Zum Sortierverfahre: Bezeiche aufsteiged sortierte Teilfolge als Rus. Grudprizip: Teile Eigabe i Teilfolge der Läge (das sid Rus). Mische daach Rus zu lägere Rus. Bsp.: Eigabe: 3,, 4,, 5, 9,, 6, 5, 3, 5 () Streuphase: 3,, 4,, 5, 9,, 6, 5, 3, 5 3, 4, 5,, 5, 5,, 9, 6, 3 Vorlesug Algorithme (RN/MK/AZ) WSI für Iformatik, Uiversität Tübige 35
() Mischphase: 3 4 5 5 5 3 5 9 3 5 9 6 3 4 6 5 3 4 3 5 5 5 6 9 3 4 5 6 9 3 5 5 3 3 4 5 5 5 6 9 Vorlesug Algorithme (RN/MK/AZ) WSI für Iformatik, Uiversität Tübige 36
Beobachtug: Nach i-tem Durchlauf habe alle Rus i Läge. Allgemeier: p i für p = # Eigabedateie = # Ausgabedateie We p i, so ist die Eigabe sortiert. Also geau log p Durchläufe ötig. Vorlesug Algorithme (RN/MK/AZ) WSI für Iformatik, Uiversität Tübige 37
Effiziezverbesserug: Aahme: Hauptspeicher habe Platz für m Elemete (p < m < ). Da köe wir Durchläufe spare, idem wir itere Sortierverfahre dazu beutze, afags Rus der Läge m zu erstelle. Bsp.: m = 3 3 4 5 9 6 5 3 5 3 4 5 9 3 5 5 6 3 4 5 6 5 9 3 5 3 3 4 5 5 5 6 9 Vorlesug Algorithme (RN/MK/AZ) WSI für Iformatik, Uiversität Tübige 38
Aalyse: Nach i Durchläufe habe die Rus Läge m i (bzw. m p i ). Also geüge log p Durchläufe. m Bsp.: = 0 7, m = 0 4, p = 3 7 Durchläufe Vorlesug Algorithme (RN/MK/AZ) WSI für Iformatik, Uiversität Tübige 39
3.5 Bucketsort (Sortiere durch Fachverteilug) Betrachte obda Alphabet Σ = {,,..., m} * Für die Wörter x = x... x k ud y = y... y r Σ sage wir, dass x kleier als y (x < y) ist, geau da, we i, 0 i k j, j i: x j = y j ud etweder i = k < r oder i < k ud i < r ud x i < y i. Ziel: Wörter über dem Alphabet Σ bzgl. der gegebee Ordug sortiere. Vorlesug Algorithme (RN/MK/AZ) WSI für Iformatik, Uiversität Tübige 40
Spezialfall : Alle Wörter habe Läge. Lösugsasatz: Stelle m Fächer bereit ud gehe die Zahle durch ud wirf jede Zahl i das ihrem Wert gemäße Fach. Implemetierug der Fächer z.b. als lieare Liste ud ei Feld der Größe m zum Speicher der Listeköpfe. Gesamtzeitaufwad: O( m) Vorlesug Algorithme (RN/MK/AZ) WSI für Iformatik, Uiversität Tübige 4
Spezialfall : Alle Wörter habe gleiche Läge k. Schreibweise: i-tes Wort: x i = x i x i... x i k Vorteilhaft, zuächst ach dem k-te Symbol zu sortiere, da ach dem (k-)-te, usw. Damit k Läufe über die Mege der Wörter. Jeder Lauf gemäß Spezialfall Laufzeit O(( m) k) Vorlesug Algorithme (RN/MK/AZ) WSI für Iformatik, Uiversität Tübige 4
Bsp.: 3, 4, 3, 34, 3 m = 4, = 5, k = 3. Lauf 3 3 3 34 4. Lauf 3. Lauf 4 3 34 4 3 3 3 3 34 3 Vorlesug Algorithme (RN/MK/AZ) WSI für Iformatik, Uiversität Tübige 43
Wie vermeide wir Aufwad mit leere Fächer? Sei s j die Azahl der im j-te Lauf ichtleere Fächer. Ziel: Aufsammel im j-te Lauf i O(s j ) Schritte ud damit Aufwad j-ter Lauf O(s j ). i Erzeuge k Paare (j, x j ), i, j k ud sortiere durch Fachverteilug zuächst ach der zweite ud da ach der erste Kompoete. Nach. Lauf liege im j-te Fach gerade alle Buchstabe i sortierter Reihefolge, die a der j-te Stelle vorkomme. Aufwad. Lauf: O( k m) Aufwad. Lauf: O( k k) Σ : O( k m) Vorlesug Algorithme (RN/MK/AZ) WSI für Iformatik, Uiversität Tübige 44
Allgemeier Fall: Wörter beliebiger Läge x i =: r i, L :=, l max := max i {l i } i= l i Beachte: xi icht zu früh i Fachverteilug miteibeziehe; erst bearbeite, we ach dem l i -te Buchstabe sortiert wird. ( Sortiere Wörter zuächst der Läge ach...) Vorlesug Algorithme (RN/MK/AZ) WSI für Iformatik, Uiversität Tübige 45
Algorithmus: 3 4 Bestimme l i i ud erzeuge Paare (l i, Verweis auf x i ) Sortiere (l i, Verweis auf x i ) durch Fachverteilug ach. Kompoete. Bezeiche Läge[k] die Liste der Elemete der Läge k. Erzeuge L Paare (j, x ji ), i, j r ud i sortiere sie ach der. ud da der. Kompoete.. Fachverteilug liefert lieare Liste Nichtleer[j], j l max. Lösche Duplikate aus Nichtleer[j]. Sortiere u die Wörter x i durch Fachverteilug wie obe beschriebe (uter Berücksichtigug vo Läge[k]). Vorlesug Algorithme (RN/MK/AZ) WSI für Iformatik, Uiversität Tübige 46
Eie eifache Aalyse zeigt: Satz: Sortiere durch Fachverteilug sortiert Wörter der Gesamtläge L über eiem Alphabet der Größe m i Zeit O(m L). Awedug: Sortiere reeller Zahle x,...,x Vereifachug: Betrachte reelle Zahle x i (0,] mit i : Vorlesug Algorithme (RN/MK/AZ) WSI für Iformatik, Uiversität Tübige 47
3.6 Hybridsort α R fest, k : = α Schaffe k leere Körbe. Wirf x i i de Korb k xi für i Wede Heapsort auf jede Korb a ud kokateiere die Körbe, d.h. reihe sie hitereiader auf. Mitteilug:. Worst Case Laufzeit vo Hybridsort ist O( log ).. We x i uabhägig gemäß Eiheitsverteilug aus (0,] gewählt, da hat Hybridsort mittlere Laufzeit O(). Vorlesug Algorithme (RN/MK/AZ) WSI für Iformatik, Uiversität Tübige 48