4. Übung Algorithmen I

Größe: px
Ab Seite anzeigen:

Download "4. Übung Algorithmen I"

Transkript

1 Timo Bingmann, Christian Schulz INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS 1 KIT Timo Universität Bingmann, des LandesChristian Baden-Württemberg Schulz und nationales Forschungszentrum in der Helmholtz-Gemeinschaft Institut für Theoretische Informatik

2 Übungsklausur Üben des Stoffes und Übungspunkte für den Schein Termin: Montag, 3. Juni 15:45 Uhr (statt Vorlesung), Dauer 90min Bitte seien Sie pünktlich!! Einlass: 15:35 Uhr, Beginn: 15:45 Uhr Nachzügler bekommen keinen Zugang!! D.h.: Ab 15:45 Uhr ist die Tür zu! Hilfsmittel: 1 DIN A4 einseitig handbeschriebener Zettel Unterschrift für selbständige Anfertigung Tutoriumsnummer auf die Klausur schreiben 2 Timo Bingmann, Christian Schulz

3 Unbounded Hashtables 3 Timo Bingmann, Christian Schulz

4 Unbounded Hashtables Amortisierung Problem: Daten Stück für Stück in Hashtabelle einfügen Anzahl unbekannt Was passiert wenn eine Hashtabelle zu voll wird? Hashing with linear Probing: Überlauf Hashing mit verk. Liste: find und remove werden langsamer Lösung: Hashtabelle dynamisch vergrößern und verkleinern 4 Timo Bingmann, Christian Schulz

5 Unbounded Hashtables mit verketteten Listen Modifizierte Operationen find: keine Veränderung insert: Größe verdoppeln, bei #Slots Elemente remove: Größe halbieren, bei 1 4 #Slots Elemente Erinnert an unbeschränkte Arrays 5 Timo Bingmann, Christian Schulz

6 Unbounded Hashtables verketteten Listen Problem: Hashfuntion muss zur Tabellengröße passen Grund: Soll möglichst gleichverteilt streuen Nach Größenänderung nicht mehr der Fall Lösung: Bei Größenänderung neue Hashfunktion wählen Dann: vollständiger rehash D.h.: Elemente nicht nur kopieren, sondern neu einhashen 6 Timo Bingmann, Christian Schulz

7 Unbounded Hashtable verketteten Listen Laufzeit Laufzeit von insert, find, remove (exkl. rehash): Unverändert erwartet O(1) Laufzeit von rehash: Amortisiert O(1) Argumentation wie bei unbeschränkten Arrays D.h.: Bei insert und remove einzahlen aufs Konto 7 Timo Bingmann, Christian Schulz

8 Neue Hashfunktion wählen Beispiel Hashen von Zahlen h(x) = x mod Tabellengröße Problem: Wenn Tabellengröße = 2 k Entspricht: Extrahieren der k niedrigsten Bits D.h.: Nur k niedrigste Bits nehmen Einfluss Besser: Tabellengröße immer Primzahl Möglichst weit entfernt von Zweierpotenzen Implementierung: Primzahlentabelle, z.b. im Code Wähle bei Größenänderungen die nächstgrößere Primzahl aus Tabelle 8 Timo Bingmann, Christian Schulz

9 Rehash Beispiel insert: 22, 42, 9, 25, 18 und 96 h 1 (x) = x mod 5, h 2 (x) = x mod Timo Bingmann, Christian Schulz

10 Universalität von Hashfunktionen 10 Timo Bingmann, Christian Schulz

11 Analyse für zufällige Hash-Funktionen Wiederholung Satz k : die erwartete Anzahl kollidierender Elemente ist O(1), falls M = O(m). M := {e M : key(e) k} für festes k definiere Kollisionslänge X := t[h(k)] die Anzahl der Element die auf den gleichen Slot gehasht werden 11 Timo Bingmann, Christian Schulz

12 Wahrscheinlichkeit für Kollision Wiederholung 0-1 ZV X e : 1 für h(e) = h(k), e M, 0 sonst 12 Timo Bingmann, Christian Schulz

