Algo rithm en und D atenstruk turen 9. V o rlesung

Größe: px
Ab Seite anzeigen:

Download "Algo rithm en und D atenstruk turen 9. V o rlesung"

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 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

Mehr

NAME, VORNAME: Studiennummer: Matrikel:

NAME, 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.

Mehr

Abschnitt: Algorithmendesign und Laufzeitanalyse

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

Mehr

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

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

Mehr

Kap. 3: Sortieren. Überblick. Unser Sortierproblem. Motivation. Laufzeitmessung. Warum soll ich hier bleiben? Sortierverfahren sind WICHTIG!!!

Kap. 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

Mehr

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

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

Mehr

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

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

Mehr

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

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

Mehr

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

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

Mehr

4. Sortieren 4.1 Vorbemerkungen

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

Mehr

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

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

Mehr

Hashing Hashfunktionen Kollisionen Ausblick. Hashverfahren. Dank an: Beate Bollig, TU Dortmund! 1/42. Hashverfahren

Hashing 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

Mehr

5. Übungsblatt zu Algorithmen I im SoSe 2016

5. Ü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

Mehr

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

Algorithmen 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

Mehr

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

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

Mehr

Algorithmen und Datenstrukturen

Algorithmen 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

Mehr

Algorithmen und Datenstrukturen

Algorithmen 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 Ü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)

Ü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

Mehr

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

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

Mehr

Algorithmen und Datenstrukturen

Algorithmen 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

Mehr

Datenstrukturen und Algorithmen

Datenstrukturen 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

Mehr

Kapitel 6 Elementare Sortieralgorithmen

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

Mehr

2.2 Allgemeine (vergleichsbasierte) Sortierverfahren

2.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

Mehr

Algorithmen und Datenstrukturen

Algorithmen 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

Mehr

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

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

Mehr

Kapitel 4. Streuen. (h K injektiv) k 1 k 2 K = h(k 1 ) h(k 2 )

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

Mehr

Algorithmen und Datenstrukturen

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

Mehr

Bucketsort. Korrektheit. Beispiel. Eingabe: Array A mit n Elementen im Bereich [0,1) Annahme: die Elemente sind in [0,1) gleichverteilt.

Bucketsort. 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:

Mehr

Informatik II, SS 2014

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

Mehr

2 Sortieren durch Vergleichen Eingabefolge a 1, a 2,..., a n 2, 1, 3 Sortieralg. Für festes n ist ein vergleichsbasierter Sortieralg. charakterisiert

2 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,...,

Mehr

Counting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit

Counting - 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

Mehr

Algorithmen und Datenstrukturen 1

Algorithmen 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

Mehr

Aufgabe (Schreibtischtest, Algorithmenanalyse)

Aufgabe (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

Mehr

Grundlagen: Algorithmen und Datenstrukturen

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

Mehr

Interne Sortierverfahren

Interne 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

Mehr

Untersuchen Sie, inwiefern sich die folgenden Funktionen für die Verwendung als Hashfunktion eignen. Begründen Sie Ihre Antwort.

Untersuchen 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

Mehr

Programmieren I. Kapitel 7. Sortieren und Suchen

Programmieren 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

Mehr

Algorithmen und Datenstrukturen

Algorithmen 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

Mehr

Algorithmen und Datenstrukturen

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

Mehr

Algorithmen und Datenstrukturen 1

Algorithmen 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

Mehr

damit hätten wir nach Ende der Schleife: "a[0 n-1] enthält nur Elemente aus a[0 n-1], aber in sortierter Reihenfolge".

damit 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 >

Mehr

Divide & Conquer. Problem in Teilprobleme aufteilen Teilprobleme rekursiv lösen Lösung aus Teillösungen zusammensetzen

Divide & 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

Mehr

Algorithmen und Datenstrukturen 1 VL Übungstest WS Januar 2011

Algorithmen 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

Mehr

Grundlagen der Informatik

Grundlagen 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

Mehr

Datenstrukturen und Algorithmen

Datenstrukturen 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:

Mehr

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

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

Mehr

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

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

Mehr

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

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

Mehr

Algorithmen und Datenstrukturen SoSe 2008 in Trier. Henning Fernau Universität Trier

Algorithmen 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,

Mehr

Komplexität von Algorithmen:

Komplexitä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

Mehr

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1

Stud.-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

Mehr

Teil VII. Hashverfahren

Teil 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:

Mehr

Algorithmen und Datenstrukturen

Algorithmen 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

Mehr

Datenstrukturen & Algorithmen Lösungen zu Blatt 5 FS 14

Datenstrukturen & 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

Mehr

Schleifeninvarianten. Dezimal zu Binär

Schleifeninvarianten. 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

Mehr

Algorithmen 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 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

Mehr

Algorithmen und Datenstrukturen II: Hashverfahren

Algorithmen 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

Mehr

Asymptotische Laufzeitanalyse: Beispiel

Asymptotische 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

Mehr

Algorithmen und Datenstrukturen II: Hashverfahren

Algorithmen 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 Ü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

Mehr

JAVA - Suchen - Sortieren

JAVA - 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

Mehr

14. Hashing. Motivation. Naive Ideen. Bessere Idee? k(s) = s i b i

14. 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

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

Mehr

Algorithmen und Datenstrukturen

Algorithmen 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:

Mehr

Algorithmen und Datenstrukturen VO 3.0 Vorlesungsprüfung 19. Oktober 2007

Algorithmen 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

Mehr

Quicksort ist ein Divide-and-Conquer-Verfahren.

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

Mehr

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen?

Entscheidungsbä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

Mehr

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

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

Mehr

Technische Universität München

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

Mehr

Greedy Algorithms - Gierige Algorithmen

Greedy 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

Mehr

INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS

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

Mehr

4. Hashverfahren. geg.: Wertebereich D, Schlüsselmenge S = {s 1,..., s n } D. Menge A von Speicheradressen; oft: A = {0,..., m 1}

4. 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

Mehr

Algorithmen und Datenstrukturen

Algorithmen 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

Mehr

Kollision Hashfunktion Verkettung Offenes Hashing Perfektes Hashing Universelles Hashing Dynamisches Hashing. 4. Hashverfahren

Kollision 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

Mehr

3. Übungsblatt zu Algorithmen I im SoSe 2017

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

Mehr

16. All Pairs Shortest Path (ASPS)

16. 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

Mehr

Grundlagen: Algorithmen und Datenstrukturen

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

Mehr

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

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

Mehr

Tutoraufgabe 1 (Sortieralgorithmus):

Tutoraufgabe 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 Ü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

Mehr

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

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

Mehr

Untere Schranke für allgemeine Sortierverfahren

Untere 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

Mehr

Algorithmen und Datenstrukturen Heapsort

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

Mehr

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

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

Mehr

Algorithmen und Datenstrukturen

Algorithmen 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

Mehr

Algorithmen & Datenstrukturen Lösungen zu Blatt 9 HS 16

Algorithmen & 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

Mehr

3. Inkrementelle Algorithmen

3. 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,,.

Mehr

5.4 Das Rucksackproblem

5.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

Mehr

Grundlagen der Programmierung 2. Sortierverfahren

Grundlagen 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

Mehr

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

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

Mehr

Grundlagen der Programmierung

Grundlagen 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

Mehr

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

1. 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

Mehr

2.7 Der Shannon-Fano-Elias Code

2.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.

Mehr

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

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

Mehr

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 1990.

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 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

Mehr

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Vorlesung 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

Mehr

Algorithmen & Datenstrukturen. 3. Suchen

Algorithmen & 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