Algorithmen und Datenstrukturen 7. Vorlesung

Größe: px
Ab Seite anzeigen:

Download "Algorithmen und Datenstrukturen 7. Vorlesung"

Transkript

1 Algorithmen und Datenstrukturen 7. Vorlesung Karl-Heinz Niggl 6. Mai 006 Behandelte Sortieralgorithmen insertion-sort(a[..n]) mit worst-case und average-case Laufzeit O(n ) merge-sort(a,p,r) mit worst-case Laufzeit O(n log n), n := r p + die Anzahl der zu sortierenden Elemente heap-sort(a[..n]) mit worst-case Laufzeit O(n log n), basierend auf der Datenstruktur Heap Heute: Datenstruktur Priority Queue (Vorrangswarteschlange) quicksort(a[..n]) mit Laufzeit O(n ) im worst-case, aber O(n log n) im average-case FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Erinnerung an die Datenstruktur Heap Ein Max-Heap ist ein Array A[..len(A)] mit Einträgen aus einer totalen Ordnung (U, ) und Attribut heap-size(a) =: n, so daß für j =,...,n gilt: oder explizit ausgedrückt: A[parent(j)] A[j] left(i) n = A[i] A[left(i)] right(i) n = A[i] A[right(i)] Dabei: parent(i) := i/ left(i) := i und right(i) := i + Erinnerung an die Datenstruktur Heap Ein Binärbaum T mit Knotenbeschriftungen l(v) aus (U, ) heißt max-heapgeordnet, falls für je zwei Knoten v,v gilt: v ist Vater von v = l(v) l(v ) Ein Binärbaum T der Tiefe d heißt linksvollständig, falls alle Schichten i d vollständig aufgefüllt sind, bis auf eventuell Schicht d; diese ist von links her aufgefüllt. Gesehen: Jeder n-elementige Max-Heap A entspricht genau einem max-heapgeordneten, linksvollständigen Binärbaum T A der Tiefe (Höhe) log n. FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

2 Erinnerung an die Datenstruktur Heap 3 Bsp. Max-Heap als Binärbaum und als Array Erinnerung an heap-sort Zentralinmax-heapsort ist die Prozedurmax-heapify(A,i). Eingabe: Ein Array A und ein Index i, so daß die zugehörigen (binären) Teilbäume mit Wurzelleft(i) bzw. right(i) maxheapgeordnet sind, aber die Max-Heap-Eigenschaft A[i] A[left(i)],A[right(i)] eventuell verletzt ist. Ausgabe: ArrayA, so daß der zugehörige Teilbaum mit Wurzel i max-heapgeordnet ist. Idee: Vertausche rekursiv A[i] mit Maximum von A[left(i)] und A[right(i)], bis Max-Heap-Eigenschaft erfüllt ist. = worst-case Laufzeit O(log n) FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Erinnerung an heap-sort Weiterer Baustein: Prozedur build-max-heap(a) Wissen: Die Elemente mit Indizes n/ +, n/ +,...,n sind genau die Blätter des gesuchten n-elementigen Heaps A. Diese bilden die Basis für build-max-heap. Die restlichen Elemente werden mittels max-heapify in A einsortiert. : procedure build-max-heap(a) : heap-size(a) len(a) 3: for i len(a)/ downto do 4: max-heapify(a,i) Laufzeit: O(n) Insgesamt ergibt dies: Erinnerung an heap-sort 3 : procedure max-heapsort(a) : build-max-heap(a) 3: for i len(a) downto do 4: Vertausche A[] mit A[i] 5: heap-size(a) heap-size(a) 6: max-heapify(a,) Laufzeit: O(n log n) Denn: build-max-heap(a) benötigt ZeitO(n) undjederder n Aufrufevonmax-heapify(A,) benötigt Zeit O(log n). FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

3 Priority Queues Def. Eine Max-Priority Queue (undanalogfürmin-priority Queue) ist eine Datenstruktur zur Verwaltung einer (dynamischen) Menge S, wobeijedem Element x einschlüsselkey(x) aus (U, ) zugeordnet ist (Schlüssel = Priorität), die folgende Operationen unterstützt: insert(s, x) fügt das Element x in S ein. maximum(s) liefert das Element mit größtem Schlüssel. extract-max(s) liefert und entfernt das Element von S mit größtem Schlüssel. increase-key(s, x, k) aktualisiert den Schlüssel von Element x mit k, falls k > key(x). Anwendungen: Priority Queues ) Prozessverwaltung in Multitask-Systemen Jeder Prozess hat einen Namen (eine ID ) und eine Priorität (Zahl in N). Üblich: kleinere Zahlen bedeuten höhere Prioritäten. Aktuellausführbare Prozesse befindensichineiner Queue. Bei Freiwerden eines Prozessors (z.b. durch Unterbrechen eines Prozesses) wird einer der Prozesse mit höchster Priorität aus der Queue entnommen und weitergeführt. FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Priority Queues 3 ) Discrete Event Simulation System von Aktionen soll auf dem Rechner simuliert werden. Jeder Aktion A ist ein Zeitpunkt t A [0, ) zugeordnet. Die Ausführung eines A kann neue Aktionen A erzeugen oder ausführbar machen, mit neuen Zeitpunkten t A > t A. Ein Schritt: Wähle diejenige noch nicht ausgeführte Aktion mit dem frühesten Ausführungszeitpunkt und führe sie aus. 3) Innerhalb von Algorithmen (Beispiele später). Priority Queues 4 Vereinfachungen: ) Die zugrundeliegende Schlüsselmenge ist N. ) Wiridentifizierendie eigentlichendatenelemente mit ihren Schlüsseln. 3) Behandeln (o.e.) nur Datenstruktur Max-Priority Queue. Diese kannmittels DatenstrukturHeapeffizient implementiert werden: Die Prozedurheap-maximum(A) implementiert die Operation maximum in konstanter Zeit Θ(). : procedure heap-maximum(a) : return A[] FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

4 Priority Queues 5 Die Prozedur heap-extract-max(a) implementiert die Operation extract-max in Zeit O(log n). : procedure heap-extract-max(a) : if heap-size[a] < then 3: error heap underflow 4: max A[] max buffern 5: A[] A[heap-size[A]] A[] geeignet überschreiben 6: heap-size[a] heap-size[a]] 7: max-heapify(a,) Heap wiederherstellen 8: return max Priority Queues 6 Die Prozedur heap-increase-key(a,i,key) implementiert die Operation heap-increase-key in Zeit O(log n). : procedure heap-increase-key(a,i,key) : if key < A[i] then 3: error key ist kleiner als akt. Schlüssel 4: A[i] key Schlüssel aktualisieren 5: while (i > und A[parent(i)] < A[i]) do 6: Vertausche A[i] mit A[parent(i)] 7: i parent(i) Idee: (für While-Schleife) Durchlaufe den Pfad von Knoten i in Richtung Wurzel, bis Platz für key gefunden ist. FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Priority Queues 7 Bsp. heap-increase-key(a,9,5) mit T A : Priority Queues 8 Bsp. heap-increase-key(a,9,5) fortgesetzt i 4 i i i 5 8 FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

5 Priority Queues 9 Die Prozedur max-heap-insert(a,key) implementiert die Operation insert in Zeit O(log n). Idee: Erzeuge zunächst ein neues Heap-Element mit kleinstem Schlüssel ( ). Dazu wird heap-size[a] um eins vergrößert. Mittels heap-increase-key wird damit key richtig eingefügt. : procedure max-heap-insert(a,key) : heap-size[a] heap-size[a]+ 3: A[heap-size[A]] 4: heap-increase-key(a,heap-size[a],key) Quicksort quicksort(a[p..r]) ist ein Divide-and-Conquer Algorithmus. Im folgenden sei (U, ) eine total geordnete Menge. Def. Für eine Teilmenge T U und x U schreiben wir T x (sprich x ist obere Schranke von T) für die Aussage: t T : t x Analog seien T < x und x T (u. Schranke), x < T definiert. Folg (Leere Menge). Es gilt x < x für jedes x U. Ferner identifizieren wir einen Array-Abschnitt A[p..r] mit der Menge {A[p],A[p +],...,A[r]} seiner Elemente. FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Quicksort quicksort(a[p..r]) (Array über (U, )) arbeitet wie folgt: Divide: Teile (i.a. mit Umarrangieren) A[p..r] in zwei Teilarrays A[p..q ] und A[q+..r] auf, so daß gilt: A[p..q ] A[q] A[q+..r] Die Berechnung von q ist Bestandteil dieses Schrittes; A[q] heißtpivotelement mit Pivotindex q. Conquer: Sortiere nun (in-place) rekursiv mittels quicksort die Teilarrays A[p..q ] und A[q+..r]. Combine: Entfällt, da der resultierende ArrayA[p..r] bereits sortiert ist. Quicksort 3 Die Prozedur quicksort lautet damit wie folgt: : procedure quicksort(a,p,r) : if p < r then 3: q partition(a,p,r) 4: quicksort(a,p,q ) 5: quicksort(a,q+,r) Aus der Korrektheit von partition(a,p,r) folgt dann die Korrektheit von quicksort(a,p,r). DerAufrufquicksort(A,,len(A)) sortiert eineninput-array A[..len(A)]. Frage: Wie lautet partition(a,p,r)? FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

