Algo rithm en und D atenstruk turen 9. V o rlesung
|
|
- Arnim Ziegler
- vor 6 Jahren
- Abrufe
Transkript
1 Algo rithm en und D atenstruk turen 9. V o rlesung Martin D ietzfelb in ger 6. J u n i 2005 T : Lineares Sondieren 0: 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: November Juli Januar Februar Juni September Maerz (4) (5) (8) April (8) August Oktober Mai (12) (2) Dezember (3) (4) (6) (10) (10) (12) F G K T u E A, T U Ilm en a u A u D FG KTuEA, TU Ilmenau AuD Prop osition Bei linearem S ond ieren in einer Tabelle d er Größ e m mit S ch lüsselmenge S = {x 1,...,x n } gilt, mit α = n/m: Die erw artete (nach (UF )) Anzah l von S ch lüsselvergleich en bei erfolgloser Suche nach y / S ist 1 ( ) (1 α) 2. Die erw artete (nach (UF )) mittlere (über x 1,...,x n ) Anzah l von S ch lüsselvergleich en bei erfolgreicher Suche nach y S ist 1 ( ) α N ur von α, nicht von n, m abhängig! Lineares Sondieren Anzahl Vergleiche α erfolglos erfolgreich FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD
2 Verdoppelungsstrategie bei linearem Sondieren: V erdop p le die Tabelle, sobald der Auslastungsfaktor α = n /m einen W ert von α 0 übersteigt z.b. α 0 = 0,75 oder α 0 = 0,8. E mpfehlung: Kombiniere lineares Sondieren mit einer guten universellen H ashklasse. Nicht auf die Z ufälligkeit von S vertrauen!!!! L ineares Sondieren p asst p erfekt zu C ache-architekturen und ist in der Praxis sehr schnell. Verallgemeinerung: open addressing G eschlossenes H ashing (man bleibt in T) Für jeden Schlüssel x U gibt es eine in [m]. Sondierungsfolge h(x, 0), h(x, 1), h(x, 2),... Beim Einfügen von x und Suchen nach x w erden die Zellen von T in dieser Reihenfolge untersucht bis eine leere Zelle oder der Eintrag x gefunden w ird. (Analog empty(m), in sert(x) und looku p(x) bei linearem Sondieren.) FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Günstig: ( ) h(x, 0), h(x, 1), h(x, 2),..., h(x, m 1) erreicht jede Zelle, d.h.: (h(x, 0), h(x, 1), h(x, 2),..., h(x, m 1)) ist eine Permutation von [m]. Wenn ( ) gilt und mindestens eine Zelle in T leer ist, dann endet jede erfolglose Suche in einer leeren Zelle. Bei linearem Sondieren: h(x, k) = (h(x) + k) m o d m. Andere Folgen sind möglich, zum Beispiel... Quadratisches Sondieren h: U [m] gewöhnliche Hashfunktion. h(x, 0) = h(x) h(x, 1) = (h(x) + 1) mod m h(x, 2) = (h(x) 1) mod m h(x, 3) = (h(x) + 4) mod m h(x, 4) = (h(x) 4) mod m h(x, 5) = (h(x) + 9) mod m h(x, 6) = (h(x) 9) mod m. h(x, k) = ( h(x) + 2 k ( 1) k+1) mod m. 2 FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD
3 Übung: Berechne die Folgenglieder inkrementell ohne Multiplikationen.... ja sogar ohne Divisionen (... mod m ). Idee 1: n 2 = (2n 1). Man erreicht die Quadratzahlen, indem man Inkremente 1, 3, 5,... addiert. Man erreicht die negativen Quadratzahlen modulo m, indem man (modulo m) Inkremente m 1, m 3, m 5,... addiert. Idee 2: Wenn 0 a < m,0 b m, dann ist a + b mod m einer der beiden Werte a + b und (a + b) m. Lösung: ( Bei pause wird die Abarbeitung der Prozedur unterbrochen, der Zustand aufbewahrt; beim nächsten Aufruf wird die Verarbeitung an der Unterbrechungsstelle fortgeführt. ) Quadratic Probe Sequence(x) (1) h h(x); output h; pause; (2) incr 1; n incr m 1; (3) f h; g h; (4) for j from 1 to (m 1)/2 do (7) f (f + incr); ff f m; if ff 0 then f ff; (6) output f; pause; (7) g (g + n incr); gg g m; if gg 0 then g gg; (8) output g; pause; (9) incr (incr + 2); n incr (n incr 2); FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Fakt Ist m Primzahl, m = 4j + 3 für ein j N, dann ist {h(x, k) 0 k < m} = [m], d.h. ( ) gilt. (Beweis: Elementare Zahlentheorie) Beispiel: m = 19, h(x) = 0, liefert Sondierungsfolge 0, 1, 18, 4, 15, 9, 10, 16, 3, 6, 13, 17, 2, 11, 8, 7, 12, 5, 14. M itteilung: Quadratisches Sondieren verhält sich der Erfahrung nach sehr gut. (h gut verteilend, Auslastungsfaktor 0,9.) Doppel-Hashing Benutze zwei (unabhängig berechnete) Hashfunktionen und setze, für k = 0, 1, 2,...: h 1 : U [m] h 2 : U [m 1] h(x, k) := (h 1 (x) + k (1 + h 2 (x))) mod m. Übung: Berechne die Folgenglieder inkrementell ohne Multiplikationen und Divisionen (... mod m ). FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD
4 Lösung: ( Bei pause wird die Abarbeitung der Prozedur unterbrochen, Zustand aufbewahrt, bis zum nächsten Aufruf; die Verarbeitung wird an der Unterbrechungsstelle fortgeführt. ) Double Hashing Sequence(x) (1) h h 1 (x); output h; pause; (2) incr 1 + h 2 (x); (3) for j from 1 to m 1 do (4) h h + incr; hh h m; if hh 0 then h hh; (5) output h; pause; Proposition Wenn m Primzahl ist, dann gilt für Doppel-Hashing: ( ) {h(x, k) 0 k < m} = [m]. Beweis: Sei z = 1 + h 2 (x). Dann: 1 z m 1. Wenn h(x, k) = h(x, l), dann ist (h 1 (x) + k z) mod m = (h 1 (x) + l z) mod m, also (l k) z 0 (mod m), d.h. m teilt (l k) z. Da m Primzahl ist und 1 z < m, teilt m die Zahl l k, also ist k = l, weil 0 k, l < m. FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Kann beweisen: Wenn h 1 (x), h 2 (x), x S, rein zufällig sind, verhält sich Doppel-Hashing sehr gut, nämlich im wesentlichen wie Uniformes Sondieren. Uniformes Sondieren / Ideales Hashing Dies ist keine Methode, sondern eine W ahrscheinlichkeitsannahme: (h(x, 0), h(x, 1),..., h(x, m 1)) ist eine rein z ufällige Permutation von [m]. Effekt: x 1,..., x n seien gespeichert; y kommt neu hinzu. Ganz egal was die Hashwerte von x 1,..., x n und was h(y, 0),..., h(y, k 1) sind: h(y, k) nimmt jeden Wert i {0,..., m 1} {h(y, 0),..., h(y, k 1)} mit derselben Wahrscheinlichkeit 1/(m k) an. (Erinnerung: Es gibt m! verschiedene Permutationen von [m].) FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD
5 n: Anzahl der Schlüssel in T[0.. m 1]; α = n m. T n,m := Zahl der Schlüsselvergleiche bei erfolgloser Suche. C n,m := E(T n,m). T n,m := Zahl der Schlüsselvergleiche bei erfolgreicher Suche, gemittelt über x 1,..., x n. C n,m := E(T n,m ). Satz Unter der Annahme Uniformes Hashing gilt: (i) C n,m = m+1 m+1 n = 1 1 m+1 n Dies ist < 1 1 n/ m = 1 1 α. Wenn α fest und m, dann gilt C n,m 1 1 α.. Beweis: Bei der erfolglosen Suche gibt es 2 Fälle: 1. F a ll: T[h(y, 0)] ist leer. Wahrscheinlichkeit: m n m Kosten: F a ll: T[h(y, 0)] ist nicht leer. Wahrscheinlichkeit: n m Kosten: 1 + C m 1,n 1. (Suche in m 1 Plätzen, von denen n 1 besetzt sind.) R ekursionsformel, für 0 n < m: { 1, falls n = 0 C m,n = m n m + n m (1 + C m 1,n 1), falls n 1. FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD C m,0 = 1 ; C m,1 = m 1 m + 1 m + 1 (1 + 1) = m m ; C m,2 = m 2 m + 2 m (1 + m m 1 ) = m 1 = m + 1 m 1 ; C m,3 = m 3 m + 3 m (1 + m m 2 ) = m 2 = m + 1 m 2 ; und so weiter. Ergibt: C m,n = m + 1 m + 1 n. Formaler Beweis d u rch vollstän d ige In d u ktion. Satz Unter der Annahme Uniformes H ashing gilt b ei α = n/m: (i) C n,m = m+1 m+1 n = 1 1 m+1 n Dies ist < 1 1 n/ m = 1 1 α. W enn α fest und m, dann gilt C n,m 1 1 α.. (ii) Für T n,m = m ittlere (üb er S) Anzahl getesteter Tab ellenp lätze b ei erfolgreicher Suche: C n,m = E(T n,m ) < 1 α ln ( 1 1 α ). FG K T u E A, T U Ilmen au A u D FG KTuEA, TU Ilmenau AuD
6 Beweis: Suchaufwand für x i = Einfügeaufwand für x i. Mittelung über C m,0,c m,1,...,c m,n 1: C n,m = 1 n m + 1 m + 1 (i 1) 1 i n = m + 1 ( 1 n m ) m m + 1 (n 1) = m + 1 (H m+1 H m+1 n ) n mit H k = k. L eicht zu sehen (Untersumme!): d t m+1 n t = H m+1 H m+1 n m+1 ( ln(m + 1) ln(m + 1 n) = ln m+1 m+1 n ). Also: C n,m m + 1 n ( ) 1 ln 1 n m+1 < m ( ) 1 n ln 1 n. m Für α = n/m, α fest, n, ist C n,m 1 α ln( 1 1 α ). FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Uniformes Hashing Anzahl Vergleiche α erfolglos erfolgreich Löschungen? Problem: Z.B. Quadratisches Sondieren Suchfolge Dezember mit h(dezember) = 7: 7, 8, 6, 11. T : 0: 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: April (12) August (1) Oktober (1) Mai (3) November (3) Juli (6) Juni (8) Januar (8) Februar (9) September (10) Dezember (7) Maerz (12) Lösche J uli! FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD
7 Löschungen? Problem: Z.B. Quadratisches Sondieren Suchfolge Dezember mit h(dezember) = 7: 7, 8, 6, 11. T : 0: 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: April (12) August (1) Oktober (1) Mai (3) November (3)!!! Juni (8) Januar (8) Februar (9) September (10) Dezember (7) Maerz (12) Lösche Juli! Dezember wird nicht mehr gefunden. FG KTuEA, TU Ilmenau AuD Ausw eg: Zelle hat Statusvariable status (voll, leer, gelösc h t). Löschen: Zelle nicht auf leer, sondern auf gelösc h t setzen. Suchen: Immer bis zur ersten leer en Zelle gehen. Zellen, die gelösc h t sind, dürfen mit einem neuen Schlüssel überschrieben werden. Üb erlauf tritt spätestens ein, wenn die letzte leer e Zelle beschrieben werden würde. Sinnvoller: Überlauf tritt ein, wenn die Anzahl der vollen und gelösc h ten Zellen zusammen eine feste Schranke bound überschreitet. Z.B. m 1 oder α 0 m, α 0 passend zum Sondierungsverfahren. FG KTuEA, TU Ilmenau AuD empty(m): Lege leeres Array T[0.. m 1] an. ( Mögliche Einträge: (x, r, voll) oder (,, leer) oder (?,?, gelöscht). ) Initialisiere alle Zellen T[i] mit (,, leer). Initialisiere load mit 0. (Zählt nicht-leere Zellen.) Initialisiere bound (maximal m 1). looku p(x): Finde erstes j in der Indexfolge h(x, 0), h(x, 1), h(x, 2),... mit T[j].status = leer oder (T[j].status = voll und T[j].key = x); Falls T[j].status = leer: return n ot fou n d ; Sonst: return T[j].data. FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD
8 delete(x): Finde erstes j in der Indexfolge h(x, 0), h(x, 1), h(x, 2),... mit T[j].status = leer oder (T[j].status = voll und T[j].key = x); Falls T[j].status = leer: tue nichts; ( Warnung: not found ) Sonst: T[j].status gelöscht; insert(x, r): Finde erstes j in der Indexfolge h(x, 0), h(x, 1), h(x, 2),... mit T[j].status = leer oder (T[j].status = voll und T[j].key = x); Merke dabei das erste l in dieser Folge, das T[l].status {gelöscht, leer} erfüllt; F all 1: T[j].status = voll: T[j].data r; ( Update ) F all 2: T[l].status = gelöscht: T[l] (x, r, voll); ( überschreibe gelöschtes Feld ) F all 3: T[l].status = leer: ( j = l, neue Zelle ) if load + 1 > bound then Überlaufbehandlung else load load + 1; T[j] (x, r, voll); FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Überlaufbehandlung, V erdopplung: Sinnvoll: Überlauf tritt ein, wenn der Anteil der vollen und gelöschten Zellen zusammen eine Schranke α 0 m überschreitet. (α 0 passend zum Sondierungsverfahren festlegen.) Zähle die vollen Zellen: Anzahl v. Falls v + 1 > α 1 m für (z.b.) α 1 = 0.8α 0, verdopple Tabellengröß e. Trage Schlüssel neu in die größ ere Tabelle ein. Sonst: Trage alle Schlüssel neu in die alte Tabelle T ein. Trick für neues Eintragen: (Ohne zusätzlichen Platz. N ur für Spezialisten!) 1) Für i = 0, 1,..., m 1 tue folgendes: Wenn T[i].status = voll, setze T[i].status a lt. Wenn T[i].status = gelöscht, setze T[i].status leer. FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD
9 2) Für i = 0, 1,..., m 1 tue folgendes: Wenn T[i].status = alt, dann setze (x, r) (T[i].key, T[i].data), setze T[i].status = leer, und füge (x, r) ein mit folgender Besonderheit: Eine mit alt markierte Zelle wird wie leer behandelt, der dort enthaltene Eintrag (x, r ) wird durch (x, r, voll) verdrängt; (x, r )wird sofort anschließend mit demselben V erfahren eingefügt. Dies setzt sich fort, bis eine Einfügung in eine mit leer markierte Zelle erfolgt. Dann fährt man mit der Abarbeitung der i-schleife fort. Sortieren G egeben: Universum U mit totaler Ordnung <. Sortierproblem, abstrakt: Siehe Vorlesung 1. G egeben: Universum U mit totaler Ordnung <. Elemente: (Sortier-)Schlüssel. Gegeben: Folge (a 1,..., a n ) in U. Aufgabe: Arrangiere so um zu (b 1,..., b n ), dass b 1 b n. O der: Berechne eine Permutation π von {1,..., n}, die (a 1,..., a n ) sortiert, d.h. mit b i = a π(i), 1 i n, gilt b 1 b n. FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Sortiermethoden, schon gesehen: Straight Insertion Sort, B ubble Sort, Shell Sort (GdP1) Viele Varianten: Sortieren Einträge enthalten neben Schlüssel weitere Daten (data); Eintrag/Item: mit Sortierschlüssel (key) versehenes Objekt. Einträge sind nur Zeiger/Referenzen auf Datensätze (mit Schlüsseln) Bei Vorkommen gleicher Sortierschlüssel: Sortierverfahren heißt stabil, wenn Objekte mit identischen Schlüsseln in der Ausgabe in derselben Reihenfolge stehen wie in der Eingabe. FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD
10 Sortieren a 1 a 2 a 3 a n US SO RA OR RT HM LG IE IT Eingabe: Array-Sortieren Array A[1.. n] mit Einträgen a 1,..., a n U. π(2) π(5) π(8) Item: Schlüssel x "key" Inform: dat "data" π(1) Aufgabe: Permutiere die Einträge von A[1.. n] so, dass schließlich A[1] A[2] A[3]... A[n]. Alternative: Berechne eine Permutation π von {1,..., n}, die A[1.. n] sortiert. SO RT IE RA LG OR IT HM US "Stabilität" FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Array-Sortieren Bemerkung: Permutationssortieren und gewöhnliches Sortieren sind praktisch dasselbe Problem. Wenn man das eine gelöst hat, kann man das andere in zusätzlicher Zeit O(n) lösen. 1) Gegeben sei eine Permutation π von {1,..., n}, die A[1.. n] sortiert. Transportiere A[i] nach B[π(i)], i = 1,..., n. Dann kopiere B[i] nach A[i], i = 1,..., n. Array-Sortieren Bemerkung: Permutationssortieren und gewöhnliches Sortieren sind praktisch dasselbe Problem. Wenn man das eine lösen kann, kann man das andere in zusätzlicher Zeit O(n) lösen. 2) Gegeben sei ein gewöhnliches Sortierverfahren S. Eingabe: A[1.. n]. Setze B[i] (B[i],i), für 1 i n. Zweite Komponente: index. Sortiere B[1.. n] mittels S, Sortierschlüssel: erste Komponente. FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD
11 Beispiel: Array-Sortieren A: B: index: B, sortiert: index: π: π(b[i].index) i, für 1 i n. Verifiziere Korrektheit! Listen-Sortieren Eingabe: Liste L mit Einträgen a 1,..., a n U. Aufgabe: Permutiere die Listenelemente in L so, dass schließlich die Einträge in L aufsteigend sortiert sind. α: β: γ: δ: γ: β: δ: α: Nur Zeiger ( ) ändern sich. Vorteil: Kein Datentransport. Kosten: Platz für Zeiger.... FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Maß zahlen für Sortieralgorithmen: In Abhängigkeit von n fragen wir nach: 1. Laufzeit (in O-Notation); wenn dieser nur O(1), also von n unabhängig, ist: Algorithmus arbeitet in situ. 2. Anzahl der Vergleiche A[i] < A[j] bzw. A[i] A[j] ( wesentliche V ergleiche ); 3. Anzahl der Datenverschiebungen oder Kopiervorgänge (wichtig bei sehr umfangreichen Objekten); 4. der neb en A (und pi) benötigte Speicherplatz; FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD
12 Mergesort - Sortieren durch Mischen (engl. merge = vermengen, reißverschlussartig zusammenfügen) Algorithmenparadigma oder -schema: divide-and-conquer (D -A-C ) ( teile und herrsche ) Vorgehen eines D-A-C-Algorithmus A für Berechnungsproblem P auf Instanz x I : 0. Trivialitätstest: Wenn P für x einfach direkt zu lösen ist, tue dies. Sonst: 1. Teile: Zerteile x in (zwei oder mehr) Stücke x 1, x 2,..., x b. Wesentlich für Korrektheit/Terminierung: Jedes der Stücke ist kleiner als x. 2. R ekursion: Löse P für x 1, x 2,..., x b, durch rekursive Verwendung von A. 3. Kombiniere: Baue aus den Teillösungen für die Stücke x 1, x 2,..., x b eine Lösung für x auf. FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Mergesort ist konkreter D-A-C-Algorithmus zum Sortieren eines Arrays A[1.. n]: 0. Trivialitätstest: Wenn n 1, ist nichts zu tun. 1. Teile: Zerlege A in zwei gleichgroße Teilarrays A 1 und A Rekursion: Sortiere A 1 und A 2 durch rekursive Aufrufe von Mergesort. 3. Kombiniere: Konstruiere aus den sortierten Teilarrays aus 2. ein sortiertes Array, das alle Einträge enthält. Gegeben sei eine Prozedur merge(a, m, b), 1 a m < b n d ie folgen d es tu t: V ora u ssetzu n g: A[a..m] u n d A[m + 1..b] sin d sortiert. Resu lta t: A[a..b] ist sortiert. A n sa tz: Qu a sip ara lleler D u rch la u f d u rch d ie T eilarrays. D eta ils: Siehe V o rlesu ng G dp 1. A u fw a n d : b a S ch lü sselvergleich e, Zeit Θ (b a + 1). Technisch günstiger: Mergesort sortiert ein Teilarray A[a.. b]. FG KTuEA, TU Ilmenau AuD F G K T u E A, T U Ilm en a u A u D
13 Algorithm us m ergesort(a, b) (1) if b a > 1 then (2) m (b a) div 2; (3) m ergesort(a, m); (4) m ergesort(m + 1, b); (5) m erge(a, m, b). Terminierung, Korrektheit: Induktion üb er k = b a + 1: Klar falls a = b. Falls a < b: Teilarrays hab en L ängen (b a + 1)/2 und (b a + 1)/2 b eides < (b a + 1). N ach I.V. liefern die rekursiven Aufrufe in (3) und (4) das korrekte Resultat. N ach Annahme üb er m erge sortiert dann Zeile (5) korrekt. Zeitanalyse: 1) Die Kosten (Rechenzeit) sind proportional zur Anzahl der durchgeführten Vergleiche. 2) W ir fi nden eine obere Schranke C MS (k) für die Anzahl der Vergleiche, die mergesort(a, b) ausführt, auf k = b a + 1 Schlüsseln. R ek ursionsungleichung: C MS (1) = 0; C MS (k) k 1 +C MS ( k/2 ) + C MS ( k/2 ), }{{} m erge für k 2. Resultierende Schranken: FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD k C MS (k) Diff.: log k Kann zeigen: C MS (k) 1 i k log i. Exakte B erechnung der Summe ist möglich. Liefert: C MS (k) log k k 2 lo g k + 1. E ntw icklungsmethode : Lösung für den Fall k = 2l. C MS (k) = C MS (2 l ) 2 l + 2 C MS (2 l 1 ) 2 l l C MS (2 l 2 ) 3 2 l C MS (2 l 3 )... j 2 l + 2 j C MS (2 l j )... l 2 l + 2 l C MS (2 l l ) = k log k. FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD
14 Alternative: Direkte Analyse, Induktionsbeweis. T MS (k) seien die Kosten eines Aufrufs mergesort(a, b), auf k = b a + 1 Schlüsseln, im schlechtesten Fall. Es gibt Konstante c > 0 und d > 0 mit T MS (1) c; T MS (k) d k + T MS ( k/2 ) + T MS ( k/2 ), für k 2. Trick: Lösung mit P arametern A, B raten; der Induktionsbeweis liefert die richtigen P arameter. Behauptung: T MS (k) A k + Bk log k, für alle k 1. Beweis: Induktion über k. Interessant: Die genauen Werte A und B werden erst durch die Rechnung ermittelt. k = 1: T MS (1) c A k, falls A c. k 2: FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD T MS (k) d k + T MS ( k/2 ) + T MS ( k/2 ) I.V. d k + A k/2 + B k/2 log k/2 + A k/2 + B k/2 log k/2 d k + Ak + Bk log k/2 d k + Ak + Bk(log k ) Analog zeigt man: T MS (k) A k+b k log k, für gewisse Konstanten A, B > 0. denn: k 3 log(k + 1) log k Also: T MS (k) (d + A 0.4B)k + Bk log k. Wenn wir A = c und B = d/0.4 wählen, funktioniert der Induktionsbeweis. FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD
15 Satz Die Anwendung des Mergesort-Algorithmus, d. h. der Aufruf mergesort(1, n), auf einem Array von n Objekten benötigt höchstens n log n Vergleiche und hat Kosten (Laufzeit) O(n log n). M ergesort ist stabil (wenn merge entsprechend eingestellt wird). M ergesort benötigt zusätzlichen Speicherplatz, ist also nicht in situ, (n/2 Arrayeinträge, wenn man weiter keine Vorkehrungen trifft). Variante 1: (Standardmäß ig angewandt) Ziel: Überproportional hohen Zeitaufwand für rekursive Aufrufe bei kleinen Teilarrays vermeiden. Strategie: In mergesort kleine Teilarrays (b a, 1 konstant) durch (z. B.) Straight-Insertion- Sort sortieren. Das optimale auf einer konkreten Maschine kann nur ein Experiment liefern. FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Variante 2: Sortieren von (linearen) Listen. Wenn die Liste L nur ein Element enthält, ist nichts zu tun. Andernfalls wird die Liste in 2 Teillisten L 1, L 2 der halben Länge zerteilt. (Durchlaufe L, hänge die Einträge abwechselnd an L 1 und L 2 an. Kosten: Θ(Länge von L).) Auf L 1 und L 2 wird der Algorithmus rekursiv angewendet. Dann werden die beiden nun sortierten Listen gemischt. (Vgl. Übung zu dünn besetzten Matrizen.) Laufzeitanalyse: Identisch zum Obigen. Variante 3: Iteratives Mergesort, b ottom-up Idee: Arbeite in Runden i = 1, 2, 3,..., log n. Vor Runde i: Teilarrays A[(l 1)2 i l2 i ] sind aufsteigend sortiert. (Eventuell ist das am weitesten rechts stehende Teilarray unvollständig.) In Runde i führe merge((l 2)2 i + 1, (l 1)2 i, l2 i ) aus, für l = 2, 4,..., 2 n/2 i+1. (Mögliche Sonderrolle für unvollständige Teilarrays ganz rechts.) FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD
16 Beisp iel: Runde Trick, spart Kopierarbeit: Benutze 2 Arrays, die in jeder Runde ihre Rolle wechseln. 1 A: Zeitverhalten von iterativem Mergesort: wie bei rekursivem Mergesort. 2 C: Bei dieser Variante bietet sich noch eine alternative, einfache Zeitanalyse an: 3 A: J ede Runde kostet offenbar Zeit Θ(n), und es gibt log n Runden: also ist die Gesamtzeit 4 C: Θ(n log n ) = Θ(n log n). A: FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Variante 4: Mehrweg-Mergesort Besonders in Kombination mit dem iterativen Verfahren interessant ist die Möglichkeit, in einer merge-runde nicht nur ein Array, sondern 3, 4, oder mehr Teilarrays zusammenzumischen. Beispiel: A: Bei Cache-Architekturen oder Sortieren von Daten auf H intergrundspeichern (Platten) kann diese Variante Laufzeitvorteile bringen, da die Anzahl der Cache- bzw. Seitenfehler (cache m isses bzw. page faults) verringert wird. Früher: Sortieren von Daten auf Bändern. Algorithmus der Wahl: Mergesort. 4 way merge: wähle kleinstes Element aus 4 (Rest )Arrays. C: Die nächsten gewählten Elemente: "9" aus 2. Teilarray, 10, 11, etc. "9" aus 1.Teilarray, FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Prof. Martin Lercher Institut für Informatik Heinrich-Heine-Universität Düsseldorf Teil Hash-Verfahren Version vom: 18. November 2016 1 / 28 Vorlesung 9 18. November 2016
MehrNAME, VORNAME: Studiennummer: Matrikel:
TU Ilmenau, Fakultat IA Institut für Theoretische Informatik FG Komplexitätstheorie und Effiziente Algorithmen Prof. Dr. (USA) M. Dietzfelbinger Klausur Algorithmen und Datenstrukturen SS08, Ing.-Inf.
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
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
MehrKap. 3: Sortieren. Überblick. Unser Sortierproblem. Motivation. Laufzeitmessung. Warum soll ich hier bleiben? Sortierverfahren sind WICHTIG!!!
Kap. 3: Sortieren Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund Überblick Einführung in das Sortierproblem Insertion-Sort Selection-Sort Merge-Sort 4. VO
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
MehrAufgabe 8. 1 Arbeitsweise illustrieren. 2 Korrektheitsbeweis führen. 3 Laufzeitanalyse durchführen.
Aufgabe 8 Betrachten Sie den folgenden Algorithmus namens Bubble-Sort. Bubble-Sort(A[1..n]): 1 for i 1 to length(a) 1 2 do for j length(a) downto i + 1 3 do if A[j 1] > A[j] 4 then A[j 1] A[j] 1 Arbeitsweise
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 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
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
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
MehrHashing Hashfunktionen Kollisionen Ausblick. Hashverfahren. Dank an: Beate Bollig, TU Dortmund! 1/42. Hashverfahren
Dank an: Beate Bollig, TU Dortmund! 1/42 Hashing Überblick Aufgabe Realisierung Aufgabe Realisierung Anforderungen Wahl einer Hashfunktion mit Verkettung der Überläufer Offene Universelles Hashing 2/42
Mehr5. Übungsblatt zu Algorithmen I im SoSe 2016
Karlsruher Institut für Technologie Institut für Theoretische Informatik Prof. Dr. Dennis Hofheinz Lukas Barth, Lisa Kohl 5. Übungsblatt zu Algorithmen I im SoSe 2016 https://crypto.iti.kit.edu/index.php?id=algo-sose16
MehrAlgorithmen und Datenstrukturen SS09. Foliensatz 12. Michael Brinkmeier. Technische Universität Ilmenau Institut für Theoretische Informatik
Foliensatz 12 Michael Brinkmeier Technische Universität Ilmenau Institut für Theoretische Informatik Sommersemester 2009 TU Ilmenau Seite 1 / 98 Hashing TU Ilmenau Seite 2 / 98 Wörterbücher Sei U ein Universum
Mehr1 Raumwechsel: Gr. 15 (Do 10-12, F-235) ab sofort in G Studie zum Arbeitsverhalten von Studierenden unter Leitung
Organisatorisches Algorithmen und Datenstrukturen Kapitel 3: Divide & Conquer Frank Heitmann heitmann@informatik.uni-hamburg.de 1 Raumwechsel: Gr. 15 (Do 10-12, F-235) ab sofort in G-021. 2 Studie zum
MehrAlgorithmen und Datenstrukturen
1 Algorithmen und Datenstrukturen Wintersemester 2014/15 3. Vorlesung Laufzeitanalyse Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I 2 Recap: Diskutieren Sie mit Ihrer NachbarIn! 1. 2. 3. Was sind
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Wintersemester 2013/14 1. Vorlesung Kapitel 1: Sortieren Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Das Problem Eingabe Gegeben: eine Folge A = a 1, a 2,..., a
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
MehrÜbersicht. Datenstrukturen und Algorithmen. Übersicht. Divide-and-Conquer. Vorlesung 9: Quicksort (K7)
Datenstrukturen und Algorithmen Vorlesung 9: (K7) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group http://www-i2.rwth-aachen.de/i2/dsal0/ Algorithmus 8. Mai 200 Joost-Pieter
MehrHeapsort / 1 A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8]
Heapsort / 1 Heap: Ein Array heißt Heap, falls A [i] A [2i] und A[i] A [2i + 1] (für 2i n bzw. 2i + 1 n) gilt. Beispiel: A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] Heapsort / 2 Darstellung eines Heaps als
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Dr. Michael Brinkmeier Technische Universität Ilmenau Fakultät Informatik und Automatisierung Fachgebiet Automaten und Formale Sprachen 4.7.2007 Dr. Michael Brinkmeier (TU
MehrDatenstrukturen und Algorithmen
Joost-Pieter Katoen Datenstrukturen und Algorithmen 1/32 Datenstrukturen und Algorithmen Vorlesung 7: Sortieren (K2) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group
MehrKapitel 6 Elementare Sortieralgorithmen
Kapitel 6 Elementare Sortieralgorithmen Ziel: Kennenlernen elementarer Sortierverfahren und deren Effizienz Zur Erinnerung: Das Sortier-Problem Gegeben: Folge A von n Elementen a 1, a 2,..., a n ; Eine
Mehr2.2 Allgemeine (vergleichsbasierte) Sortierverfahren
. Allgemeine (vergleichsbasierte) Sortierverfahren Vergleichsbaum: Der Aufbau des Verbleichsbaum ist für jeden Algorithmus und jede Eingabelänge n gleich. Jede Permutation der Eingabe, muss zu einem anderen
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Wintersemester 2012/13 1. Vorlesung Kapitel 1: Sortieren Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Das Problem Eingabe Gegeben: eine Folge A = a 1, a 2,..., a
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
MehrKapitel 4. Streuen. (h K injektiv) k 1 k 2 K = h(k 1 ) h(k 2 )
Kapitel 4 Streuen Wir behandeln nun Ipleentationen ungeordneter Wörterbücher, in denen die Schlüssel ohne Beachtung ihrer Sortierreihenfolge gespeichert werden dürfen, verlangen aber, dass es sich bei
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
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
MehrBucketsort. Korrektheit. Beispiel. Eingabe: Array A mit n Elementen im Bereich [0,1) Annahme: die Elemente sind in [0,1) gleichverteilt.
Bucketsort Beispiel Eingabe: Array A mit n Elementen im Bereich [0,1) Annahme: die Elemente sind in [0,1) gleichverteilt 1 2 A.78.17 0 1 B.12.17 Sonst: Skalieren ( Aufwand O(n) ) 3.39 2.21.23.26 Idee:
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
Mehr2 Sortieren durch Vergleichen Eingabefolge a 1, a 2,..., a n 2, 1, 3 Sortieralg. Für festes n ist ein vergleichsbasierter Sortieralg. charakterisiert
1 Algorithmen und Datenstrukturen Wintersemester 2014/15 9. Vorlesung Sortieren in Linearzeit Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I 2 Sortieren durch Vergleichen Eingabefolge a 1, a 2,...,
MehrCounting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit
Counting-Sort Counting - Sort ( A,B,k ). for i to k. do C[ i]. for j to length[ A]. do C[ A[ j ] C[ A[ j ] +. > C[ i] enthält Anzahl der Elemente in 6. for i to k. do C[ i] C[ i] + C[ i ]. > C[ i] enthält
MehrAlgorithmen und Datenstrukturen 1
Algorithmen und Datenstrukturen 1 4. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@bioinf.uni-leipzig.de 4. Sortierverfahren Elementare Sortierverfahren - Sortieren durch
MehrAufgabe (Schreibtischtest, Algorithmenanalyse)
Aufgabe (Schreibtischtest, Algorithmenanalyse) Führen Sie einen Schreibtischtest für den Algorithmus Positionsort für das folgende Eingabe-Array durch. Geben Sie nach jedem Durchlauf der for-schleife mit
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
MehrInterne Sortierverfahren
Angewandte Datentechnik Interne Sortierverfahren Interne Sortierverfahren Ausarbeitung einer Maturafrage aus dem Fach A n g e w a n d t e D a t e n t e c h n i k Andreas Hechenblaickner 5CDH HTBLA Kaindorf/Sulm
MehrUntersuchen Sie, inwiefern sich die folgenden Funktionen für die Verwendung als Hashfunktion eignen. Begründen Sie Ihre Antwort.
Prof. aa Dr. Ir. Joost-Pieter Katoen Christian Dehnert, Friedrich Gretz, Benjamin Kaminski, Thomas Ströder Tutoraufgabe 1 (Güte von Hashfunktionen): Untersuchen Sie, inwiefern sich die folgenden Funktionen
MehrProgrammieren I. Kapitel 7. Sortieren und Suchen
Programmieren I Kapitel 7. Sortieren und Suchen Kapitel 7: Sortieren und Suchen Ziel: Varianten der häufigsten Anwendung kennenlernen Ordnung Suchen lineares Suchen Binärsuche oder Bisektionssuche Sortieren
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Wintersemester 2012/13 25. Vorlesung Dynamisches Programmieren Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Klausurvorbereitung Tipp: Schreiben Sie sich alle Fragen
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
MehrAlgorithmen und Datenstrukturen 1
Algorithmen und Datenstrukturen 1 6. Vorlesung Martin Middendorf / Universität Leipzig Institut für Informatik middendorf@informatik.uni-leipzig.de studla@bioinf.uni-leipzig.de Merge-Sort Anwendbar für
Mehrdamit hätten wir nach Ende der Schleife: "a[0 n-1] enthält nur Elemente aus a[0 n-1], aber in sortierter Reihenfolge".
Korrektheit Invariante: a[0 k-1] enthält nur Elemente aus a[0 k-1], aber in sortierter Reihenfolge Terminierung: Die Schleife endet mit k=n def insertionsort(a): for k in range( 1, len(a) ): while i >
MehrDivide & Conquer. Problem in Teilprobleme aufteilen Teilprobleme rekursiv lösen Lösung aus Teillösungen zusammensetzen
Teile & Herrsche: Divide & Conquer Problem in Teilprobleme aufteilen Teilprobleme rekursiv lösen Lösung aus Teillösungen zusammensetzen Probleme: Wie setzt man zusammen? [erfordert algorithmisches Geschick
MehrAlgorithmen und Datenstrukturen 1 VL Übungstest WS Januar 2011
Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen 186.172 Algorithmen und Datenstrukturen 1 VL 4.0 2. Übungstest WS 2010 14. Januar
MehrGrundlagen der Informatik
Jörn Fischer j.fischer@hs-mannheim.de Willkommen zur Vorlesung Grundlagen der Informatik ADS-Teil Page 2 Überblick Inhalt 1 Eigenschaften von Algorithmen Algorithmenbegriff O-Notation Entwurfstechniken
MehrDatenstrukturen und Algorithmen
Datenstrukturen und Algorithmen VO 708.031 27.10.2011 stefan.klampfl@tugraz.at 1 Wiederholung Wir vergleichen Algorithmen anhand des ordnungsmäßigen Wachstums von T(n), S(n), Asymptotische Schranken: O-Notation:
Mehr2 Sortieren. Beispiel: Es seien n = 8 und a = i : a i : ϕ(i) : a ϕ(i) :
2 Sortieren Das Sortieren einer Datenfolge ist eines der am leichtesten zu verstehenden und am häufigsten auftretenden algorithmischen Probleme. In seiner einfachsten Form besteht das Problem darin, eine
Mehr8. A & D - Heapsort. Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können.
8. A & D - Heapsort Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können. Genauer werden wir immer wieder benötigte Operationen durch Datenstrukturen unterstützen.
MehrBeispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5
Robert Elsässer Paderborn, den 15. Mai 2008 u.v.a. Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5 AUFGABE 1 (6 Punkte): Nehmen wir an, Anfang bezeichne in einer normalen
MehrAlgorithmen und Datenstrukturen SoSe 2008 in Trier. Henning Fernau Universität Trier
Algorithmen und Datenstrukturen SoSe 2008 in Trier Henning Fernau Universität Trier fernau@uni-trier.de 1 Algorithmen und Datenstrukturen Gesamtübersicht Organisatorisches / Einführung Grundlagen: RAM,
MehrKomplexität von Algorithmen:
Komplexität von Algorithmen: Ansatz: Beschreiben/erfassen der Komplexität über eine Funktion, zur Abschätzung des Rechenaufwandes abhängig von der Größe der Eingabe n Uns interessiert: (1) Wie sieht eine
MehrStud.-Nummer: Datenstrukturen & Algorithmen Seite 1
Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1 Aufgabe 1. / 16 P Instruktionen: 1) In dieser Aufgabe sollen Sie nur die Ergebnisse angeben. Diese können Sie direkt bei den Aufgaben notieren. 2) Sofern
MehrTeil VII. Hashverfahren
Teil VII Hashverfahren Überblick 1 Hashverfahren: Prinzip 2 Hashfunktionen 3 Kollisionsstrategien 4 Aufwand 5 Hashen in Java Prof. G. Stumme Algorithmen & Datenstrukturen Sommersemester 2009 7 1 Hashverfahren:
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Prof. Martin Lercher Institut für Informatik Heinrich-Heine-Universität Düsseldorf Algorithmen und Datenstrukturen Teil 3 Suchen in Listen Version vom: 15. November 2016
MehrDatenstrukturen & Algorithmen Lösungen zu Blatt 5 FS 14
Eidgenössische Technische Hochschule Zürich Ecole polytechnique fédérale de Zurich Politecnico federale di Zurigo Federal Institute of Technology at Zurich Institut für Theoretische Informatik 26. März
MehrSchleifeninvarianten. Dezimal zu Binär
Schleifeninvarianten Mit vollstandiger Induktion lasst sich auch die Korrektheit von Algorithmen nachweisen. Will man die Werte verfolgen, die die Variablen beim Ablauf eines Algorithmus annehmen, dann
MehrAlgorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer) Folien: Einfache Sortierverfahren Autor: Stefan Edelkamp
Algorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer) Folien: Einfache Sortierverfahren Autor: Stefan Edelkamp Institut für Informatik Georges-Köhler-Allee Albert-Ludwigs-Universität Freiburg 1
MehrAlgorithmen und Datenstrukturen II: Hashverfahren
Algorithmen und Datenstrukturen II: Hashverfahren Prof. Dr. Oliver Braun Letzte Änderung: 10.05.2017 16:21 Algorithmen und Datenstrukturen II: Hashverfahren 1/28 Hashverfahren bisher jeder Datensatz durch
MehrAsymptotische Laufzeitanalyse: Beispiel
Asyptotische Laufzeitanalyse: n = length( A ) A[j] = x GZ Algorithen u. Datenstrukturen 1 31.10.2013 Asyptotische Laufzeitanalyse: n = length( A ) A[j] = x GZ Algorithen u. Datenstrukturen 2 31.10.2013
MehrAlgorithmen und Datenstrukturen II: Hashverfahren
Algorithmen und Datenstrukturen II: Hashverfahren Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 10.05.2017 16:21 Inhaltsverzeichnis Hashverfahren....................................
MehrÜbung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 2016 Patrick Schäfer, Humboldt-Universität zu Berlin Organisation Vorlesung: Montag 11 13 Uhr Marius Kloft RUD 26, 0 115 Mittwoch 11 13 Uhr Marius Kloft
MehrJAVA - Suchen - Sortieren
Übungen Informatik I JAVA - Suchen - Sortieren http://www.fbi-lkt.fh-karlsruhe.de/lab/info01/tutorial Übungen Informatik 1 Folie 1 Inhalt Suchen/Sortieren binary search mergesort bubblesort Übungen Informatik
Mehr14. Hashing. Motivation. Naive Ideen. Bessere Idee? k(s) = s i b i
Motivation 14. Hashing Hash Tabellen, Geburtstagsparadoxon, Hashfunktionen, Perfektes und universelles Hashing, Kollisionsauflösung durch Verketten, offenes Hashing, Sondieren [Ottan/Widayer, Kap. 4.1-4.3.2,
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:
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Wintersemester 2012/13 26. Vorlesung Greedy- und Approximationsalgorithmen Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Operations Research Optimierung für Wirtschaftsabläufe:
MehrAlgorithmen und Datenstrukturen VO 3.0 Vorlesungsprüfung 19. Oktober 2007
Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen 1 186.089 VO 3.0 Vorlesungsprüfung 19. Oktober
MehrQuicksort ist ein Divide-and-Conquer-Verfahren.
. Quicksort Wie bei vielen anderen Sortierverfahren (Bubblesort, Mergesort, usw.) ist auch bei Quicksort die Aufgabe, die Elemente eines Array a[..n] zu sortieren. Quicksort ist ein Divide-and-Conquer-Verfahren.
MehrEntscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen?
Entscheidungsbäume Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen? Definition Entscheidungsbaum Sei T ein Binärbaum und A = {a 1,..., a n } eine zu sortierenden Menge. T ist ein Entscheidungsbaum
Mehr8.1.3 Operation Build-Max-Heap Operation zur Konstruktion eines Heaps Eingabe: Feld A[1..n], n = länge(a) BUILD-MAX-HEAP (A)
Stand der Vorlesung: Datenstruktur Heap: fast vollständiger Binärbaum MaxHeap: sortierter Heap, größtes Element an Wurzel Sortierverfahren: HeapSort: Sortieren eines Feldes A[1.. n] Idee: in place: Feld
MehrTechnische Universität München
Stand der Vorlesung: Datenstruktur Heap: fast vollständiger Binärbaum MaxHeap: sortierter Heap, größtes Element an Wurzel Sortierverfahren: HeapSort: Sortieren eines Feldes A[1.. n] Idee: in place: Feld
MehrGreedy Algorithms - Gierige Algorithmen
Greedy Algorithms - Gierige Algorithmen Marius Burfey 23. Juni 2009 Inhaltsverzeichnis 1 Greedy Algorithms 1 2 Interval Scheduling - Ablaufplanung 2 2.1 Problembeschreibung....................... 2 2.2
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
Mehr4. Hashverfahren. geg.: Wertebereich D, Schlüsselmenge S = {s 1,..., s n } D. Menge A von Speicheradressen; oft: A = {0,..., m 1}
105 4. Hashverfahren geg.: Wertebereich D, Schlüsselmenge S = {s 1,..., s n } D Menge A von Speicheradressen; oft: A = {0,..., m 1} jedes Speicherverfahren realisiert h : D A mögliche Implementierungen
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen 11. Übung Verkettete Listen, Sortieren Insertionsort, Mergesort, Radixsort, Quicksort Clemens Lang Übungen zu AuD 19. Januar 2010 Clemens Lang (Übungen zu AuD) Algorithmen
MehrKollision Hashfunktion Verkettung Offenes Hashing Perfektes Hashing Universelles Hashing Dynamisches Hashing. 4. Hashverfahren
4. Hashverfahren geg.: Wertebereich D, Schlüsselmenge S = {s 1,..., s n } D Menge A von Speicheradressen; oft: A = {0,..., m 1} jedes Speicherverfahren realisiert h : D A mögliche Implementierungen von
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
Mehr16. All Pairs Shortest Path (ASPS)
. All Pairs Shortest Path (ASPS) All Pairs Shortest Path (APSP): Eingabe: Gewichteter Graph G=(V,E) Ausgabe: Für jedes Paar von Knoten u,v V die Distanz von u nach v sowie einen kürzesten Weg a b c d e
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 30. Mai 011 Grundlagen: Algorithmen und Datenstrukturen
Mehrf 1 (n) = log(n) + n 2 n 5 f 2 (n) = n 3 + n 2 f 3 (n) = log(n 2 ) f 4 (n) = n n f 5 (n) = (log(n)) 2
Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Lösung - Präsenzübung.05.0 F. Corzilius, S. Schupp, T. Ströder Aufgabe (Asymptotische Komplexität): (6 + 0 + 6 = Punkte) a) Geben Sie eine formale
MehrTutoraufgabe 1 (Sortieralgorithmus):
Prof. aa Dr. Ir. Joost-Pieter Katoen Datenstrukturen und Algorithmen SS Tutoriumslösung - Übung 4 (Abgabe 2..2) Christian Dehnert, Friedrich Gretz, Benjamin Kaminski, Thomas Ströder Tutoraufgabe (Sortieralgorithmus):
MehrÜbung: Algorithmen und Datenstrukturen SS 2007
Übung: Algorithmen und Datenstrukturen SS 2007 Prof. Lengauer Sven Apel, Michael Claÿen, Christoph Zengler, Christof König Blatt 5 Votierung in der Woche vom 04.06.0708.06.07 Aufgabe 12 Manuelle Sortierung
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
MehrUntere Schranke für allgemeine Sortierverfahren
Untere Schranke für allgemeine Sortierverfahren Prinzipielle Frage: wie schnell kann ein Algorithmus (im worst case) überhaupt sein? Satz: Zum einer Folge von n Keys mit einem allgemeinen Sortierverfahren
MehrAlgorithmen und Datenstrukturen Heapsort
Algorithmen und Datenstrukturen 2 5 Heapsort In diesem Kapitel wird Heapsort, ein weiterer Sortieralgorithmus, vorgestellt. Dieser besitzt wie MERGE-SORT eine Laufzeit von O(n log n), sortiert jedoch das
Mehrlim log 2n n = > 0 Da es einen Limes gibt, gibt es auch einen Limes inferior, der gleich diesem Limes ist.
Prof. aa Dr. Ir. Joost-Pieter Katoen Christian Dehnert, Jonathan Heinen, Thomas Ströder, Sabrina von Styp Aufgabe 1 (O-Notation): Beweisen oder widerlegen Sie die folgenden Aussagen: (3 + 3 + 4 = 10 Punkte)
MehrAlgorithmen und Datenstrukturen
1 Algorithmen und Datenstrukturen Wintersemester 2015/16 12. Vorlesung Hashing Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I 2 Übungen Begründen Sie grundsätzlich alle Behauptungen außer die Aufgabe
MehrAlgorithmen & Datenstrukturen Lösungen zu Blatt 9 HS 16
Eidgenössische Technische Hochschule Zürich Ecole polytechnique fédérale de Zurich Politecnico federale di Zurigo Federal Institute of Technology at Zurich Departement Informatik 24. November 2016 Markus
Mehr3. Inkrementelle Algorithmen
3. Ikremetelle Algorithme Defiitio 3.1: Bei eiem ikremetelle Algorithmus wird sukzessive die Teillösug für die erste i Objekte aus der bereits bekate Teillösug für die erste i-1 Objekte berechet, i=1,,.
Mehr5.4 Das Rucksackproblem
Problemstellung: 5.4 Das Rucksackproblem Eingabe: Ganzzahlige Volumina a 1,..., a n > 0, Nutzenwerte c 1,..., c n > 0, ganzzahlige Volumenschranke b. Aufgabe: Packe die Objekte in einen Rucksack von Volumen
MehrGrundlagen der Programmierung 2. Sortierverfahren
Grundlagen der Programmierung 2 Sortierverfahren Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 30. Mai 2006 Sortieren Ziel: Bringe Folge von Objekten in eine Reihenfolge
MehrDefinition Ein Heap (priority queue) ist eine abstrakte Datenstruktur mit folgenden Kennzeichen:
HeapSort Allgemeines Sortieralgorithmen gehören zu den am häufigsten angewendeten Algorithmen in der Datenverarbeitung. Man hatte daher bereits früh ein großes Interesse an der Entwicklung möglichst effizienter
MehrGrundlagen der Programmierung
Grundlagen der Programmierung Algorithmen und Datenstrukturen Die Inhalte der Vorlesung wurden primär auf Basis der angegebenen Literatur erstellt. Darüber hinaus sind viele Teile direkt aus der Vorlesung
Mehr1. Musterlösung. Problem 1: Average-case-Laufzeit vs. Worst-case-Laufzeit
Universität Karlsruhe Algorithmentechnik Fakultät für Informatik WS 06/07 ITI Wagner Musterlösung Problem : Average-case-Laufzeit vs Worst-case-Laufzeit pt (a) Folgender Algorithmus löst das Problem der
Mehr2.7 Der Shannon-Fano-Elias Code
2.7 Der Shannon-Fano-Elias Code Die Huffman-Codierung ist ein asymptotisch optimales Verfahren. Wir haben auch gesehen, dass sich die Huffman-Codierung gut berechnen und dann auch gut decodieren lassen.
MehrAlle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)).
8. Untere Schranken für Sortieren Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)). Werden nun gemeinsame Eigenschaften dieser Algorithmen untersuchen. Fassen gemeinsame
MehrDer folgende Vortrag basiert auf dem Text A Polynomial Time Algorithm for the N-Queens Problem von Rok Sosic und Jun Gu aus dem Jahre 1990.
Ein polynomieller Algorithmus für das N-Damen Problem 1 Einführung Der folgende Vortrag basiert auf dem Text A Polynomial Time Algorithm for the N-Queens Problem von Rok Sosic und Jun Gu aus dem Jahre
MehrVorlesung Informatik 2 Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (11 Hashverfahren: Allgemeiner Rahmen) Prof. Dr. Susanne Albers Das Wörterbuch-Problem (1) Das Wörterbuch-Problem (WBP) kann wie folgt beschrieben
MehrAlgorithmen & Datenstrukturen. 3. Suchen
Algorithmen & Datenstrukturen 3. Suchen 1 Exponentielle Suche Gesucht wird ein Element mit Schlüssel k. Die exponentielle Suche eignet sich zum Suchen in nach den Schlüsselwerten sortierten Feldern, deren
Mehr