4. Übung Algorithmen I
|
|
- Til Vogel
- vor 6 Jahren
- Abrufe
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
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
Mehr3. Ü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:
MehrINSTITUT 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 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
MehrAlgorithmen 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
Mehrsort 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 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
MehrFormaler. 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
Mehr4. Ü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
MehrDenition: 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
MehrSortieren & 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 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
MehrErinnerung 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
MehrAlgorithmen 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
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
MehrAlgorithmen 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
MehrAlgorithmen 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
MehrGrundlagen: 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
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:
Mehr13. 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
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,
Mehr12. 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
MehrGrundlagen: 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
MehrAlgorithmen 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
MehrDas 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.
MehrDas 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
MehrAlgorithmen 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
MehrErinnerung 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
MehrAlgorithmen 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,
Mehr14. 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
MehrKarlsruher 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
MehrDas 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
MehrDas 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
Mehr7. Ü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
MehrHeapsort, 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:
Mehr8. 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
MehrHeapsort, 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:
MehrInformatik 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
MehrAlgorithmen 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
Mehr1. Ü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
MehrA7.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
Mehr1. 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) Sommersemester 2017 Rüdiger Göbl, Mai Bui Computer Aided Medical Procedures Technische Universität München Fibonacci Zahlen Fibonacci Folge Die Fibonacci
MehrGrundlagen 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
MehrAlgorithmen 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 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:
MehrGrundlagen: 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
Mehr6/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
MehrAlgorithmen 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
MehrGrundlagen: 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 Sommersemester 2017 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda: Sortierverfahren 1. Schreibtischtest 2. Stabilität 3. Sortierung spezieller Arrays 4. Untere
MehrQuickSort 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
Mehr6 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
MehrINSTITUT 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
MehrKapitel 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
MehrInformatik 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
MehrInformatik 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
MehrSuchen 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
MehrHashing 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
MehrSortieralgorithmen. 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
MehrVorlesung 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
Mehr4. 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
MehrHashing 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
MehrInformatik 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) Wintersemester 2012/13 Jakob Vogel Computer-Aided Medical Procedures Technische Universität München Komplexität von Programmen Laufzeit kann näherungsweise
MehrAlgorithmen 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
MehrInformatik 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:
Mehr3. 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
MehrKlausur 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
MehrVorlesung 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
MehrAbschnitt 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
MehrKap. 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 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
Mehr9. 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
MehrInformatik 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):
MehrHashing 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
MehrInformatik 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
MehrInformatik 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
MehrAlgorithmen 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)
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.
Mehr4.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 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
MehrProgrammiertechnik 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
MehrGrundlagen: 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
MehrAbschnitt: 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
MehrEine 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 Sommersemester 017 Marc Bux, Humboldt-Universität zu Berlin Agenda 1. Vorrechnen von Aufgabenblatt 1. Wohlgeformte Klammerausdrücke 3. Teile und Herrsche Agenda 1.
MehrKapitel 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
MehrHeapsort. 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
MehrAlgorithmen 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 Sommersemester 2016 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda 1. Vorstellen des vierten Übungsblatts 2. Vorbereitende Aufgaben für das vierte Übungsblatt
MehrAlgorithmen 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
Mehr3. Ü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 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
MehrDatenstrukturen 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
MehrSanders / 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
MehrAlgorithmentheorie Randomisierung
Algorithmentheorie 03 - Randomisierung Prof. Dr. S. Albers Randomisierung Klassen von randomisierten Algorithmen Randomisierter Quicksort Randomisierter Primzahltest Kryptographie 2 1. Klassen von randomisierten
Mehr1.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