6 Quicksort 4 Die Prozedur partition(a,p,r) nach N. Lomuto (ursprüngl. Fassung: C. Hoare): Ein in-place Algorithmus zur Berechnung des Pivotelementes : procedure partition(a,p,r) : x A[r] das Pivotelement! 3: i p grüner Bereich 4: for j p to r do 5: if A[j] x then 6: i i+ 7: Vertausche A[i] mit A[j] 8: Vertausche A[i+] mit x 9: return i+ Bsp. Quicksort 5 i p, j r i p, j r p, i j r p, i j r p, i j r FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Quicksort 6 Quicksort 7 Bsp. fortgesetzt p i j r p i p i j r p i p i j r r r Korrektheit(partition(A,p,r)). Zeige Schleifen-Invariante: Vor Ausführung von Runde j (Schleifenrumpf (5-7) mit Laufindex j) gilt: A[p..i] x=a[r] <A[i+..j ] Beweis. j = p Klar, da x <. j j + Betrachte die zwei Fälle in Runde j: A[j] x Dann wirda[j] mit A[i+] vertauscht. Nach I.V. bzw. Fall-Annahme gilt dann: A[p..i+] = A[p..i]::A[j] x A[i+..j] = A[i+..j ]::A[i+] > x Fertig, da i := i+ in Runde j gesetzt wird. FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

7 Quicksort 8 A[j] > x Dann bleibt i unverändert, also gilt A[p..i] x nach I.V., und nach I.V. bzw. Fall-Annahme gilt: A[i+..j] = A[i+..j ]::A[j] > x Korrektheit: Nach Runde r, d.h. vor Ausführung von Runde j =r, gilt aufgrund der Schleifen-Invariante: A[p..i] x=a[r] <A[i+..r ] NachVertauschenvonA[i+] mit x=a[r] giltwie gewünscht: A[p..i]::x x <A[i+..r ]::A[i+] Quicksort 9 Laufzeitanalyse: partition(a,p,r) benötigt Zeit Θ(n), wobei n := r p +. Die worst-case Laufzeit T(n) von quicksort hängt stark davon ab, wie balanciert oderunbalanciertdie vonpartition erzeugten Aufteilungen ausfallen. Worst-case Aufteilung: Injedem rek. Aufrufvonpartition bzgl. Problemgröße n entstehen Teilarrays der Größe n und 0. Wegen T(0) = Θ() erhalten wir die Rekursion: T(n) = T(n ) + Θ(n) Hierfür gilt (Übungsaufgabe!): T(n) = Θ(n ) FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Quicksort 0 Best-case Aufteilung: In jedem rek. Aufruf von partition bzgl. Problemgröße n entstehen Teilarrays der Größe n/ und n/. In diesem Fall erhalten wir die Rekursionsungleichung: T(n) T(n/) + Θ(n) Hierfürergibtdas Master-Theorem eine ungleichviel bessere asymptotische Lösung der Rekursion: T(n) = O(n log n) Fazit: Bei der best-case Aufteilung arbeitet quicksort so schnellwie merge-sort mit wesentlichkleinererkonstante! Quicksort Aufteilungmit konstanter Proportionalität: Jeder rek. Aufruf von partition bzgl. Problemgröße n erzeugt Teilarrays mit konstanter Proportionalität, z.b. eine 9-zu--Aufteilung (sehr unbalanciert!) In diesem Fall erhalten wir die Rekursionsungleichung: T(n) T(9n/0) + T(n/0) + c n Die Rekursionsbaum-Methode ergibt hierfür ebenfalls: T(n) = O(n log n) Fazit: Selbst bei Aufteilung mit konstanter Proportionalität arbeitet quicksort so schnell wie merge-sort. FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

8 Quicksort Rekursionbaum für konstante 9-zu--Aufteilung: log0 9 n log 0 n 0 n n 9 0 n 00 n 9 00 n 9 00 n 8 00 n n n cn cn cn cn cn cn O(n logn) Bem. Das gleiche Argument ergibt sich für beliebige Aufteilungen konstanter Proportionalität! Quicksort 3 Worst-Case Laufzeit T(n) von quicksort: Wissen nur T(n) T(n ) + T(n ) + c n mit n + n = n für n und c > 0 geeignet. Beh. T(n) d n für ein d > 0 geeignet und n Beweis. Wertverlaufsinduktion. Sei n beliebig. n = Dann gilt T() T(0) + c d, für d geeignet. n > Dann gilt nach I.V. für n,n mit n + n = n : T(n) d (n ) + d (n ) + c n d (n ) + c n (Binomische Formel) d n für T(0) + c d FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Quicksort 4 Average-CaseLaufzeit T(n) von quicksort(a,p,r), wobei n := r p +. Gleichverteilungsannahme: Alle Permutationen der n Einträge eines Input-Arrays A[p..r] sind gleichwahrscheinlich. Einfachere Analyse: Randomisierung von quicksort: Anstelle stets A[r] als Pivotelementzuwählen, wählenwirzufällig ein Pivotelement aus A[p..r]. Effekt: Die erwartete Aufteilung ist gut balanciert! Im folgenden sei random(a,b) ein Zufallsgenerator, der zufällig eine Zahl m [a,b] erzeugt, d.h. jede dieser Zahlen ist gleichwahrscheinlich. Quicksort 5 : procedure randomized-partition(a,p,r) : i random(p, r) 3: Vertausche A[r] mit A[i] 4: partition(a,p,r) : procedure randomized-quicksort(a,p,r) : if p < r then 3: q randomized-partition(a,p,r) 4: randomized-quicksort(a,p,q ) 5: randomized-quicksort(a,q+,r) Für erwartete Laufzeit von randomized-quicksort: Einschub Wahrscheinlichkeitstheorie FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

9 Wahrscheinlichkeit: Grundbegriffe Wahrscheinlichkeitstheorie ist ein wesentliches Werkzeug bei der Laufzeitanalyse im average-case oder bei der Analyse von randomisierten Algorithmen. Def. Ein Stichprobenraum ist eine endliche (i.a. abzählbar unendliche) Menge S von Elementarereignissen. Intuition: Ein Elementarereignis ist ein möglicher Ausgang eines Zufallsexperiments. Bsp. Für das Experiment, zwei Münzen zu werfen, gibt es vier mögliche Ausgänge, dargestellt als Strings der Länge über H (head: Kopf) und T (tail: Zahl). = S = {HH,HT,TH,TT} Wahrscheinlichkeit: Grundbegriffe Def. Eine Ereignis ist eine Teilmenge A eines Stichprobenraums S. Bsp. Das Ereignis, beim Werfen zweier Münzen Kopf und Zahl zu erhalten, ist die Menge A = {HT,TH}. Das Ereignis S heißt sicher und heißt Nullereignis. Elementarereignisse s S werden oft mit dem Ereignis {s} identifiziert. Def. Zwei Ereignisse A,B heißen disjunkt, falls A B = gilt. FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Wahrscheinlichkeit: Grundbegriffe 3 Def. Eine Wahrscheinlichkeitsverteilung auf einem Stichprobenraum S ist eine Abbildung Pr{ }: Ereignisse(S) R, die die folgenden Axiome erfüllt: (P) Pr{A} 0 für alle Ereignisse von S (P) Pr{S} = (P3) Für paarweise disjunkte Ereignisse A,...,A n gilt: Pr{A... A n } = n Pr{A i } Ein solches Paar (Pr{ },S) heißtwahrscheinlichkeitsraum, kurz W-Raum. i= Wahrscheinlichkeit: Grundbegriffe 4 Folg (W-Raum). Sei (Pr{ },S) ein W-Raum und A,B Ereignisse von S. Dann gilt:. Pr{ } = 0. A B = Pr{A} Pr{B} 3. Pr{A} = Pr{A}, wobei A := S\A 4. Pr{A B} = Pr{A} + Pr{B} Pr{A B} (Siebformel) 5. Pr{A} = Pr{s} s A FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