13 Wahrscheinlichkeit für Kollision Wiederholung 0-1 ZV X e : 1 für h(e) = h(k), e M, 0 sonst E[X ] = E[ e M X e ] = e M E[X e ] = e M P [X e = 1] = M P [X e = 1] = = M Anzahl aller Hashfunktionen mit h(e)=h(k) {}}{ m Key 1 } m {{ Key } Anzahl aller Hashfunktionen = M 1 m = M m = O(1) = 12 Timo Bingmann, Christian Schulz

14 Wahrscheinlichkeit für Kollision Wiederholung 0-1 ZV X e : 1 für h(e) = h(k), e M, 0 sonst E[X ] = E[ e M X e ] = e M E[X e ] = e M P [X e = 1] = M P [X e = 1] = = M Anzahl aller Hashfunktionen mit h(e)=h(k) {}}{ m Key 1 } m {{ Key } Anzahl aller Hashfunktionen = M 1 m = M m = O(1) springender Punkt in Rechnung: Hashfunktion zufällig aus Menge aller möglichen ausgewählt nicht: Hashfunktion würfelt Wert für jeden Schlüssel. = 12 Timo Bingmann, Christian Schulz

15 Universelles Hashing Idee: nutze nur bestimmte einfache Hash-Funktionen H {0..m 1} Key ist universell falls für alle x, y in Key mit x y und zufälligem h H, P [h(x) = h(y)] = 1 m. Theorem gilt auch für universelle Familien von Hashfunktionen 13 Timo Bingmann, Christian Schulz

16 Universalität von Hashfunktionen Beispiele 14 Timo Bingmann, Christian Schulz

17 Bit-Matrix-Multiplikation Universalität h M (x) = Mx M {0, 1} w k, Arithmetik mod 2 (XOR and AND) Anzahl Slots m in Hashtabelle m = 2 w Beachte: x {0, 1} k und Mx {0, 1} w 15 Timo Bingmann, Christian Schulz

18 Bit-Matrix-Multiplikation Universalität h M (x) = Mx M {0, 1} w k, Arithmetik mod 2 (XOR and AND) Anzahl Slots m in Hashtabelle m = 2 w Beachte: x {0, 1} k und Mx {0, 1} w M = ( ) und x = (1, 0, 0, 1) T Mx mod 2 = (0, 1) T 15 Timo Bingmann, Christian Schulz

19 Bit-Matrix-Multiplikation Universalität h M (x) = Mx, M {0, 1} w k, m = 2 w Zu zeigen, für alle x y und h M gilt P[h M (x) = h M (y)] = 1 m für ein M gewählt aus allen möglichen. h(x) = h(y) Mx = My i {1,..., w} : k M ij x j = j=1 k M ij y j j=1 16 Timo Bingmann, Christian Schulz

20 Bit-Matrix-Multiplikation Universalität i {1,..., w} : k j=1 M ijx j = k j=1 M ijy j Anzahl Matrizen, die obiges Gleichungssystem lösen? w Gleichungen und wk Variablen M ij unterbestimmt, x y wk w Vektoren spannen Lösungsraum auf 2 wk w Lösungen 17 Timo Bingmann, Christian Schulz

21 Bit-Matrix-Multiplikation Universalität i {1,..., w} : k j=1 M ijx j = k j=1 M ijy j Anzahl Matrizen, die obiges Gleichungssystem lösen? w Gleichungen und wk Variablen M ij unterbestimmt, x y wk w Vektoren spannen Lösungsraum auf 2 wk w Lösungen Anzahl möglicher Matrizen M: 2 wk 17 Timo Bingmann, Christian Schulz

22 Bit-Matrix-Multiplikation Universalität i {1,..., w} : k j=1 M ijx j = k j=1 M ijy j Anzahl Matrizen, die obiges Gleichungssystem lösen? w Gleichungen und wk Variablen M ij unterbestimmt, x y wk w Vektoren spannen Lösungsraum auf 2 wk w Lösungen Anzahl möglicher Matrizen M: 2 wk P[h M (x) = h M (y)] = 2wk w 2 wk = 2 w = 1 2 w = 1 m 17 Timo Bingmann, Christian Schulz

23 Bloom Filter schnelle, ungenaue Suche 18 Timo Bingmann, Christian Schulz

24 Bloom Filters Randomisierte Datenstruktur Problem: INSERT und CONTAINS(e) Operationen CONTAINS(e): "ja", wenn e enthalten, "nein sonst erlaube false positive, d.h. Antwort ja, obwohl nicht enthalten Anwendungsbeispiele: Spellchecking Webcrawling 19 Timo Bingmann, Christian Schulz

25 Bloom Filters Randomisierte Datenstruktur Problem: INSERT und CONTAINS(e) Operationen CONTAINS(e): "ja", wenn e enthalten, "nein sonst erlaube false positive, d.h. Antwort ja, obwohl nicht enthalten Anwendungsbeispiele: Spellchecking Webcrawling Erste Idee: verwende Hashing (keine false positives) wir wollen weniger Speicher verwenden! 19 Timo Bingmann, Christian Schulz

26 Bloom Filters Randomisierte Datenstruktur n Elemente k 1 Hashfunktionen h i array A[0..., m 1] von Bits Insert(x): 1 setze A[h i (x)] = 1 i {1,..., k} Contains(x): 1 wenn A[h i (x)] = 1 i {1,..., k} ja 2 sonst nein 20 Timo Bingmann, Christian Schulz

27 Bloom Filters Insert Beispiel (k = 3) h 1 (x) h 2 (x) h 3 (x) contains(x) liefert JA! 21 Timo Bingmann, Christian Schulz

28 Bloom Filters Insert Beispiel (k = 3) h 1 (z) h 2 (z) h 3 (z) contains(z) liefert NEIN! 22 Timo Bingmann, Christian Schulz

29 Bloom Filters Insert Beispiel (k = 3) h 1 (y) h 2 (y) h 3 (y) contains(y x) liefert JA, obwohl y nicht einfügt wurde! 23 Timo Bingmann, Christian Schulz

30 Bloom Filters Wie wahrscheinlich sind false positives? ( e x = lim n 1 + x ) n n Annahme: Hashfunktionen haben uniform gleichverteiltes Bild p Wahrscheinlichkeit das Bit = 0 nach n Einfügungen p = ( ) 1 1 kn ( (1 ) m = 1 m ) kn/m m e kn/m Wahrscheinlichkeit für false positive also (1 p) k = (1 1 e kn/m ) k 24 Timo Bingmann, Christian Schulz

31 Bloom Filters Wie wahrscheinlich sind false positives? ( e x = lim n 1 + x ) n n Annahme: Hashfunktionen haben uniform gleichverteiltes Bild p Wahrscheinlichkeit das Bit = 0 nach n Einfügungen p = ( ) 1 1 kn ( (1 ) m = 1 m ) kn/m m e kn/m Wahrscheinlichkeit für false positive also (1 p) k = (1 1 e kn/m ) k optimialer Wert für k := m n ln 2 24 Timo Bingmann, Christian Schulz

32 Bloom Filters Rechenbeispiel Wahrscheinlichkeit für false positive (1 1 e kn/m ) k n = Objekte m = Bits wähle k = 7 Wahrscheinlichkeit für false positive < 1% Vorteile: viel kompaktere Repräsentation als Abspeichern von Objekten z.b. Strings, Webseiten, Hashwerte, Timo Bingmann, Christian Schulz

33 Bloom Filters Rechenbeispiel Wahrscheinlichkeit für false positive (1 1 e kn/m ) k n = Objekte m = Bits wähle k = 7 Wahrscheinlichkeit für false positive < 1% genauere Analyse: on the false-positive rate of bloom filters, Bose et. al Vorteile: viel kompaktere Repräsentation als Abspeichern von Objekten z.b. Strings, Webseiten, Hashwerte, Timo Bingmann, Christian Schulz

34 De-amortisierung 26 Timo Bingmann, Christian Schulz

35 Deamortisierung Unbounded Arrays Wichtige Operationen: access(n) in O(1) push_back(n) amortisiert in O(1) pop_back(n) amortisiert in O(1) Worst-Case: Ω(n) für push_back, pop_back 27 Timo Bingmann, Christian Schulz

36 Deamortisierung Unbounded Arrays Wichtige Operationen: access(n) in O(1) push_back(n) amortisiert in O(1) pop_back(n) amortisiert in O(1) Worst-Case: Ω(n) für push_back, pop_back Problem für Echtzeitsysteme!? 27 Timo Bingmann, Christian Schulz

37 Deamortisierung Unbounded Arrays Wichtige Operationen: access(n) in O(1) push_back(n) amortisiert in O(1) pop_back(n) amortisiert in O(1) Ziel: richtiges O(1) Idee: Bankkontomethode anpassen statt Einzahlung Arbeit verrichten Deamortisierung 27 Timo Bingmann, Christian Schulz

38 Deamortisierung Unbounded Arrays Arbeit statt Einzahlung: push_back starte direkt nach Verdoppelung Vorgehen: schreibe das eigentliche Element kopiere zwei weitere Elemente n + 1 2n 4n 28 Timo Bingmann, Christian Schulz

39 Deamortisierung Unbounded Arrays Arbeit statt Einzahlung: push_back starte direkt nach Verdoppelung Vorgehen: schreibe das eigentliche Element kopiere zwei weitere Elemente 28 Timo Bingmann, Christian Schulz

40 Deamortisierung Unbounded Arrays Arbeit statt Einzahlung: push_back starte direkt nach Verdoppelung Vorgehen: schreibe das eigentliche Element kopiere zwei weitere Elemente 28 Timo Bingmann, Christian Schulz

41 Deamortisierung Unbounded Arrays Arbeit statt Einzahlung: push_back starte direkt nach Verdoppelung Vorgehen: schreibe das eigentliche Element kopiere zwei weitere Elemente 28 Timo Bingmann, Christian Schulz

42 Deamortisierung Unbounded Arrays Arbeit statt Einzahlung: push_back starte direkt nach Verdoppelung Vorgehen: schreibe das eigentliche Element kopiere zwei weitere Elemente 28 Timo Bingmann, Christian Schulz

43 Deamortisierung Unbounded Arrays Arbeit statt Einzahlung: pop_back analog zu push_back Vorgehen: lösche das eigentliche Element kopiere ein weiteres Element 29 Timo Bingmann, Christian Schulz

44 Deamortisierung Unbounded Arrays Insgesamt: Worst-Case-Laufzeit auch in O(1) Nicht überall so leicht anwendbar. 30 Timo Bingmann, Christian Schulz

45 Sortieren Rebooted Die meisten intuitiven Sortieralgorithmen basieren auf: 1 Selection: finde das kleinste (oder größte) Element, und trenne es von den übrigen. Wiederhole bis alle ausgewählt wurden. 2 Insertion: betrachte Elemente einzeln und füge in sortierte Teilfolgen ein. 3 Exchange: vertauscht ungeordnete Paare von Elemente, bis keine weitere Vertauschungen notwendig sind. 4 Enumeration: vergleiche ein Element mit allen anderen. Dann platziere es endgültig an Hand der Anzahl kleiner Elemente. In der Regel erreichen diese nicht die untere Schranke Θ(n log n). 31 Timo Bingmann, Christian Schulz

46 Selection Sort Function selectionsort(a : Array of Element; n : N) for i := 0 to n 1 do min := i for j := i + 1 to n 1 do if A[j] < A[min] then min := j endfor swap(a[i], A[min]) invariant A[0] A[i] endfor // Suche kleinstes Element // Tausche Element an Anfang 32 Timo Bingmann, Christian Schulz

47 Selection Sort Function selectionsort(a : Array of Element; n : N) for i := 0 to n 1 do min := i for j := i + 1 to n 1 do if A[j] < A[min] then min := j endfor swap(a[i], A[min]) invariant A[0] A[i] endfor // Suche kleinstes Element // Tausche Element an Anfang Wieviele Vergleiche? 32 Timo Bingmann, Christian Schulz

48 Selection Sort Function selectionsort(a : Array of Element; n : N) for i := 0 to n 1 do min := i for j := i + 1 to n 1 do if A[j] < A[min] then min := j endfor swap(a[i], A[min]) invariant A[0] A[i] endfor // Suche kleinstes Element // Tausche Element an Anfang Wieviele Vergleiche? immer n(n 1) 2 = Θ ( n 2)! 32 Timo Bingmann, Christian Schulz

49 Insertion Sort Function insertionsort(a : Array of Element; n : N) for i := 1 to n 1 do j := i x := A[j] while (j > 0) & (A[j 1] < x) A[j] := A[j 1] j := j 1 endwhile A[j] := x invariant A[0] A[i] endfor // {A[0]} ist sortiert // Finde richtige Stelle j // Schiebe größere Elemente // nach hinten. // Setze Element 33 Timo Bingmann, Christian Schulz

50 Insertion Sort Function insertionsort(a : Array of Element; n : N) for i := 1 to n 1 do j := i x := A[j] while (j > 0) & (A[j 1] < x) A[j] := A[j 1] j := j 1 endwhile A[j] := x invariant A[0] A[i] endfor Vermeide j > 0 mit einem Sentinel A[ 1] :=. // {A[0]} ist sortiert // Finde richtige Stelle j // Schiebe größere Elemente // nach hinten. // Setze Element 33 Timo Bingmann, Christian Schulz

51 Insertion Sort Function insertionsort(a : Array of Element; n : N) for i := 1 to n 1 do j := i x := A[j] while (j > 0) & (A[j 1] < x) A[j] := A[j 1] j := j 1 endwhile A[j] := x invariant A[0] A[i] endfor // {A[0]} ist sortiert // Finde richtige Stelle j // Schiebe größere Elemente // nach hinten. // Setze Element Wieviele Vergleiche? worst-case? 33 Timo Bingmann, Christian Schulz

52 Insertion Sort Function insertionsort(a : Array of Element; n : N) for i := 1 to n 1 do j := i x := A[j] while (j > 0) & (A[j 1] < x) A[j] := A[j 1] j := j 1 endwhile A[j] := x invariant A[0] A[i] endfor // {A[0]} ist sortiert // Finde richtige Stelle j // Schiebe größere Elemente // nach hinten. // Setze Element Wieviele Vergleiche? worst-case: n (n 1) 2 = Θ ( n 2), average? 33 Timo Bingmann, Christian Schulz

53 Insertion Sort Function insertionsort(a : Array of Element; n : N) for i := 1 to n 1 do j := i // {A[0]} ist sortiert while (j > 0) & (A[j 1] < A[j]) // Finde richtige Stelle j swap(a[j 1], A[j]) // Schiebe größere Elemente j := j 1 // nach hinten. endwhile invariant A[0] A[i] endfor Wieviele Swaps? worst-case: n (n 1) 2 = Θ ( n 2), average? 33 Timo Bingmann, Christian Schulz

54 Insertion Sort Average Case Annahme: Alle Elemente verschieden und die Eingabe ist eine zufällige Permutation davon. Jede der n! Permutationen σ S n ist gleich wahrscheinlich. σ = ( ) 34 Timo Bingmann, Christian Schulz

55 Insertion Sort Average Case Annahme: Alle Elemente verschieden und die Eingabe ist eine zufällige Permutation davon. Jede der n! Permutationen σ S n ist gleich wahrscheinlich. Eine Paar (i, j) N 1 mit i < j ist eine Inversion, wenn σ(i) > σ(j). σ = ( ) Ein σ S n hat zwischen 0 und ( ) n Inversionen. 2 Beispiele: (1, 2, 3, 4, 5) und (5, 4, 3, 2, 1). 34 Timo Bingmann, Christian Schulz

56 Insertion Sort Average Case σ = ( ) Jeder Austausch falsch sortierter, benachbarter Positionen (swap) reduziert die Anzahl der Inversionen um genau 1. Die Anzahl von swaps in Insertion-Sort ist genau die Anzahl Inversionen in der Eingabe-Permutation. Nenne diese Anzahl X. Wir suchen den Erwartungswert: E(X ). 35 Timo Bingmann, Christian Schulz

57 Insertion Sort Average Case Wir zählen die erwartete Anzahl von Inversionen: Für eine Permutation σ S n sei { 1 falls (i, j) eine Inversion, X i,j := 0 sonst. Also ist X := i<j X i,j die Anzahl von Inversionen und ( ) E(X ) = E X i,j = E(X i,j ). i<j i<j Da E(X i,j ) = 1 2, ist so mit E(X ) = ( n 2 Worst case n (n 1) 2 = ) 1 2. ( ) n und average case 2 ( ) n Timo Bingmann, Christian Schulz

58 Merge Sort Function mergesort(a : Array of Element; lo, hi : N) if hi lo 1 then return // Basisfall mid := (lo + hi)/2 // mittleres Element mergesort(lo, mid), mergesort(mid, hi) // Sortiere Hälften T := allocate (Array of Element size hi lo) i := lo, j := mid, k := 0 // Laufindizes while i < mid & j < hi if A[i] < A[j] T [k++] := A[i++] // Mische! else T [k++] := A[j++] endwhile while i < mid do T [k++] := A[i++] // Kopiere Reste while j < hi do T [k++] := A[j++] A[lo,..., hi 1] := T [0,..., (hi lo) 1] // Kopiere zurück dispose (T ) Worst case: Θ(n log n), average case Θ(n log n). 37 Timo Bingmann, Christian Schulz

59 Sanders: Algorithmen I May 22, Quicksort erster Versuch Idee: Teile-und-Herrsche aber verglichen mit mergesort andersrum. Leiste Arbeit vor rekursivem Aufruf Function quicksort(s : Sequence of Element) : Sequence of Element if s 1 then return s pick some p s a:= e s : e < p b:= e s : e = p c:= e s : e > p return concatenation of quicksort(a), b, and quicksort(c)

60 Sanders: Algorithmen I May 22, Quicksort: Effiziente Implementierung Array-Implementierung inplace 2-Wegevergleiche

61 Sanders: Algorithmen I May 22, Procedure qsort(a : Array of Element; l, r : N) if l r then return k:= pickpivotpos(a, l, r) m:= partition(a, l, r, k) qsort(a,l,m 1) qsort(a,m + 1,r)

62 Sanders: Algorithmen I May 22, Function partition(a : Array of Element; l, r, k : N) p:= a[k] swap(a[k],a[r]) i:= l l i j r invariant p > p? p for j := l to r 1 do if a[ j] p then swap(a[i],a[ j]) i++ l assert p i > p r p swap(a[i],a[r]) l assert p i p > p r return i // pivot

63 Sanders: Algorithmen I May 22, Beispiel: Partitionierung, k = 1 p, i, j

64 Sanders: Algorithmen I May 22, Beispiel: Rekursion

65 Sanders: Algorithmen I May 22, Größerer Basisfall Procedure qsort(a : Array of Element; l, r : N) if r l + 1 n 0 then insertionsort(a[l..r]) k:= pickpivotpos(a, l, r) m:= partition(a, l, r, k) qsort(a,l,m 1) qsort(a,m + 1,r)

66 Sanders: Algorithmen I May 22, ,6,8,1,0,7,2,4,5,9 Inplace? Wirklich? 0 3,6,8,1,7,2,4,5,9 Im schlechtesten Fall: O(n) für Rekursionsstapel. 1 3,6,8,7,2,4,5,9 2 3,6,8,7,4,5,9 3 6,8,7,4,5,9 4 6,8,7,5,9 Im Mittel: 5 6,8,7,9 O(log n) zusätzlicher Platz kein Problem. Als Garantie für schlechtesten Fall: 6 8,7,9 halbrekursive Implementierung Rekursion auf kleinere Hälfte 7 8,9 8 9

67 Sanders: Algorithmen I May 22, Halbrekursive Implementierung Procedure qsort(a : Array of Element; l, r : N) while r l + 1 > n 0 do k:= pickpivotpos(a, l, r) m:= partition(a, l, r, k) if m < (l + r)/2 then qsort(a,l,m 1); l:= m + 1 else qsort(a,m + 1,r); r:= m 1 insertionsort(a[l..r])

68 Sanders: Algorithmen I May 22, Halbrekursive Implementierung Procedure qsort(a : Array of Element; l, r : N) while r l + 1 > n 0 do k:= pickpivotpos(a, l, r) m:= partition(a, l, r, k) if m < (l + r)/2 then qsort(a,l,m 1); l:= m + 1 else qsort(a,m + 1,r); r:= m 1 insertionsort(a[l..r]) Satz: Rekursionstiefe log nn0 Beweisidee: Induktion. Teilproblemgröße halbiert sich (mindestens) mit jedem rekursiven Aufruf

69 Sanders: Algorithmen I May 22, Quadratische Komplexität bei gleichen Elementen? Variante aus dem Buch verwenden oder doch Drei-Wege-Partitionierung

70 Sanders: Algorithmen I May 22, Procedure qsortternary(a : Array of Element; l, r : N) if l r then return p:= key(a[pickpivotpos(a, l, r)]) (m,m ):= partitionternary(a,l,r, p) qsortternary(a, l, m 1) qsortternary(a,m + 1,r)

71 Sanders: Algorithmen I May 22, Function partitionternary(a : Array of Element; l, r : N; p : Key) i:= l, j:= l, k:= r l i j k r invariant < p > p? = p while ( j k) if a[ j] = p then swap(a[ j], a[k]), k ; else if a[ j] < p then swap(a[ j],a[i]), i++, j++ ; else j++ ; l i k r assert < p > p = p i := i + r k + 1 swap(a[i..i ],a[k + 1..r]) l assert < p i i = p r > p return (i,i )

72 Sanders: Algorithmen I May 22, Vergleich Quicksort Mergesort Pro Mergesort O(n log n) Zeit (deterministisch) qsort: det. Varianten nlogn + O(n) Elementvergleiche ( untere Schranke) qsort: möglich bei sorgfältiger Pivotwahl Stabil (gleiche Elemente behalten Reihenfolge bei) qsort: leicht bei Aufgabe der inplace-eigenschaft Pro Quicksort inplace Etwas schneller?

73 Vorgefertigte Sortieralgorithmen in aktuellen Programmiersprachen Verwenden Sie diese statt eigene zu implementieren! 38 Timo Bingmann, Christian Schulz

74 Java Zahlen: Variante von Quick-Sort int[] numbers = {42, 7, 9, 18, 1, 123}; java.util.arrays.sort(numbers) Allgemeine Elemente: Variante von Merge-Sort Comparator<Elem> comparator = new Comparator<Elem> { int compare(elem a, Elem b) { /*...*/ } } Elem[] elements = { /*...*/ } java.util.arrays.sort(elements, 3, 15, comparator) 39 Timo Bingmann, Christian Schulz

75 C++ Zahlen: #include <algorithm> int numbers[] = {42, 7, 9, 18, 1, 123}; std::vector<int> vec(numbers, numbers + 6); std::sort(vec.begin(), vec.end()) Allgemeine Elemente: #include <algorithm> bool less_than(elements& a, Elements& b) { /*...*/ }... Elements* elements = createelements(n); std::sort(elements, elements + n, less_than)...oder... std::stable_sort(elements, elements + n, less_than) 40 Timo Bingmann, Christian Schulz

76 time / (n log n) [ns] Sanders: Algorithmen I May 22, Benchmark Sortieren einer zufaelligen Sequenz (int) n InsertionSort MergeSort QuickSort JDK QuickSort

77 Sanders: Algorithmen I May 22, Auswahl (Selection) Definition: Rang der Elemente einer Folge s mit s = n: Abbildung r : 1..n 1..n mit i, j : s[i] < s[ j] r(i) < r( j). Grob: a[i] ist das r(i)-te Element von a. Frage: warum ist r nicht notwendig eindeutig? //return an element of s with rank k Function select(s : Sequence of Element; k : N) : Element assert s k

78 Sanders: Algorithmen I May 22, Auswahl Anwendungen Statistik Spezialfall Medianauswahl: k = s /2 allgemeinere Quantile (10 %,... ) Unterprogramm z. B. Eingabe eingrenzen auf vielversprechendste Elemente

79 Sanders: Algorithmen I May 22, Quickselect quicksort mit einseitiger Rekursion Function select(s : Sequence of Element; k : N) : Element assert s k pick p s uniformly at random a := e s : e < p if a k then return select(a,k)// a // pivot key b := e s : e = p k if a + b k then return p // a b = p,..., p c := e s : e > p return select(c,k a b ) // a b c k k

80 Sanders: Algorithmen I May 22, Beispiel s k p a b c 3,1,4,5,9,2,6,5,3,5, ,4,5,9,6,5,3,5,8 3,4,5,9,6,5,3,5, ,4,5,5,3,5 6 9,8 3,4,5,5,3, ,4,3 5,5,5

81 Sanders: Algorithmen I May 22, Quickselect Analyse Function select(s : Sequence of Element; k : N) : Element assert s k pick p s uniformly at random a := e s : e < p if a k then return select(a,k)// a // pivot key b := e s : e = p k if a + b k then return p // a b = p,..., p c := e s : e > p return select(c,k a b ) // a b c k Satz: quickselect hat erwartete Ausführungszeit O( s ) Beweis: hier nicht k

82 Sanders: Algorithmen I May 22, Mehr zum Auswahlproblem Tuning (array, inplace, 2-Wege-Vergleiche, iterativ) analog quicksort Deterministische Auswahl: quickselect mit spezieller det. Pivotwahl partielles Sortieren (z. B. einfache Variante von quickselect) weiss wie es geht? wer Weitere Verallgemeinerungen: mehrere Ränge, teilweise sortierte Eingaben,... Beispiel: Optimale Range Median Berechnung [B. Gfeller, P. Sanders, ICALP 2009]. Vorberechnungszeit O(n log n), Zeit O(log n) für a select( s[a],...,s[b],k) s k-th b

INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS

INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS Julian Arz, Timo Bingmann, Sebastian Schlag INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS 1 KIT Julian Universität Arz, des Timo LandesBingmann, Baden-Württemberg Sebastian und Schlag nationales

Mehr

3. Übung Algorithmen I

3. Übung Algorithmen I INSTITUT FÜR THEORETISCHE INFORMATIK 1 KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft Institut für Theoretische www.kit.edu Informatik Hashtabellen:

Mehr

INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS

INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS Julian Arz, Timo Bingmann, Sebastian Schlag INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS 1 KIT Julian Universität Arz, des Timo LandesBingmann, Baden-Württemberg Sebastian und Schlag nationales

Mehr

Übung Algorithmen I

Übung Algorithmen I Übung Algorithmen I 20.5.15 Christoph Striecks Christoph.Striecks@kit.edu (Mit Folien von Julian Arz, Timo Bingmann und Sebastian Schlag.) Roadmap Organisation Mergesort, Quicksort Dual Pivot Quicksort

Mehr

Algorithmen I. Prof. Jörn Müller-Quade Institut für Theoretische Informatik Web:

Algorithmen I. Prof. Jörn Müller-Quade Institut für Theoretische Informatik Web: Algorithmen I Prof. Jörn Müller-Quade 24.05.2017 Institut für Theoretische Informatik Web: https://crypto.iti.kit.edu/index.php?id=799 (Folien von Peter Sanders) KIT Institut für Theoretische Informatik

Mehr

sort hash uncompress merge & mark hash collisions

sort hash uncompress merge & mark hash collisions Julian Arz, Timo Bingmann, Sebastian Schlag INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS hash sort... compress uncompress merge & mark hash collisions 1 KIT Julian Universität Arz, des Timo LandesBingmann,

Mehr

Übung Algorithmen I

Übung Algorithmen I Übung Algorithmen I 18.5.16 Lukas Barth lukas.barth@kit.edu (Mit Folien von Julian Arz, Timo Bingmann, Sebastian Schlag und Christoph Striecks) Roadmap Sortieren Kleine Wiederholung Visualisierungen Adaptives

Mehr

Formaler. Gegeben: Elementfolge s = e 1,...,e n. s ist Permutation von s e 1 e n für eine lineare Ordnung ` '

Formaler. Gegeben: Elementfolge s = e 1,...,e n. s ist Permutation von s e 1 e n für eine lineare Ordnung ` ' Sortieren & Co 164 165 Formaler Gegeben: Elementfolge s = e 1,...,e n Gesucht: s = e 1,...,e n mit s ist Permutation von s e 1 e n für eine lineare Ordnung ` ' 166 Anwendungsbeispiele Allgemein: Vorverarbeitung

Mehr

4. Übung zu Algorithmen I 17. Mai 2017

4. Übung zu Algorithmen I 17. Mai 2017 4. Übung zu Algorithmen I 17. Mai 2017 Björn Kaidel bjoern.kaidel@kit.edu (mit Folien von Julian Arz, Timo Bingmann, Lisa Kohl, Christian Schulz, Sebastian Schlag und Christoph Striecks) Organisatorisches

Mehr

Denition: Rang eines Elements e einer Folge s = Position von e in sort(s) (angefangen bei 1). Frage: warum ist r nicht notwendig eindeutig?

Denition: Rang eines Elements e einer Folge s = Position von e in sort(s) (angefangen bei 1). Frage: warum ist r nicht notwendig eindeutig? 207 Auswahl (Selection) Denition: Rang eines Elements e einer Folge s = Position von e in sort(s) (angefangen bei 1). Frage: warum ist r nicht notwendig eindeutig? // return an element of s with rank k

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

Übung Algorithmen I

Übung Algorithmen I Übung Algorithmen I 24.5.17 Sascha Witt sascha.witt@kit.edu (Mit Folien von Lukas Barth, Julian Arz, Timo Bingmann, Sebastian Schlag und Christoph Striecks) Organisatorisches Übungsklausur Am 21.06.2017

Mehr

Erinnerung VL vom

Erinnerung VL vom Erinnerung VL vom 09.05.2016 Analyse von Hashtabellen mit verketteten Listen Erwartete Laufzeit O(1) bei zuf. Hashfkt. und falls M O(m) Guter Ersatz (hier) für zuf. Hashfkt.: universelle Hashfunktionen

Mehr

Algorithmen I - Tutorium 28 Nr. 6

Algorithmen I - Tutorium 28 Nr. 6 Algorithmen I - Tutorium 28 Nr. 6 08.06.2017: Spaß mit Sortieren, Aufgaben und Wiederholung Marc Leinweber marc.leinweber@student.kit.edu INSTITUT FÜR THEORETISCHE INFORMATIK (ITI), PROF. DR. JÖRN MÜLLER-QUADE

Mehr

Übungsklausur Algorithmen I

Übungsklausur Algorithmen I Jun.-Prof. Hofheinz, Jun.-Prof. Meyerhenke (ITI, KIT) 08.06.2015 Übungsklausur Algorithmen I Aufgabe 1. (Algorithm Engineering) Nennen Sie zwei Konzepte, die Algorithm Engineering im Gegensatz zu theoretischer

Mehr

Algorithmen I. Prof. Jörn Müller-Quade Institut für Theoretische Informatik Web: https://crypto.iti.kit.edu/index.php?

Algorithmen I. Prof. Jörn Müller-Quade Institut für Theoretische Informatik Web: https://crypto.iti.kit.edu/index.php? Algorithmen I Prof. Jörn Müller-Quade 29.05.2017 Institut für Theoretische Informatik Web: https://crypto.iti.kit.edu/index.php?id=799 (Folien von Peter Sanders) KIT Institut für Theoretische Informatik

Mehr

Algorithmen I - Tutorium 28 Nr. 3

Algorithmen I - Tutorium 28 Nr. 3 Algorithmen I - Tutorium 28 Nr. 3 18.05.2016: Spaß mit Listen, Arrays und amortisierter Analyse Marc Leinweber marc.leinweber@student.kit.edu INSTITUT FÜR THEORETISCHE INFORMATIK (ITI), PROF. DR. JÖRN

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

Übungsklausur Algorithmen I

Übungsklausur Algorithmen I Universität Karlsruhe, Institut für Theoretische Informatik Prof. Dr. P. Sanders 26.5.2010 svorschlag Übungsklausur Algorithmen I Hiermit bestätige ich, dass ich die Klausur selbständig bearbeitet habe:

Mehr

13. Hashing. AVL-Bäume: Frage: Suche, Minimum, Maximum, Nachfolger in O(log n) Einfügen, Löschen in O(log n)

13. Hashing. AVL-Bäume: Frage: Suche, Minimum, Maximum, Nachfolger in O(log n) Einfügen, Löschen in O(log n) AVL-Bäume: Ausgabe aller Elemente in O(n) Suche, Minimum, Maximum, Nachfolger in O(log n) Einfügen, Löschen in O(log n) Frage: Kann man Einfügen, Löschen und Suchen in O(1) Zeit? 1 Hashing einfache Methode

Mehr

Übungsklausur Algorithmen I

Übungsklausur Algorithmen I Name: Vorname: Matrikelnr.: Tutorium: Jun.-Prof. Hofheinz, Jun.-Prof. Meyerhenke (ITI, KIT) 08.06.2015 Übungsklausur Algorithmen I Aufgabe 1. (Algorithm Engineering) [2 Punkte] Nennen Sie zwei Konzepte,

Mehr

12. Hashing. Hashing einfache Methode um Wörtebücher zu implementieren, d.h. Hashing unterstützt die Operationen Search, Insert, Delete.

12. Hashing. Hashing einfache Methode um Wörtebücher zu implementieren, d.h. Hashing unterstützt die Operationen Search, Insert, Delete. Hashing einfache Methode um Wörtebücher zu implementieren, d.h. Hashing unterstützt die Operationen Search, Insert, Delete. Worst-case Zeit für Search: Θ(n). In der Praxis jedoch sehr gut. Unter gewissen

Mehr

Grundlagen: Algorithmen und Datenstrukturen

Grundlagen: Algorithmen und Datenstrukturen Technische Universität München Fakultät für Informatik Lehrstuhl für Effiziente Algorithmen Dr. Hanjo Täubig Tobias Lieber Sommersemester 2011 Mittelklausur 5. Juli 2011 Grundlagen: Algorithmen und Datenstrukturen

Mehr

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

Algorithmen I. Tutorium 1-4. Sitzung. Dennis Felsing Algorithmen I Tutorium 1-4. Sitzung Dennis Felsing dennis.felsing@student.kit.edu www.stud.uni-karlsruhe.de/~ubcqr/algo 2011-05-09 Überblick 1 Verkettete Listen 2 Unbeschränkte Felder 3 Amortisierte Laufzeitanalyse

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

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

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

Erinnerung VL vom

Erinnerung VL vom Erinnerung VL vom 04.05.2016 Hashtabellen (mit verketteten Listen) Datenstruktur für Mengen mit schnellen Wörterbuchoperationen Schnelles Wiedernden von Elementen durch möglichst chaotische Anordnung im

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen Wintersemester 017/18 8. Vorlesung Sortieren mit dem Würfel! Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I - 5 Guten Morgen! Tipps für unseren ersten Test am Do,

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

Karlsruher Institut für Technologie Institut für Theoretische Informatik. Übungsklausur Algorithmen I

Karlsruher Institut für Technologie Institut für Theoretische Informatik. Übungsklausur Algorithmen I Vorname: Karlsruher Institut für Technologie Institut für Theoretische Informatik Prof. Jörn Müller-Quade 21.06.2017 Übungsklausur Algorithmen I Aufgabe 1. Kleinaufgaben 8 Punkte Aufgabe 2. Hashing 6 Punkte

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

7. Übung zu Algorithmen I 1. Juni 2016

7. Übung zu Algorithmen I 1. Juni 2016 7. Übung zu Algorithmen I 1. Juni 2016 Lukas Barth lukas.barth@kit.edu (mit Folien von Lisa Kohl) Roadmap Ganzzahliges Sortieren mit reellen Zahlen Schnellere Priority Queues Bucket Queue Radix Heap Organisatorisches

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] Heapsort 211 Inspiration von Selectsort: Schnelles Einfügen Inspiration von Insertionsort:

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

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

Algorithmen I. Prof. Peter Sanders Institut für Theoretische Informatik Web: https://crypto.iti.kit.edu/index.php?

Algorithmen I. Prof. Peter Sanders Institut für Theoretische Informatik Web: https://crypto.iti.kit.edu/index.php? Algorithmen I Prof. Peter Sanders 16.05.2017 Institut für Theoretische Informatik Web: https://crypto.iti.kit.edu/index.php?id=799 (Folien von Peter Sanders) KIT Institut für Theoretische Informatik 1

Mehr

1. Übung Algorithmen I

1. Übung Algorithmen I Timo Bingmann, Christian Schulz INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS 1 KIT Timo Universität Bingmann, des LandesChristian Baden-Württemberg Schulz und nationales Forschungszentrum in der

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

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

Ü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

Grundlagen der Algorithmen und Datenstrukturen Kapitel 4

Grundlagen der Algorithmen und Datenstrukturen Kapitel 4 Grundlagen der Algorithmen und Datenstrukturen Kapitel 4 Christian Scheideler + Helmut Seidl SS 2009 06.05.09 Kapitel 4 1 Wörterbuch-Datenstruktur S: Menge von Elementen Jedes Element e identifiziert über

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

Ü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

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

6/23/06. Universelles Hashing. Nutzen des Universellen Hashing. Problem: h fest gewählt es gibt ein S U mit vielen Kollisionen

6/23/06. Universelles Hashing. Nutzen des Universellen Hashing. Problem: h fest gewählt es gibt ein S U mit vielen Kollisionen Universelles Hashing Problem: h fest gewählt es gibt ein S U mit vielen Kollisionen wir können nicht annehmen, daß die Keys gleichverteilt im Universum liegen (z.b. Identifier im Programm) könnte also

Mehr

Algorithmen I - Tutorium 28 Nr. 2

Algorithmen I - Tutorium 28 Nr. 2 Algorithmen I - Tutorium 28 Nr. 2 11.05.2017: Spaß mit Invarianten (die Zweite), Rekurrenzen / Mastertheorem und Merging Marc Leinweber marc.leinweber@student.kit.edu INSTITUT FÜR THEORETISCHE INFORMATIK

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

Ü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

QuickSort ist ein Sortieralgorithmus, der auf der Idee des Teile & Beherrsche beruht, und das gegebene Array an Ort und Stelle (in place) sortiert

QuickSort ist ein Sortieralgorithmus, der auf der Idee des Teile & Beherrsche beruht, und das gegebene Array an Ort und Stelle (in place) sortiert 4.3.6 QuickSort QuickSort ist ein Sortieralgorithmus, der auf der Idee des Teile & Beherrsche beruht, und das gegebene Array an Ort und Stelle (in place) sortiert QuickSort teilt das gegebene Array anhand

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

INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS

INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS Julian Arz, Timo Bingmann, Sebastian Schlag INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS 1 KIT Julian Universität Arz, des Timo LandesBingmann, Baden-Württemberg Sebastian und Schlag nationales

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

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 4 (7.5.2014) Asymptotische Analyse, Sortieren IV Algorithmen und Komplexität Erfahrungen 1. Übung C++ / Java sind komplett ungewohnt Struktur

Mehr

Informatik II, SS 2016

Informatik II, SS 2016 Informatik II - SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 2 (22.4.2016) Sortieren II Algorithmen und Komplexität SelectionSort: Programm Schreiben wir doch das gleich mal als Java/C++ - Programm

Mehr

Suchen und Sortieren Sortieren. Mergesort

Suchen und Sortieren Sortieren. Mergesort Suchen und Mergesort (Folie 142, Seite 55 im Skript) Algorithmus procedure mergesort(l, r) : if l r then return fi; m := (r + l)/2 ; mergesort(l, m 1); mergesort(m, r); i := l; j := m; k := l; while k

Mehr

Hashing II. Übersicht. 1 Hashing und Verkettung. 2 Offene Adressierung

Hashing II. Übersicht. 1 Hashing und Verkettung. 2 Offene Adressierung Übersicht Datenstrukturen und Algorithmen Vorlesung 13: 1 Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group http://moves.rwth-aachen.de/teaching/ss-15/dsal/ 2 Effizienz

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

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Hashing Maike Buchin 2. und 4.5.2017 Motivation häufig werden Daten anhand eines numerischen Schlüssel abgespeichert Beispiele: Studenten der RUB nach Matrikelnummer Kunden einer

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

Hashing II. Übersicht. 1 Hashing und Verkettung. 2 Offene Adressierung

Hashing II. Übersicht. 1 Hashing und Verkettung. 2 Offene Adressierung Übersicht Datenstrukturen und Algorithmen Vorlesung 13: 1 Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group https://moves.rwth-aachen.de/teaching/ss-18/dsal/ 2 Effizienz

Mehr

Informatik II, SS 2016

Informatik II, SS 2016 Informatik II - SS 2016 (Algorithmen & Datenstrukturen) Vorlesung 8 (13.5.2016) Hashtabellen I Algorithmen und Komplexität Dictionary mit sortiertem Array Laufzeiten: create: O(1) insert: O(n) find: O(log

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) Wintersemester 2012/13 Jakob Vogel Computer-Aided Medical Procedures Technische Universität München Komplexität von Programmen Laufzeit kann näherungsweise

Mehr

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

Algorithmen I. Tutorium 1-3. Sitzung. Dennis Felsing Algorithmen I Tutorium 1-3. Sitzung Dennis Felsing dennis.felsing@student.kit.edu www.stud.uni-karlsruhe.de/~ubcqr/algo 2011-05-02 Überblick 1 Sortieren und Suchen 2 Mastertheorem 3 Datenstrukturen 4 Kreativaufgabe

Mehr

Informatik II, SS 2018

Informatik II, SS 2018 Informatik II - SS 2018 (Algorithmen & Datenstrukturen) Vorlesung 6 (7.5.2018) Dictionaries, Binäre Suche, Hashtabellen I / Yannic Maus Algorithmen und Komplexität Abstrakte Datentypen : Dictionary Dictionary:

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

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

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen Vorlesung Informatik 2 Algorithmen und Datenstrukturen (12 Hashverfahren: Verkettung der Überläufer) Prof. Dr. Susanne Albers Möglichkeiten der Kollisionsbehandlung Kollisionsbehandlung: Die Behandlung

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

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

Übung zu Algorithmen I 31. Mai 2017

Übung zu Algorithmen I 31. Mai 2017 Übung zu Algorithmen I 31. Mai 2017 Sascha Witt sascha.witt@kit.edu (mit Folien von Lukas Barth und Lisa Kohl) 1 / 25 Organisatorisches Korrigierte Übungsblätter Tutoren behalten Übungsblätter ca. zwei

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

Informatik II, SS 2016

Informatik II, SS 2016 Informatik II - SS 2016 (Algorithmen & Datenstrukturen) Vorlesung 3 (27.4.2014) O-Notation, Asymptotische Analyse, Sortieren III Algorithmen und Komplexität Selection Sort Algorithmus SelectionSort (informell):

Mehr

Hashing I. 1 Direkte Adressierung. 2 Grundlagen des Hashings. 3 Kollisionsauflösung durch Verkettung. 4 Hashfunktionen. 5 Offene Adressierung

Hashing I. 1 Direkte Adressierung. 2 Grundlagen des Hashings. 3 Kollisionsauflösung durch Verkettung. 4 Hashfunktionen. 5 Offene Adressierung Übersicht Datenstrukturen und Algorithmen Vorlesung 2: Hashing Prof. Dr. Erika Ábrahám Theorie Hybrider Systeme Informatik 2 http://ths.rwth-aachen.de/teaching/ss-4/ datenstrukturen-und-algorithmen/ Diese

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 7 (21.5.2014) Binäre Suche, Hashtabellen I Algorithmen und Komplexität Abstrakte Datentypen : Dictionary Dictionary: (auch: Maps, assoziative

Mehr

Informatik II, SS 2018

Informatik II, SS 2018 Informatik II - SS 2018 (Algorithmen & Datenstrukturen) Vorlesung 2 (23.4.2018) Sortieren II, Asymptotische Analyse, O-Notation Algorithmen und Komplexität Laufzeit Zeitmessung SelectionSort n 2 Laufzeit/n

Mehr

Algorithmen I - Tutorium 28 Nr. 9

Algorithmen I - Tutorium 28 Nr. 9 Algorithmen I - Tutorium 28 Nr. 9 29.06.2017: Spaß mit Graphen und Graphtraversierung Marc Leinweber marc.leinweber@student.kit.edu INSTITUT FÜR THEORETISCHE INFORMATIK (ITI), PROF. DR. JÖRN MÜLLER-QUADE

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

4.4.1 Statisches perfektes Hashing. des Bildbereichs {0, 1,..., n 1} der Hashfunktionen und S U, S = m n, eine Menge von Schlüsseln.

4.4.1 Statisches perfektes Hashing. des Bildbereichs {0, 1,..., n 1} der Hashfunktionen und S U, S = m n, eine Menge von Schlüsseln. 4.4 Perfektes Hashing Das Ziel des perfekten Hashings ist es, für eine Schlüsselmenge eine Hashfunktion zu finden, so dass keine Kollisionen auftreten. Die Größe der Hashtabelle soll dabei natürlich möglichst

Mehr

Übersicht. Einfache Suche Binäre Suchbäume Hashing Skip-Lists Mengen Sortieren Order-Statistics. 2 Suchen und Sortieren

Übersicht. Einfache Suche Binäre Suchbäume Hashing Skip-Lists Mengen Sortieren Order-Statistics. 2 Suchen und Sortieren Übersicht 2 Einfache Suche Binäre Suchbäume Skip-Lists Mengen Sortieren Order-Statistics (Folie 103, Seite 46 im Skript) Wie können wir eine partielle Funktion {1,..., n} N effizient speichern? Wie können

Mehr

Programmiertechnik II

Programmiertechnik II Hash-Tabellen Überblick Hashfunktionen: Abbildung von Schlüsseln auf Zahlen Hashwert: Wert der Hashfunktion Hashtabelle: Symboltabelle, die mit Hashwerten indiziert ist Kollision: Paar von Schlüsseln mit

Mehr

Grundlagen: Algorithmen und Datenstrukturen

Grundlagen: Algorithmen und Datenstrukturen Technische Universität München Fakultät für Informatik Lehrstuhl für Effiziente Algorithmen Dr. Hanjo Täubig Tobias Lieber Sommersemester 011 Übungsblatt 6. August 011 Grundlagen: Algorithmen und Datenstrukturen

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

Eine universelle Klasse von Hash-Funktionen

Eine universelle Klasse von Hash-Funktionen Eine universelle Klasse von Hash-Funktionen Annahmen: U = p, mit Primzahl p und U = {0,, p-1} Seien a {1,, p-1} und b {0,, p-1} Definiere wie folgt Satz: Die Menge ist eine universelle Klasse von Hash-Funktionen..

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

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

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

Heapsort. 1. Erstelle aus dem gegebenen Array einen Max-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

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

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 2016 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda 1. Vorstellen des vierten Übungsblatts 2. Vorbereitende Aufgaben für das vierte Übungsblatt

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Universität Innsbruck Institut für Informatik Zweite Prüfung 16. Oktober 2008 Algorithmen und Datenstrukturen Name: Matrikelnr: Die Prüfung besteht aus 8 Aufgaben. Die verfügbaren Punkte für jede Aufgabe

Mehr

3. Übungsblatt zu Algorithmen I im SoSe 2017

3. Übungsblatt zu Algorithmen I im SoSe 2017 Karlsruher Institut für Technologie Prof. Dr. Jörn Müller-Quade Institut für Theoretische Informatik Björn Kaidel, Sebastian Schlag, Sascha Witt 3. Übungsblatt zu Algorithmen I im SoSe 2017 http://crypto.iti.kit.edu/index.php?id=799

Mehr

Übung Algorithmen I

Übung Algorithmen I Übung Algorithmen I 10.5.17 Sascha Witt sascha.witt@kit.edu (Mit Folien von Lukas Barth, Julian Arz, Timo Bingmann, Sebastian Schlag und Christoph Striecks) Roadmap Listen Skip List Hotlist Amortisierte

Mehr

Datenstrukturen und Algorithmen. Vorlesung 10

Datenstrukturen und Algorithmen. Vorlesung 10 Datenstrukturen und Algorithmen Vorlesung 10 Hashtabelle als Erinnerung Hashtabellen sind Tabellen (Arrays), wo aber die Elemente nicht von links nach rechts eingefügt werden, wie bei typischen Arrays

Mehr

Sanders / van Stee: Algorithmentechnik November 23, Sortieren & Co

Sanders / van Stee: Algorithmentechnik November 23, Sortieren & Co Sanders / van Stee: Algorithmentechnik November 23, 2007 1 5 Sortieren & Co Sanders / van Stee: Algorithmentechnik November 23, 2007 2 Formaler Gegeben: Elementfolge s = e 1,...,e n Gesucht: s = e 1,...,e

Mehr

Algorithmentheorie Randomisierung

Algorithmentheorie Randomisierung Algorithmentheorie 03 - Randomisierung Prof. Dr. S. Albers Randomisierung Klassen von randomisierten Algorithmen Randomisierter Quicksort Randomisierter Primzahltest Kryptographie 2 1. Klassen von randomisierten

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