10 Wahrscheinlichkeit: Grundbegriffe 5 Beweis. Zu ). P P3, P = Pr{S} = Pr{S } = + Pr{ } Zu ). Gelte A B. Dann gilt B = A B\A und somit: Pr{B} P3 = Pr{A} + Pr{B\A} P Pr{A} Zu 3). P = Pr{S} = Pr{A S\A} P3 = Pr{A} + Pr{S\A} Zu 4). Es gilt A = (A B) A\B und somit: Pr{A} P3 = Pr{A B} + Pr{A\B} ( ) = Pr{A B} = Pr{B A\B} P3 = Pr{B} + Pr{A\B} ( ) = Pr{B} + Pr{A} Pr{A B} Zu 5). Folgt direkt aus P3. Wahrscheinlichkeit: Grundbegriffe 6 Def. Ist S endlich und sind alle s S gleichwahrscheinlich, d.h. Pr{s} = / S, so spricht man von Gleichverteilung. Bsp. Experiment, eine faire Münze n-mal zu werfen. Dann erhalten wir eine Gleichverteilung auf S := {H,T} n vermöge Pr{s} = / n für alle s S. Das Ereignis A := {k-mal Kopf und (n k)-mal Zahl} hat damit Wahrscheinlichkeit: Pr{A} Folg 5) = s A Denn: A = {s S #Kopf(s) = k} Pr{s} = A n = ( ) n k n FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Wahrscheinlichkeit: Grundbegriffe 7 Def. Sei (Pr{ },S) ein W-Raum. Eine Zufallsvariable auf S ist eine Abbildung X : S R. Ist X eine Zufallsvariable auf S und x R, so bezeichne X = x das Ereignis: {s S X(s) = x} = X (x) Analog seien X x, X > x, und X x, X < x definiert. Bsp. Experiment, zwei faire Würfel zu werfen. Wir erhalten eine Gleichverteilung auf S := {,,3,4,5,6} mit Pr{s} = /36 für s S. Für die Zufallsvariable auf S, X((z,z )) := max{z,z } gilt dann: Pr{X = 3} = 5/36 Wahrscheinlichkeit: Grundbegriffe 8 Def. Sei (Pr{ },S) ein W-Raum und X eine Zufallsvariable auf S. Der Erwartungswert von X ist definiert durch: E[X] := x R x Pr{X = x} Intuition: E[X] gibt die durchschnittliche Verteilung der Werte von X relativ zu Pr{ } an. Bem. E[X] = x ( Pr{s}) = X(s) Pr{s} x R s X (x) s S Bei Gleichverteilung gilt also: E[X] = S s S X(s) Vorsicht: Ist S abzählbar unendlich, so ist E[X] i.a. nicht definiert, jedoch dann, falls die Reihe absolut konvergiert. FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

11 Wahrscheinlichkeit: Grundbegriffe 9 Bsp. Betrachte das Experiment, zweifaire Münzenzuwerfen. Dann erhalten wir eine Gleichverteilung auf S := {HH,HT,TH,TT} vermöge Pr{s}=/4 für s S. Für die Zufallsvariable X, X(s) := 3 #Kopf(s) #Zahl(s) für s S, ergibt sich dann der folgende Erwartungswert: E[X] = 3 Pr{HH} + Pr{HT} + Pr{TH} Pr{TT} = 6/4 + /4 4/4 = Wahrscheinlichkeit: Grundbegriffe 0 Lemma (Einfache Eigenschaften). Sei (Pr{ },S) einw-raum, seien X, Y ZufallsvariablenaufS und α, β R Konstanten, sowie g: R R. Dann gilt:. E[α X + β Y ] = α E[X] + β E[Y ] (Linearität). E[g X] = x R g(x) Pr{X = x} 3. Für X(S) N gilt: E[X] = Pr{X i} i= Beweis. ) ergibt sich einfach aus der üblichen Definition: (α X + β Y )(s) = α X(s) + β Y (s) FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Wahrscheinlichkeit: Grundbegriffe Zu ). E[g X] = y R y Pr{g X = y} = y R y Pr{{s S g(x(s)) = y}} = y R y Pr{ X = x} x g (y) = y R y Pr{X = x} Zu 3). = x R E[X] = i= = i= = i= x g (y) g(x) Pr{X = x} i Pr{X = i} da X(S) N i (Pr{X i} Pr{X i + }) Pr{X i} da (a a ) + (a a 3 )... = a + a + a Wahrscheinlichkeit: Grundbegriffe Zusatz (Einfache Eigenschaften). Wenn X, Y unabhängig sind, d.h. für alle x,y R gilt Pr{X =x und Y =y} = Pr{X =x} Pr{Y =y}, dann gilt E[X Y ] = E[X] E[Y ]. Beweis. Nach Definition und Unabhängigkeit erhält man: E[X Y ] = x y Pr{X =x und Y =y} x y = x y Pr{X =x} Pr{Y =y} ( x y ) ( ) = x Pr{X =x} y Pr{Y =y} x = E[X] E[Y ] y FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

12 Wahrscheinlichkeit: Grundbegriffe 3 Konzept Indikator-Zufallsvariable: Erleichtert Berechnungdes Erwartungswertes einer Zufallsvariable. Def. Sei (Pr{ },S) ein W-Raum und A S. Die Indikator- Zufallsvariable I{A} bzgl. A (auch X A ) ist definiert durch { falls A eintrifft I{A}:= 0 sonst, d.h. I A (s) :=, falls s A, und I A (s) := 0, falls s / A. Folg (Indikator-Zufallsvariable). E[X{A}] = Pr{A} Denn: E[X A ]= x R x Pr{X A =x}=pr{x A =}=Pr{A}. Wahrscheinlichkeit: Grundbegriffe 4 Bsp. Erwartete Anzahl von Kopf nach n-maligem Werfen einer fairen Münze. Erinnerung: Gleichverteilung auf S := {H,T} n vermöge Pr{s} = / n für s S. Betrachte Zufallsvariable X(s) := #Kopf(s) für s S, sowie für i =,...,n die Indikator-Zufallsvariable X i bzgl. Ereignis: i-ter Wurf liefert Kopf, = E[X i ] Folg = Pr{ i-ter Wurf liefert Kopf } = / X = X X n = E[X] Lin. = n E[X i ] = n / = n/ i= i= FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Quicksort fortgesetzt 6 Erwartete Zeit T(n) von randomized-quicksort(a,p,r), wobei n := r p +. Beobachtung: ) Es gibt maximal n Aufrufe von partition innerhalb einer Rechnung von quicksort bei Eingabegröße n. ) Ein Aufruf von partition benötigt Zeit O() plus eine Zeit, die proportional zur Anzahl der in der FOR-Schleife durchgeführten Schlüsselvergleiche (Zeile 4) ist. Lemma (Ansatz für Zufallsvariable). Sei X die Anzahl der von partition durchgeführten Schlüsselvergleiche in Zeile 4 innerhalb einer Rechnung von quicksort auf Eingaben der Größe n. Dann gilt T(n) = O(n + X). Quicksort fortgesetzt 7 Seien z,z,...,z n die Elemente des Eingabe-Arrays A[p..r] in aufsteigend sortierter Reihenfolge. Ferner sei Z ij := {z i,z i+,...,z j }. Frage: Wann vergleicht der Algorithmus z i mit z j? Definiere die Indikator-Zufallsvariable (gemessen über die gesamte Rechnung von quicksort) X ij := I{z i wird mit z j verglichen}. Jedes Paar z i,z j wird höchstens einmal miteinander verglichen! = X = n n X ij i= j=i+ FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

13 Quicksort fortgesetzt 8 Linearität des Erwartungswertes und Folg. ergibt damit: [ ] n n E[X] = E X ij = n i= j=i+ n i= j=i+ = n n i= j=i+ E[X ij ] Pr{z i wird mit z j verglichen} Nun gilt für i<j: z i und z j werden verglichen das erste aus Z ij gewählte Pivotelement ist z i oder z j. Wegen Randomisierung ist jedes aus Z ij erstmals gewählte Pivotelement gleichwahrscheinlich: j i+ Quicksort fortgesetzt 9 = Pr{z i wird mit z j verglichen} = Pr{z i oder z j ist erstes Pivotelement in Z ij } = Pr{z i ist erstes Pivotelement in Z ij } + Pr{z j ist erstes Pivotelement in Z ij } = j i+ = E[X] = n n j i+ i= j=i+ = n n i k+ < n n k i= k= i= k= = n O(log n) i= = O(n log n) (Harmonische Reihe) FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Die Aussage n Quicksort fortgesetzt 0 k k= (log n) + = O(log n) erhält man so: n ( + ( + 0 ) log n = i log n i log n i log n j< i i +j j< i i (log n) + log n + ) FG KTuEA, TU Ilmenau AuD

14

Algorithmen und Datenstrukturen Heapsort

Algorithmen und Datenstrukturen Heapsort Algorithmen und Datenstrukturen 2 5 Heapsort In diesem Kapitel wird Heapsort, ein weiterer Sortieralgorithmus, vorgestellt. Dieser besitzt wie MERGE-SORT eine Laufzeit von O(n log n), sortiert jedoch das

Mehr

Datenstrukturen & Algorithmen

Datenstrukturen & Algorithmen Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Sortieralgorithmen Einleitung Heapsort Quicksort 2 Motivation Sortieren ist Voraussetzung für viele Anwendungen Nach

Mehr

8. A & D - Heapsort. Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können.

8. A & D - Heapsort. Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können. 8. A & D - Heapsort Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können. Genauer werden wir immer wieder benötigte Operationen durch Datenstrukturen unterstützen.

Mehr

6 Quicksort. die mittlere Laufzeit Θ(n log n) beträgt und. die in der asymptotischen Notation verborgenen Konstanten sehr klein sind.

6 Quicksort. die mittlere Laufzeit Θ(n log n) beträgt und. die in der asymptotischen Notation verborgenen Konstanten sehr klein sind. Algorithmen und Datenstrukturen 132 6 Quicksort In diesem Abschnitt wird Quicksort, ein weiterer Sortieralgorithmus, vorgestellt. Trotz einer eher langsamen Worst-Case Laufzeit von Θ(n 2 ) ist Quicksort

Mehr

Algorithmen I. Tutorium 1-5. Sitzung. Dennis Felsing

Algorithmen I. Tutorium 1-5. Sitzung. Dennis Felsing Algorithmen I Tutorium 1-5. Sitzung Dennis Felsing dennis.felsing@student.kit.edu www.stud.uni-karlsruhe.de/~ubcqr/algo 2011-05-16 Heaps 1 Heaps Binäre Heaps Erhalten der Heap-Eigenschaft Erzeugen eines

Mehr

Datenstrukturen und Algorithmen Beispiellösung zu Heimübungsblatt 7. Abbildung 1: Das Array A als Baum (vgl. Foliensatz 16, Folie 3)

Datenstrukturen und Algorithmen Beispiellösung zu Heimübungsblatt 7. Abbildung 1: Das Array A als Baum (vgl. Foliensatz 16, Folie 3) Aufgabe 3 a) Wir verwenden zur Lösung den Algorithmus Build-Heap 1, dieser verwendet die Funktion Heapify. Unser Array A ist gegeben durch [7, 10,, 5, 5,, 3, 3, 17]. 10 5 5 3 17 7 Abbildung 1: Das Array

Mehr

Kapitel 8 Fortgeschrittene Sortieralgorithmen

Kapitel 8 Fortgeschrittene Sortieralgorithmen Kapitel 8 Fortgeschrittene Sortieralgorithmen Zur Erinnerung: in Kapitel 6 Elementare Sortierverfahren Sortierverfahren, die auf Vergleichen von Werten basieren. Aufwand zum Sortieren von Feldern von n

Mehr

Kap. 3: Sortieren (3)

Kap. 3: Sortieren (3) Kap. 3: Sortieren (3) Professor Dr. Lehrstuhl für Algorithm Engineering, LS Fakultät für Informatik, TU Dortmund 6. VO DAP2 SS 2009 30. April 2009 Überblick Quick-Sort Analyse von Quick-Sort Quick-Sort

Mehr

14. Sortieren II Heapsort. Heapsort. [Max-]Heap 7. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften

14. Sortieren II Heapsort. Heapsort. [Max-]Heap 7. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften Heapsort, Quicksort, Mergesort 14. Sortieren II 14.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] 397 398 Heapsort [Max-]Heap 7 Inspiration von Selectsort: Schnelles Einfügen Binärer Baum

Mehr

Das Suchproblem. Gegeben Menge von Datensätzen. Beispiele Telefonverzeichnis, Wörterbuch, Symboltabelle

Das Suchproblem. Gegeben Menge von Datensätzen. Beispiele Telefonverzeichnis, Wörterbuch, Symboltabelle 122 4. Suchen Lineare Suche, Binäre Suche, Interpolationssuche, Untere Schranken [Ottman/Widmayer, Kap. 3.2, Cormen et al, Kap. 2: Problems 2.1-3,2.2-3,2.3-5] 123 Das Suchproblem Gegeben Menge von Datensätzen.

Mehr

8.1.3 Operation Build-Max-Heap Operation zur Konstruktion eines Heaps Eingabe: Feld A[1..n], n = länge(a) BUILD-MAX-HEAP (A)

8.1.3 Operation Build-Max-Heap Operation zur Konstruktion eines Heaps Eingabe: Feld A[1..n], n = länge(a) BUILD-MAX-HEAP (A) Stand der Vorlesung: Datenstruktur Heap: fast vollständiger Binärbaum MaxHeap: sortierter Heap, größtes Element an Wurzel Sortierverfahren: HeapSort: Sortieren eines Feldes A[1.. n] Idee: in place: Feld

Mehr

Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können.

Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können. 7. Heapsort Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können. Genauer werden wir immer wieder benötigte Operationen durch Datenstrukturen unterstützen.

Mehr

Technische Universität München

Technische Universität München Stand der Vorlesung: Datenstruktur Heap: fast vollständiger Binärbaum MaxHeap: sortierter Heap, größtes Element an Wurzel Sortierverfahren: HeapSort: Sortieren eines Feldes A[1.. n] Idee: in place: Feld

Mehr

8. Sortieren II. 8.1 Heapsort. Heapsort. [Max-]Heap 6. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften

8. Sortieren II. 8.1 Heapsort. Heapsort. [Max-]Heap 6. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften Heapsort, Quicksort, Mergesort 8. Sortieren II 8.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] 9 210 Heapsort [Max-]Heap 6 Inspiration von Selectsort: Schnelles Einfügen Binärer Baum mit

Mehr

Heapsort, Quicksort, Mergesort. 8. Sortieren II

Heapsort, Quicksort, Mergesort. 8. Sortieren II 209 Heapsort, Quicksort, Mergesort 8. Sortieren II 210 8.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] 211 Heapsort Inspiration von Selectsort: Schnelles Einfügen Inspiration von Insertionsort:

Mehr

Das Suchproblem 4. Suchen Das Auswahlproblem Suche in Array

Das Suchproblem 4. Suchen Das Auswahlproblem Suche in Array Das Suchproblem Gegeben. Suchen Lineare Suche, Binäre Suche, Interpolationssuche, Untere Schranken [Ottman/Widmayer, Kap. 3.2, Cormen et al, Kap. 2: Problems 2.-3,2.2-3,2.3-] Menge von Datensätzen. Beispiele

Mehr

Algorithmen und Datenstrukturen 8. Vorlesung

Algorithmen und Datenstrukturen 8. Vorlesung lgorithmen und Datenstrukturen. Vorlesung Karl-Heinz Niggl. Mai 6 FG KTuE, TU Ilmenau ud..6 Untere Schranke und Sortieren in Linearzeit etrachtetenverschiedene lgorithmen, die n Werte aus einer totalen

Mehr

Das Suchproblem. Gegeben Menge von Datensätzen. Beispiele Telefonverzeichnis, Wörterbuch, Symboltabelle

Das Suchproblem. Gegeben Menge von Datensätzen. Beispiele Telefonverzeichnis, Wörterbuch, Symboltabelle 119 4. Suchen Lineare Suche, Binäre Suche, Interpolationssuche, Exponentielle Suche, Untere Schranken [Ottman/Widmayer, Kap. 3.2, Cormen et al, Kap. 2: Problems 2.1-3,2.2-3,2.3-5] 120 Das Suchproblem Gegeben

Mehr

Das Suchproblem 4. Suchen Das Auswahlproblem Suche in Array

Das Suchproblem 4. Suchen Das Auswahlproblem Suche in Array Das Suchproblem Gegeben. Suchen Lineare Suche, Binäre Suche, Interpolationssuche, Exponentielle Suche, Untere Schranken [Ottman/Widmayer, Kap. 3.2, Cormen et al, Kap. 2: Problems 2.-3,2.2-3,2.3-] Menge

Mehr

Grundbegriffe der Wahrscheinlichkeitsrechnung

Grundbegriffe der Wahrscheinlichkeitsrechnung Algorithmen und Datenstrukturen 349 A Grundbegriffe der Wahrscheinlichkeitsrechnung Für Entwurf und Analyse randomisierter Algorithmen sind Hilfsmittel aus der Wahrscheinlichkeitsrechnung erforderlich.

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Teil 2: Sortieren und Suchen Martin Hofmann LFE Theoretische Informatik, Institut für Informatik, Ludwig-Maximilians Universität, München 16. April 2016 Martin Hofmann Algorithmen

Mehr

Heapsort / 1 A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8]

Heapsort / 1 A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] Heapsort / 1 Heap: Ein Array heißt Heap, falls A [i] A [2i] und A[i] A [2i + 1] (für 2i n bzw. 2i + 1 n) gilt. Beispiel: A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] Heapsort / 2 Darstellung eines Heaps als

Mehr

Grundlagen: Algorithmen und Datenstrukturen

Grundlagen: Algorithmen und Datenstrukturen Grundlagen: Algorithmen und Datenstrukturen Prof. Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester 2010

Mehr

Sortieren II / HeapSort Heaps

Sortieren II / HeapSort Heaps Organisatorisches VL-07: Sortieren II: HeapSort (Datenstrukturen und Algorithmen, SS 2017) Vorlesung: Gerhard Woeginger (Zimmer 4024 im E1) Email: dsal-i1@algo.rwth-aachen.de Webseite: http://algo.rwth-aachen.de/lehre/ss17/dsa.php

Mehr

Heapsort. Dr. Michael Brinkmeier (TU Ilmenau) Algorithmen und Datenstrukturen / 50

Heapsort. Dr. Michael Brinkmeier (TU Ilmenau) Algorithmen und Datenstrukturen / 50 Heapsort Dr. Michael Brinkmeier (TU Ilmenau) Algorithmen und Datenstrukturen 27.6.2007 / 50 Heapsort - Wiederholung Definition Array A[..n] mit Einträgen aus (U,

Mehr

4 Probabilistische Analyse und randomisierte Algorithmen

4 Probabilistische Analyse und randomisierte Algorithmen Algorithmen und Datenstrukturen 96 4 Probabilistische Analyse und randomisierte Algorithmen Bei der Algorithmenanalyse ist es sehr hilfreich, Aspekte berücksichtigen zu können, die vom Zufall abhängen.

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen Wintersemester 01/13 6. Vorlesung Prioritäten setzen Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Guten Morgen! Tipps für unseren ersten Test am 0. November: Lesen

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT) Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2018 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München Organisatorisches: Keine Vorlesung nächste Woche wegen

Mehr

Algorithmen und Datenstrukturen 11. Vorlesung

Algorithmen und Datenstrukturen 11. Vorlesung Algorithmen und Datenstrukturen 11. Vorlesung Martin Dietzfelbinger 23. Juni 2008 FG KTuEA, TU Ilmenau AuD 23.06.2008 Sortieren FG KTuEA, TU Ilmenau AuD 23.06.2008 1 Sortieren a 1 a 2 a 3 a n 10 1 4 5

Mehr

Definition Ein Heap (priority queue) ist eine abstrakte Datenstruktur mit folgenden Kennzeichen:

Definition Ein Heap (priority queue) ist eine abstrakte Datenstruktur mit folgenden Kennzeichen: HeapSort Allgemeines Sortieralgorithmen gehören zu den am häufigsten angewendeten Algorithmen in der Datenverarbeitung. Man hatte daher bereits früh ein großes Interesse an der Entwicklung möglichst effizienter

Mehr

A7.1 Untere Schranke. Algorithmen und Datenstrukturen. A7.1 Untere Schranke. Algorithmen und Datenstrukturen. A7.2 Quicksort. A7.

A7.1 Untere Schranke. Algorithmen und Datenstrukturen. A7.1 Untere Schranke. Algorithmen und Datenstrukturen. A7.2 Quicksort. A7. Algorithmen und Datenstrukturen 14. März 2018 A7. III Algorithmen und Datenstrukturen A7. III Marcel Lüthi and Gabriele Röger Universität Basel 14. März 2018 A7.1 Untere Schranke A7.2 Quicksort A7.3 Heapsort

Mehr

Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)).

Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)). 8. Untere Schranken für Sortieren Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)). Werden nun gemeinsame Eigenschaften dieser Algorithmen untersuchen. Fassen gemeinsame

Mehr

Lemma 23 Die (paarweise verschiedenen) Ereignisse A 1,..., A n sind genau dann unabhängig,

Lemma 23 Die (paarweise verschiedenen) Ereignisse A 1,..., A n sind genau dann unabhängig, Lemma 23 Die (paarweise verschiedenen) Ereignisse A 1,..., A n sind genau dann unabhängig, wenn für alle (s 1,..., s n ) {0, 1} n gilt, dass wobei A 0 i = Āi und A 1 i = A i. Pr[A s 1 1... Asn n ] = Pr[A

Mehr

Abschnitt 19: Sortierverfahren

Abschnitt 19: Sortierverfahren Abschnitt 19: Sortierverfahren 19. Sortierverfahren 19.1 Allgemeines 19.2 Einfache Sortierverfahren 19.3 Effizientes Sortieren: Quicksort 19.4 Zusammenfassung 19 Sortierverfahren Informatik 2 (SS 07) 758

Mehr

1.3 Erinnerung: Mergesort

1.3 Erinnerung: Mergesort Mergesort 1.3 Erinnerung: Mergesort Um n Zahlen/Objekte a 1,..., a n zu sortieren, geht der Mergesort-Algorithmus so vor: Falls n n 0 : Sortiere mit einem naiven Algorithmus (z. B. Insertion Sort). Sonst:

Mehr

3.2. Divide-and-Conquer-Methoden

3.2. Divide-and-Conquer-Methoden LUDWIG- MAXIMILIANS- UNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS DATABASE 3.2. Divide-and-Conquer-Methoden Divide-and-Conquer-Methoden Einfache Sortieralgorithmen reduzieren die Größe des noch

Mehr

Kapitel 6 Elementare Sortieralgorithmen

Kapitel 6 Elementare Sortieralgorithmen Kapitel 6 Elementare Sortieralgorithmen Ziel: Kennenlernen elementarer Sortierverfahren und deren Effizienz Zur Erinnerung: Das Sortier-Problem Gegeben: Folge A von n Elementen a 1, a 2,..., a n ; Eine

Mehr

Technische Universität München

Technische Universität München Stand der Vorlesung Kapitel 2: Auffrischung einiger mathematischer Grundlagen Mengen, Potenzmenge, Kreuzprodukt (Paare, Tripel, n-tupel) Relation: Teilmenge MxN Eigenschaften: reflexiv, symmetrisch, transitiv,

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen A7. Sortieren III Marcel Lüthi and Gabriele Röger Universität Basel 14. März 2018 Untere Schranke Sortierverfahren Sortieren Vergleichsbasierte Verfahren Nicht vergleichsbasierte

Mehr

Algo-Animation. Konstruktion der Partition: eigentliche Kunst / Arbeit bei Quicksort. Resultat: Partition A=A 1 WA 2 A 1 W A 2.

Algo-Animation. Konstruktion der Partition: eigentliche Kunst / Arbeit bei Quicksort. Resultat: Partition A=A 1 WA 2 A 1 W A 2. Algo-Animation Konstruktion der Partition: eigentliche Kunst / Arbeit bei Quicksort 1. Wahl eines Elementes W im Array (heißt Pivot-Element) 2. Suchen eines i von links mit A[i]>W 3. Suchen eines j von

Mehr

Wiederholung. Divide & Conquer Strategie

Wiederholung. Divide & Conquer Strategie Wiederholung Divide & Conquer Strategie Binäre Suche O(log n) Rekursives Suchen im linken oder rechten Teilintervall Insertion-Sort O(n 2 ) Rekursives Sortieren von a[1..n-1], a[n] Einfügen von a[n] in

Mehr

Algorithmen und Datenstrukturen SS09. Foliensatz 15. Michael Brinkmeier. Technische Universität Ilmenau Institut für Theoretische Informatik

Algorithmen und Datenstrukturen SS09. Foliensatz 15. Michael Brinkmeier. Technische Universität Ilmenau Institut für Theoretische Informatik Foliensatz 15 Michael Brinkmeier Technische Universität Ilmenau Institut für Theoretische Informatik Sommersemester 2009 TU Ilmenau Seite 1 / 16 Untere Schranken für das Vergleichsbasierte Sortieren TU

Mehr

Kapitel 2. Weitere Beispiele Effizienter Algorithmen

Kapitel 2. Weitere Beispiele Effizienter Algorithmen Kapitel 2 Weitere Beispiele Effizienter Algorithmen Sequentielle Suche Gegeben: Array a[1..n] Suche in a nach Element x Ohne weitere Zusatzinformationen: Sequentielle Suche a[1] a[2] a[3] Laufzeit: n Schritte

Mehr

3. Suchen. Das Suchproblem. Suche in Array. Lineare Suche. 1 n. i = n Gegeben Menge von Datensätzen.

3. Suchen. Das Suchproblem. Suche in Array. Lineare Suche. 1 n. i = n Gegeben Menge von Datensätzen. Das Suchproblem Gegeben Menge von Datensätzen. 3. Suchen Beispiele Telefonverzeichnis, Wörterbuch, Symboltabelle Jeder Datensatz hat einen Schlüssel k. Schlüssel sind vergleichbar: eindeutige Antwort auf

Mehr

Übersicht. Datenstrukturen und Algorithmen. Divide-and-Conquer. Übersicht. Vorlesung 9: Quicksort (K7)

Übersicht. Datenstrukturen und Algorithmen. Divide-and-Conquer. Übersicht. Vorlesung 9: Quicksort (K7) Datenstrukturen und Algorithmen Vorlesung 9: (K7) Joost-Pieter Katoen Algorithmus Lehrstuhl für Informatik 2 Software Modeling and Verification Group http://moves.rwth-aachen.de/teaching/ss-5/dsal/ 2 7.

Mehr

Informatik II, SS 2018

Informatik II, SS 2018 Informatik II - SS 2018 (Algorithmen & Datenstrukturen) Vorlesung 4 (30.4.2018) Sortieren IV Algorithmen und Komplexität Analyse Merge Sort Laufzeit T(n) setzt sich zusammen aus: Divide und Merge: O n

Mehr

Copyright, Page 1 of 7 Heapsort

Copyright, Page 1 of 7 Heapsort www.mathematik-netz.de Copyright, Page 1 of 7 Heapsort Alle grundlegenden, allgemeinen Sortierverfahren benötigen O(n 2 ) Zeit für das Sortieren von n Schlüsseln. Die kritischen Operationen, d.h. die Auswahl

Mehr

Aufgabe 8. 1 Arbeitsweise illustrieren. 2 Korrektheitsbeweis führen. 3 Laufzeitanalyse durchführen.

Aufgabe 8. 1 Arbeitsweise illustrieren. 2 Korrektheitsbeweis führen. 3 Laufzeitanalyse durchführen. Aufgabe 8 Betrachten Sie den folgenden Algorithmus namens Bubble-Sort. Bubble-Sort(A[1..n]): 1 for i 1 to length(a) 1 2 do for j length(a) downto i + 1 3 do if A[j 1] > A[j] 4 then A[j 1] A[j] 1 Arbeitsweise

Mehr

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Heaps. Vorlesung 8: Heapsort (K6) Joost-Pieter Katoen. 7. Mai 2015

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Heaps. Vorlesung 8: Heapsort (K6) Joost-Pieter Katoen. 7. Mai 2015 Datenstrukturen und Algorithmen Vorlesung 8: (K6) 1 Joost-Pieter Katoen Lehrstuhl für Informatik Software Modeling and Verification Group http://moves.rwth-aachen.de/teaching/ss-15/dsal/ 7. Mai 015 3 Joost-Pieter

Mehr

9. Rekursion. 1 falls n 1 n (n 1)!, andernfalls. Experiment: Die Türme von Hanoi. Links Mitte Rechts. Mathematische Rekursion

9. Rekursion. 1 falls n 1 n (n 1)!, andernfalls. Experiment: Die Türme von Hanoi. Links Mitte Rechts. Mathematische Rekursion Experiment: Die Türme von Hanoi. Rekursion Mathematische Rekursion, Terminierung, der Aufrufstapel, Beispiele, Rekursion vs. Iteration Links Mitte Rechts Mathematische Rekursion Viele mathematische Funktionen

Mehr

Algorithmen und Datenstrukturen 4. Vorlesung

Algorithmen und Datenstrukturen 4. Vorlesung Algorithmen und Datenstrukturen 4 Vorlesung Karl-Heinz Niggl 25 April 26 FG KTuEA, TU Ilmenau AuD 25426 Lösen von Rekursionsgleichungen Die worst-case Laufzeit T A eines rekursiven Algorithmus A ist oft

Mehr

4. Sortieren 4.1 Vorbemerkungen

4. Sortieren 4.1 Vorbemerkungen . Seite 1/21 4. Sortieren 4.1 Vorbemerkungen allgemeines Sortierproblem spezielle Sortierprobleme Ordne a 1,..., a n so um, dass Elemente in aufsteigender Reihenfolge stehen. Die a i stammen aus vollständig

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen B4. Priority Queues und Heaps Marcel Lüthi and Gabriele Röger Universität Basel 28. März 2018 Einführung Kollektion von Elementen Grundlegende Operationen sind Einfügen

Mehr

Sortieren und Suchen. Kapitel II. Sortieren und Suchen

Sortieren und Suchen. Kapitel II. Sortieren und Suchen Kapitel II Sortieren und Suchen 43 Inhalt Kapitel II 1 Heapsort Heaps Operationen auf Heaps 2 Prioritätsschlangen 3 Quicksort Randomisiertes Quicksort 4 Vergleichskomplexität 5 Median und Selektion 44

Mehr

1. Musterlösung. Problem 1: Average-case-Laufzeit vs. Worst-case-Laufzeit ** i=1

1. Musterlösung. Problem 1: Average-case-Laufzeit vs. Worst-case-Laufzeit ** i=1 Universität Karlsruhe Algorithmentechnik Fakultät für Informatik WS 05/06 ITI Wagner. Musterlösung Problem : Average-case-Laufzeit vs. Worst-case-Laufzeit ** (a) Im schlimmsten Fall werden für jedes Element

Mehr

Kapitel 3: Sortierverfahren Gliederung

Kapitel 3: Sortierverfahren Gliederung Gliederung 1. Grundlagen 2. Zahlentheoretische Algorithmen 3. Sortierverfahren 4. Ausgewählte Datenstrukturen 5. Dynamisches Programmieren 6. Graphalgorithmen 7. String-Matching 8. Kombinatorische Algorithmen

Mehr

Abschnitt: Algorithmendesign und Laufzeitanalyse

Abschnitt: Algorithmendesign und Laufzeitanalyse Abschnitt: Algorithmendesign und Laufzeitanalyse Definition Divide-and-Conquer Paradigma Divide-and-Conquer Algorithmen verwenden die Strategien 1 Divide: Teile das Problem rekursiv in Subproblem gleicher

Mehr

2 Sortieren. Beispiel: Es seien n = 8 und a = i : a i : ϕ(i) : a ϕ(i) :

2 Sortieren. Beispiel: Es seien n = 8 und a = i : a i : ϕ(i) : a ϕ(i) : 2 Sortieren Das Sortieren einer Datenfolge ist eines der am leichtesten zu verstehenden und am häufigsten auftretenden algorithmischen Probleme. In seiner einfachsten Form besteht das Problem darin, eine

Mehr

Sortieralgorithmen. Jan Pöschko. 18. Januar Problemstellung Definition Warum Sortieren?... 2

Sortieralgorithmen. Jan Pöschko. 18. Januar Problemstellung Definition Warum Sortieren?... 2 Jan Pöschko 18. Januar 2007 Inhaltsverzeichnis 1 Problemstellung 2 1.1 Definition................................... 2 1.2 Warum Sortieren?.............................. 2 2 Einfache Sortieralgorithmen

Mehr

Suchen und Sortieren Sortieren. Heaps

Suchen und Sortieren Sortieren. Heaps Suchen und Heaps (Folie 156, Seite 56 im Skript) Definition Ein Heap ist ein Binärbaum, der die Heapeigenschaft hat (Kinder sind größer als der Vater), bis auf die letzte Ebene vollständig besetzt ist,

Mehr

Die mittlere Höhe eines Binärbaumes. h(t) = 1 e(t) mit E(t) = Menge der Blätter von t, h(b, t) = Höhe des Blattes b in t

Die mittlere Höhe eines Binärbaumes. h(t) = 1 e(t) mit E(t) = Menge der Blätter von t, h(b, t) = Höhe des Blattes b in t Höhe von Binärbäumen Die mittlere Höhe eines Binärbaumes h(t) = 1 e(t) b E(t) mit E(t) = Menge der Blätter von t, h(b, t) = Höhe des Blattes b in t h(b, t), Höhe von Binärbäumen Die mittlere Höhe eines

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 2017 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda: Sortierverfahren 1. Schreibtischtest 2. Stabilität 3. Sortierung spezieller Arrays 4. Untere

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen Wintersemester 2014/15 7. Vorlesung Zufall! Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I 2 Inhaltsverzeichnis Ein Zufallsexperiment InsertionSort: erwartete bzw.

Mehr

Übung zu Algorithmen und Datenstrukturen (für ET/IT)

Übung zu Algorithmen und Datenstrukturen (für ET/IT) Übung zu Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2017 Rüdiger Göbl, Mai Bui Computer Aided Medical Procedures Technische Universität München Fibonacci Zahlen Fibonacci Folge Die Fibonacci

Mehr

3. Kombinatorik und Wahrscheinlichkeit

3. Kombinatorik und Wahrscheinlichkeit 3. Kombinatorik und Wahrscheinlichkeit Es geht hier um die Bestimmung der Kardinalität endlicher Mengen. Erinnerung: Seien A, B, A 1,..., A n endliche Mengen. Dann gilt A = B ϕ: A B bijektiv Summenregel:

Mehr

Randomisierte Algorithmen 2. Erste Beispiele

Randomisierte Algorithmen 2. Erste Beispiele Randomisierte Algorithmen Randomisierte Algorithmen 2. Erste Beispiele Thomas Worsch Fakultät für Informatik Karlsruher Institut für Technologie Wintersemester 2016/2017 1 / 35 Randomisierter Identitätstest

Mehr

Kap. 3 Sortieren. 7. VO DAP2 SS Mai Vorlesung am Do 7.5. entfällt wegen FVV um 14 Uhr HeapSort ff 3.1.

Kap. 3 Sortieren. 7. VO DAP2 SS Mai Vorlesung am Do 7.5. entfällt wegen FVV um 14 Uhr HeapSort ff 3.1. Kap. 3 Sortieren 3.1.5 HeapSort ff 3.1.6 Priority Queues Vorlesung am Do 7.5. entfällt wegen FVV um 14 Uhr Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 7.

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen Wintersemester 013/14 7. Vorlesung Zufall! Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Ein Experiment Ein Franke und ein Münchner gehen (unabhängig voneinander)

Mehr

Paarweise Unabhängigkeit vs. Unabhängigkeit

Paarweise Unabhängigkeit vs. Unabhängigkeit Paarweise Unabhängigkeit vs. Unabhängigkeit Beispiel: Wir betrachten das Szenario von zuvor. Wissen bereits, dass A 1, A 2 und A 1, B unabhängig sind. Analog folgt, dass A 2 und B unabhängige Ereignisse

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Große Übung #6 Phillip Keldenich, Arne Schmidt 26.02.2017 Heute: Master-Theorem Phillip Keldenich, Arne Schmidt Große Übung 2 Vorbetrachtungen Wir betrachten rekursive Gleichungen

Mehr

Heapsort. Erstellung eines Heaps

Heapsort. Erstellung eines Heaps Heapsort Beispiel für einen eleganten Algorithmus, der auf einer effizienten Datenstruktur (dem Heap) beruht [Williams, 1964] Daten liegen in einem Array der Länge n vor 1. Erstelle aus dem gegebenen Array

Mehr

Heapsort. 1. Erstelle aus dem gegebenen Array einen Heap (DownHeap) 2. Tausche erstes und letztes Element des Arrays

Heapsort. 1. Erstelle aus dem gegebenen Array einen Heap (DownHeap) 2. Tausche erstes und letztes Element des Arrays Heapsort Beispiel für einen eleganten Algorithmus, der auf einer effizienten Datenstruktur (dem Heap) beruht [Williams, 1964] Daten liegen in einem Array der Länge n vor 1. Erstelle aus dem gegebenen Array

Mehr

Praktikum Algorithmische Anwendungen WS 2006/07 Sortieren in linearer Laufzeit

Praktikum Algorithmische Anwendungen WS 2006/07 Sortieren in linearer Laufzeit Praktikum Algorithmische Anwendungen WS 2006/07 Sortieren in linearer Laufzeit Team A blau Martin Herfurth 11043831 Markus Wagner 11043447 5. Februar 2007 1 1 Untere Schranke für Vergleichsbasierte Algorithmen

Mehr

f 1 (n) = log(n) + n 2 n 5 f 2 (n) = n 3 + n 2 f 3 (n) = log(n 2 ) f 4 (n) = n n f 5 (n) = (log(n)) 2

f 1 (n) = log(n) + n 2 n 5 f 2 (n) = n 3 + n 2 f 3 (n) = log(n 2 ) f 4 (n) = n n f 5 (n) = (log(n)) 2 Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Lösung - Präsenzübung.05.0 F. Corzilius, S. Schupp, T. Ströder Aufgabe (Asymptotische Komplexität): (6 + 0 + 6 = Punkte) a) Geben Sie eine formale

Mehr

Programmiertechnik II

Programmiertechnik II 2007 Martin v. Löwis Priority Queues and Heapsort 2007 Martin v. Löwis 2 Priority Queue Abstrakter Datentyp Inhalt: Elemente mit Priorität Operationen: Einfügen: Angabe des Elements und seiner Priorität

Mehr

lim log 2n n = > 0 Da es einen Limes gibt, gibt es auch einen Limes inferior, der gleich diesem Limes ist.

lim log 2n n = > 0 Da es einen Limes gibt, gibt es auch einen Limes inferior, der gleich diesem Limes ist. Prof. aa Dr. Ir. Joost-Pieter Katoen Christian Dehnert, Jonathan Heinen, Thomas Ströder, Sabrina von Styp Aufgabe 1 (O-Notation): Beweisen oder widerlegen Sie die folgenden Aussagen: (3 + 3 + 4 = 10 Punkte)

Mehr

Gliederung. 5. Compiler. 6. Sortieren und Suchen. 7. Graphen

Gliederung. 5. Compiler. 6. Sortieren und Suchen. 7. Graphen 5. Compiler Gliederung 1. Struktur eines Compilers 2. Syntaxanalyse durch rekursiven Abstieg 3. Ausnahmebehandlung 4. Arrays und Strings 6. Sortieren und Suchen 1. Grundlegende Datenstrukturen 2. Bäume

Mehr

7. Sortieren Lernziele. 7. Sortieren

7. Sortieren Lernziele. 7. Sortieren 7. Sortieren Lernziele 7. Sortieren Lernziele: Die wichtigsten Sortierverfahren kennen und einsetzen können, Aufwand und weitere Eigenschaften der Sortierverfahren kennen, das Problemlösungsparadigma Teile-und-herrsche

Mehr

Randomisierte Algorithmen und probabilistische Analyse

Randomisierte Algorithmen und probabilistische Analyse Randomisierte Algorithmen und probabilistische Analyse S.Seidl, M.Nening, T.Niederleuthner S.Seidl, M.Nening, T.Niederleuthner 1 / 29 Inhalt 1 Randomisierte Algorithmen 2 Probabilistische Analyse S.Seidl,

Mehr

Satz 172 Jedes vergleichsbasierte Sortierverfahren benötigt im worst-case mindestens n ld n + O(n) Vergleiche und hat damit Laufzeit Ω(n log n).

Satz 172 Jedes vergleichsbasierte Sortierverfahren benötigt im worst-case mindestens n ld n + O(n) Vergleiche und hat damit Laufzeit Ω(n log n). 2.6 Vergleichsbasierte Sortierverfahren Alle bisher betrachteten Sortierverfahren sind vergleichsbasiert, d.h. sie greifen auf Schlüssel k, k (außer in Zuweisungen) nur in Vergleichsoperationen der Form

Mehr

Grundzüge von Algorithmen und Datenstrukturen, WS 15/16: Lösungshinweise zum 13. Übungsblatt

Grundzüge von Algorithmen und Datenstrukturen, WS 15/16: Lösungshinweise zum 13. Übungsblatt U N S A R I V E R S A V I E I T A S N I S S Grundzüge von Algorithmen und Datenstrukturen, WS /6: Lösungshinweise zum 3. Übungsblatt Christian Hoffmann, Fabian Bendun Aufgabe 3. (a) Sei j i + = n die Größe

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 017 Marc Bux, Humboldt-Universität zu Berlin Agenda 1. Vorrechnen von Aufgabenblatt 1. Wohlgeformte Klammerausdrücke 3. Teile und Herrsche Agenda 1.

Mehr

1 Raumwechsel: Gr. 15 (Do 10-12, F-235) ab sofort in G Studie zum Arbeitsverhalten von Studierenden unter Leitung

1 Raumwechsel: Gr. 15 (Do 10-12, F-235) ab sofort in G Studie zum Arbeitsverhalten von Studierenden unter Leitung Organisatorisches Algorithmen und Datenstrukturen Kapitel 3: Divide & Conquer Frank Heitmann heitmann@informatik.uni-hamburg.de 1 Raumwechsel: Gr. 15 (Do 10-12, F-235) ab sofort in G-021. 2 Studie zum

Mehr

Humboldt-Universität zu Berlin Berlin, den Institut für Informatik

Humboldt-Universität zu Berlin Berlin, den Institut für Informatik Humboldt-Universität zu Berlin Berlin, den 15.06.2015 Institut für Informatik Prof. Dr. Ulf Leser Übungen zur Vorlesung M. Bux, B. Grußien, J. Sürmeli, S. Wandelt Algorithmen und Datenstrukturen Übungsblatt

Mehr

Abstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken.

Abstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken. Abstrakte Datentypen und Datenstrukturen/ Einfache Beispiele Abstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken. Datenstruktur (DS): Realisierung

Mehr

Algorithmen und Datenstrukturen 1. Vorlesung

Algorithmen und Datenstrukturen 1. Vorlesung Algorithmen und Datenstrukturen 1. Vorlesung Martin Dietzfelbinger 7. April 2008 FG KTuEA, TU Ilmenau AuD 07.04.2008 Hörer: Informatikstudierende im 2. Semester, Ingenieurinformatik im 4. Semester. Andere

Mehr

Sortieren & Co. KIT Institut für Theoretische Informatik

Sortieren & Co. KIT Institut für Theoretische Informatik Sortieren & Co KIT Institut für Theoretische Informatik 1 Formaler Gegeben: Elementfolge s = e 1,...,e n Gesucht: s = e 1,...,e n mit s ist Permutation von s e e 1 n für eine Totalordnung ` ' KIT Institut

Mehr

Klausur Algorithmen und Datenstrukturen SS August Arbeitszeit 90 min

Klausur Algorithmen und Datenstrukturen SS August Arbeitszeit 90 min TU Ilmenau, Fakultät für Informatik und Automatisierung FG Komplexitätstheorie und Effiziente Algorithmen Univ.-Prof. Dr. M. Dietzfelbinger, Dipl.-Ing. C. Mattern Klausur Algorithmen und Datenstrukturen

Mehr

Informatik II, SS 2018

Informatik II, SS 2018 Informatik II - SS 2018 (Algorithmen & Datenstrukturen) Vorlesung 15b (13.06.2018) Graphenalgorithmen IV Algorithmen und Komplexität Prims MST-Algorithmus A = while A ist kein Spannbaum do e = u, v ist

Mehr

Grundlagen der Algorithmen und Datenstrukturen Kapitel 6

Grundlagen der Algorithmen und Datenstrukturen Kapitel 6 Grundlagen der Algorithmen und Datenstrukturen Kapitel 6 Christian Scheideler + Helmut Seidl SS 2009 25.05.09 Kapitel 6 1 Priority Queue M: Menge von Elementen Jedes Element e identifiziert über key(e).

Mehr

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Suchen. Lineare Suche. Such-Algorithmen. Sommersemester Dr.

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Suchen. Lineare Suche. Such-Algorithmen. Sommersemester Dr. Programm heute Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 0 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Fortgeschrittene Datenstrukturen Such-Algorithmen

Mehr

Kapitel 2: Sortier- und Selektionsverfahren Gliederung

Kapitel 2: Sortier- und Selektionsverfahren Gliederung Gliederung 1. Laufzeit von Algorithmen 2. Sortier- und Selektionsverfahren 3. Paradigmen des Algorithmenentwurfs 4. Ausgewählte Datenstrukturen 5. Algorithmische Geometrie 6. Randomisierte Algorithmen

Mehr

Quicksort ist ein Divide-and-Conquer-Verfahren.

Quicksort ist ein Divide-and-Conquer-Verfahren. . Quicksort Wie bei vielen anderen Sortierverfahren (Bubblesort, Mergesort, usw.) ist auch bei Quicksort die Aufgabe, die Elemente eines Array a[..n] zu sortieren. Quicksort ist ein Divide-and-Conquer-Verfahren.

Mehr

Zentralübung Diskrete Wahrscheinlichkeitstheorie

Zentralübung Diskrete Wahrscheinlichkeitstheorie Zentralübung Diskrete Wahrscheinlichkeitstheorie Christian Ivicevic (christian.ivicevic@tum.de) Technische Universität München 14. Juni 2017 Agenda Disclaimer und wichtige Hinweise Übungsaufgaben Disclaimer

Mehr

Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5

Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5 Robert Elsässer Paderborn, den 15. Mai 2008 u.v.a. Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5 AUFGABE 1 (6 Punkte): Nehmen wir an, Anfang bezeichne in einer normalen

Mehr

Übersicht. Einfache Verfahren MergeSort Untere Schranke QuickSort Selektieren Schnelleres Sortieren Externes Sortieren. 6 Sortieren.

Übersicht. Einfache Verfahren MergeSort Untere Schranke QuickSort Selektieren Schnelleres Sortieren Externes Sortieren. 6 Sortieren. Übersicht 6 Sortieren Einfache Verfahren MergeSort Untere Schranke QuickSort Selektieren Schnelleres Sortieren Externes Sortieren H. Täubig (TUM) GAD SS 14 221 Statisches Wörterbuch Sortieren Lösungsmöglichkeiten:

Mehr

11. Elementare Datenstrukturen

11. Elementare Datenstrukturen 11. Elementare Datenstrukturen Definition 11.1: Eine dynamische Menge ist gegeben durch eine oder mehrer Mengen von Objekten sowie Operationen auf diesen Mengen und den Objekten der Mengen. Dynamische

Mehr

Randomisierte Datenstrukturen

Randomisierte Datenstrukturen Seminar über Algorithmen DozentInnen: Helmut Alt, Claudia Klost Randomisierte Datenstrukturen Ralph Schäfermeier 13. 2. 2007 Das Verwalten von Mengen, so dass ein schneller Zugriff auf deren Elemente gewährleistet

Mehr