Algorithmen und Datenstrukturen 7. Vorlesung

Größe: px
Ab Seite anzeigen:

Download "Algorithmen und Datenstrukturen 7. Vorlesung"

Transkript

1 Algorithmen und Datenstrukturen 7. Vorlesung Martin Dietzfelbinger 23. Mai 2005 v h h v, v,2 2 bal(v) = h 2 h {, 0, }. Definition Ein höhenbalancierter binärer Suchbaum heißt AVL-Baum. FG KuEA, U Ilmenau AuD FG KuEA, U Ilmenau AuD Effekt: AVL delete Lösche wie bei gewöhnlichem BSB: Fälle, DeleteMin Zentraler Effekt: Ein Knoten u wird entfernt, dem mindestens ein Unterbaum fehlt. Wenn Balancebedingung nicht verletzt: fertig. Wenn Balancebedingung verletzt, laufe den Weg von u zur Wurzel, teste an jedem Knoten die Balancebedingung, führe gegebenenfalls eine Einfach- oder Doppelrotation aus. Achtung: Möglicherweise auf mehreren Levels nacheinander Rotation nötig. Beispiel: Fibonacci-Bäume iefe 5 2 Knoten iefe 6 20 Knoten Entfernen des höchsten Blattes in einem minimal großen AVL- Baum löst Rotationskaskade aus. Hier wurde ein Fehler korrigiert FG KuEA, U Ilmenau AuD FG KuEA, U Ilmenau AuD

2 AVL delete Eingabe: : AVL tree, x: key Ausgabe: : AVL tree, shallower: boolean. Fall: = NIL ( Erfolglose Suche, Schlüssel x nicht da! ) Keine Rebalancierung nötig! return (, false) 2. Fall:.key = x und (.left = NIL oder.right = NIL) Entferne Wurzelknoten! x war und ist AVL- Baum Falls.left = NIL:.right Falls.right = NIL:.left return (, true) FG KuEA, U Ilmenau AuD FG KuEA, U Ilmenau AuD Fall 2:.key = x beide Unterbäume nicht leer x y kleiner (.right,y,s,right_shallower) AVL_deletemin(.right).data s;.key y; Rebalancierung_rechts; Fall 3:.key > x (.left,left_shallower) <- AVL_delete(.left,x) Rebalancierung_links; Fall 4:.key < x (.right,right_shallower) <- AVL_delete(.right,x) Rebalancierung_rechts; FG KuEA, U Ilmenau AuD FG KuEA, U Ilmenau AuD

3 In AVL deletemin: Fall A:.left = NIL Wurzel entfernen In AVL deletemin: Fall B:.left <> NIL: bleibt AVL-Baum y.key; s.data;.right; return (,y,s,true) (.left,y,s,left_shallower) AVL_deletemin(.left); Rebalancierung_links; ( gibt shallower einen Wert ) return (,y,s,shallower) FG KuEA, U Ilmenau AuD FG KuEA, U Ilmenau AuD Rebalancierung links: (Rebalancierung rechts geht symmetrisch) : : Fall Aktion.Fall: left_shallower = false shallower <- false; 2 umgebaut zu 2 Rückgabewerte: Neuer Baum und Boolean shallower 2. Fall: left_shallower = true.bal = - geschrumpft shallower <- true;.bal <- 0; FG KuEA, U Ilmenau AuD FG KuEA, U Ilmenau AuD

4 Fall 3.Fall: left_shallower = true.bal = 0 Aktion 4.Fall: left_shallower = true.bal = geschrumpft shallower <-false;.bal <- ; 2 Unterfälle je nach Aussehen von 2. 2 ist nicht leer! FG KuEA, U Ilmenau AuD FG KuEA, U Ilmenau AuD Fall 4.:.right.bal = 0; Fall 4.2:.right.bal = ;.left.right Linksrotation! <- left_rotate();.left.bal <- ;.bal <- -; shallower <- false; Hier wurde ein Fehler korrigiert! Linksrotation! <- left_rotate();.left.bal <- 0;.bal <- 0; shallower <- true; FG KuEA, U Ilmenau AuD FG KuEA, U Ilmenau AuD

5 Fall 4.3:.right.bal = -; Fall 4.3 (Forts.) Betrachte eilbäume von 2 =.right. : Doppelrotation! <- right_left_rotate(); shallower <- true; Neue Werte: FG KuEA, U Ilmenau AuD FG KuEA, U Ilmenau AuD altes.bal.left.bal.right.bal.bal Hier wurde ein Fehler korrigiert! (Spaltenüberschriften vertauscht) Das alte.bal enthält (nach der Doppelrotation) den Balancefaktor, der ursprünglich in der Wurzel des zentralen Unterbaums stand. Proposition Die rekursive Prozedur AVL delete führt die Wörterbuchoperation delete korrekt durch. D.h.: es entsteht wieder ein AVL-Baum. Die Prozedur hat Laufzeit O(log n) und führt an jedem Knoten auf dem Weg von der Wurzel zum gelöschten Knoten höchstens eine Einfach- oder Doppelrotation durch. Satz In AVL-Bäumen kostet jede Wörterbuchoperation Zeit O(log n), wo n die Anzahl der Wörterbucheinträge ist. FG KuEA, U Ilmenau AuD FG KuEA, U Ilmenau AuD

6 Mehrweg-Such-Bäume Mehrweg-Such-Bäume Bäume aus Knoten mit variablem Ausgrad Knoten mit mehreren Unterbäumen: x x l Beispiel eines N-MSB: Wurzel x < < x l. Für y i in i, 0 i l: 0 l- y 0 < x < y < x 2 < < y l < x l < y l l FG KuEA, U Ilmenau AuD FG KuEA, U Ilmenau AuD Mehrweg-Such-Bäume Definition Mehrweg-Suchbäume (MSBe) über dem (angeordneten) Universum U sind wie folgt induktiv definiert: Mehrweg-Such-Bäume Möglichkeit für Implementierung eines Knotens: Variante : (0) Der leere Baum ist ein U-MSB. () Ist l und sind x < x 2 < < x l Schlüssel in U und sind 0,,..., l U-MSBe mit: keys: lmax Für y i in i, 0 i l: y 0 < x < y < x 2 < < y l < x l < y l dann ist auch ( 0,x,,x 2,...,x l, l,x l, l ) ein U- Mehrweg-Suchbaum. l: sons: 3 l_max: l max FG KuEA, U Ilmenau AuD FG KuEA, U Ilmenau AuD

7 Mehrweg-Such-Bäume Möglichkeit für Implementierung eines Knotens: Variante 2: keys: sons: 0 3 Mehrweg-Such-Bäume Variante 3: MSB-Knoten wird durch aufsteigend sortierte lineare Liste von Binärbaumknoten dargestellt. Im Knoten muss als boolescher Wert vermerkt sein, ob es sich um den Knoten am Listenende handelt. (Im Bild: *.) Elegant: Für die Suche kann man die gewöhnliche Suchprozedur für binäre Suchbäume benutzen. l: 3 FG KuEA, U Ilmenau AuD FG KuEA, U Ilmenau AuD Mehrweg-Such-Bäume : * 7 6 * 2 4 * 0 3 * 2 25 * 9 * 2 * 2-3-Bäume Definition Ein Mehrweg-Suchbaum heißt ein 2-3-Baum, wenn gilt: (a) Jeder Knoten enthält oder 2 Schlüssel (also hat jeder Knoten 2 oder 3 Unterbäume, was der Struktur den Namen gibt); (b) Für jeden Knoten v in gilt: wenn v einen leeren Unterbaum hat, so sind alle Unterbäume unter v leer, d.h. v ist dann Blatt; (c) Alle Blätter von haben dieselbe iefe. FG KuEA, U Ilmenau AuD FG KuEA, U Ilmenau AuD

8 2-3-Bäume 2-3-Bäume Beispiele: Beispiele: Leerer 2-3-Baum: I Level Baum mit 2 Ebenen: G O Level G O Level A H L M R S U Level 0 = Blattebene A I L R Level 0 = Blattebene NB: Die Ebenen werden von den Blättern her numeriert. FG KuEA, U Ilmenau AuD FG KuEA, U Ilmenau AuD Bäume L O 2-3-Bäume G A M R U A O Kein 2-3-Baum (zu großer Grad). L M R Kein 2-3-Baum (Blätter in verschiedenen iefen). FG KuEA, U Ilmenau AuD FG KuEA, U Ilmenau AuD

9 2-3-Bäume G O A I L Kein 2-3-Baum (Leerer Unterbaum in Nicht-Blatt). Proposition 2-3-Bäume: Logarithmische iefe Die iefe eines 2-3-Baums mit n Daten ist mindestens log 3 (n + ) und höchstens log(n + ). [log 3 x 0.63 log 2 x] Level h h- 0 FG KuEA, U Ilmenau AuD FG KuEA, U Ilmenau AuD Suche in 2-3-Bäumen: Rekursiv lookup(,x), für 2-3-Baum, x U.. Fall: =. Ausgabe: 2. Fall: Die Wurzel von enthält Schlüssel x (und eventuell x 2 > x ). Suche in 2-3-Bäumen: Rekursiv 2a: x < x : Rufe lookup für ersten Unterbaum 0 auf. 2b: x = x : gefunden. 2c: x < x und ( x 2 existiert nicht oder x < x 2 ): Rufe lookup für zweiten Unterbaum auf. 2d: x 2 existiert und x = x 2 : gefunden. 2e: x 2 existiert und x 2 < x: Rufe lookup für dritten Unterbaum 2 auf. FG KuEA, U Ilmenau AuD FG KuEA, U Ilmenau AuD

10 Klar: Suche in 2-3-Bäumen: Rekursiv Zeitaufwand: Wenn x im Knoten v x sitzt: Für jeden Knoten v auf dem Weg von der Wurzel zu v x entstehen Kosten O(). Zeit für Suche ist O(log n). Einfügen in 2-3-Bäumen: Rekursiv insert(,x), für 2-3-Baum, x U. Resultat: Neuer Baum, Boolescher Wert higher, der angibt, ob höher als ist. Invariante (I): (Benutzen Kontrollieren): höher als hat in der Wurzel nur einen Schlüssel.. Fall: =. Erzeuge neuen 2-3-Baum-Knoten mit Eintrag x, 2 leeren Unterbäumen (Blatt!) return (t, true) (I) stimmt. FG KuEA, U Ilmenau AuD FG KuEA, U Ilmenau AuD Einfügen in 2-3-Bäumen: Rekursiv 2. Fall: Wurzel von enthält Schlüssel x und eventuell x 2 > x, entsprechend Unterbäume 0, und eventuell 2. 2a: x < x : insert( 0 ) liefert 0 und sub higher. Rebalancierung (s.u.). 2d: x 2 existiert und x = x 2 : Update. higher false; 2e: x 2 existiert und x 2 < x: insert( 2 ) liefert 2 und sub higher. Rebalancierung (s.u.). 2b: x = x : Update. higher false; 2c: x < x und ( x 2 existiert nicht oder x < x 2 ): insert( ) liefert und sub higher. Rebalancierung (s.u.). FG KuEA, U Ilmenau AuD FG KuEA, U Ilmenau AuD

11 Einfügen in 2-3-Bäumen: Rebalancierung Fälle 2a/2c/2e: Fall 2a(i)/2c(i)/2e(i): sub_higher = false. Der veränderte eilbaum ist nicht tiefer geworden. Keine weitere Rebalancierung nötig: Setze higher false. Einfügen in 2-3-Bäumen: Rebalancierung Fall 2a(ii)/2c(ii): x 2 existiert nicht und sub_higher = true 2a(ii): Benutze (I)! x neu, tiefer 0 z alt Umbau z x higher false FG KuEA, U Ilmenau AuD FG KuEA, U Ilmenau AuD Einfügen in 2-3-Bäumen: Rebalancierung Einfügen in 2-3-Bäumen: Rebalancierung 2c(ii): Benutze (I)! Fall 2a(iii)/2c(iii)/2e(iii): alt 0 x z neu, tiefer Umbau 0 x 0 z x 2 existiert nicht und sub_higher = true Benutze jeweils (I)! 0 higher false FG KuEA, U Ilmenau AuD FG KuEA, U Ilmenau AuD

12 2a(iii): Einfügen in 2-3-Bäumen: Rebalancierung 2c(iii): Einfügen in 2-3-Bäumen: Rebalancierung x x 2 x x x 2 z 0 z Umbau z x 2 z Umbau x x 2 neu, tiefer higher true Prüfe: (I) erfüllt. higher true Prüfe: (I) erfüllt. FG KuEA, U Ilmenau AuD FG KuEA, U Ilmenau AuD Einfügen in 2-3-Bäumen: Rebalancierung Einfügen in 2-3-Bäumen 2e(iii): x x 2 x 2 Beobachtung: 2-3-Bäume wachsen in der iefe durch Spalten der Wurzel. Proposition 0 2 z Umbau x z (a) Die Prozedur insert ist korrekt, d.h. sie erhält die 2-3-Baum- Struktur. higher true Prüfe: (I) erfüllt (b) Das Einfügen eines Schlüssels in einen 2-3-Baum mit n Schlüsseln benötigt Zeit O(log n) und die Erzeugung von höchstens log 2 n neuer Knoten. FG KuEA, U Ilmenau AuD FG KuEA, U Ilmenau AuD

13 Beweis: Einfügen in 2-3-Bäumen (a) Man kontrolliert in jedem Fall des Algorithmus nach, dass die 2-3-Baum-Struktur wiederhergestellt wird. (b) Für die Bearbeitung eines Levels in der insert-prozedur wird Zeit O() benötigt. Auf jedem der log n Levels wird höchstens Knoten neu gebildet. Löschen in 2-3-Bäumen Prinzip: Suche den kleinsten Schlüssel y x, der in einem Blatt gespeichert ist. (x oder der Inorder-Nachfolger von x.) Setze y an die Stelle von x und entferne y. Fazit: Man muss sich nur um das Löschen eines Eintrags y in einem Blatt kümmern. Folgerung: Für jedes n 0 existiert ein 2-3-Baum mit n Schlüsseln. (Man füge in einen anfangs leeren Baum die Schlüssel,...,n ein.) FG KuEA, U Ilmenau AuD FG KuEA, U Ilmenau AuD Löschen in 2-3-Bäumen Einfacher Fall: Neben y hat das Blatt noch andere Einträge. Keine Umstrukturierung nötig. Rebalancierungsfall: Durch das Streichen von y wird das Blatt leer, verliert also an Höhe. Ähnlich wie bei den Einfügungen werden flacher gewordene eilbäume durch lokale Umstellungen wieder auf die Höhe der anderen eilbäume gebracht. oder Hashing Schlüsseltransformationsverfahren Wiederholend lesen: Folien aus GdP zu B-Bäumen. FG KuEA, U Ilmenau AuD FG KuEA, U Ilmenau AuD

14 Gegeben: Universum U (auch ohne Ordnung) und Wertebereich R. Ziel: Implementiere Wörterbuch oder dynamische (partielle) Abbildung f : S R, wo S U endlich Werden sehen: Erreichbar ist Zeit O() pro Operation im Durchschnitt Unabhängig vom Umfang der Datenstruktur! Gegensatz Bäume: O(log(n)) S U h 0 2 m h: U [m] U : Universum der Schlüssel [m] = {0,...,m } : Indexbereich für abelle S U, S = n FG KuEA, U Ilmenau AuD FG KuEA, U Ilmenau AuD Grundansatz: Speicherung in m Plätzen einer abelle [0..m ]. Aus Schlüssel x U wird ein Index h(x) {0,...,m } berechnet. x wird in h(x) umgewandelt/transformiert. Idealvorstellung: Speichere x in Zelle [i], wo i = h(x). Beispiel: U = {A,...,Z,a,...,z} 3 Nichtleere Wörter mit mindestens 3 Buchstaben: unendlich! h : U {0,...,2} wird definiert durch h(c c 2 c r ) = num(c 3 ) mod 3, wo num(a) = num(a) = 0 num(b) = num(b) =... num(z) = num(z) = 25 FG KuEA, U Ilmenau AuD FG KuEA, U Ilmenau AuD

15 h(c...c r ) = num(c 3 ) mod 3 x num(c 3 ) h(x) Januar 3 0 Februar Maerz 4 4 April 7 4 Mai 8 8 Juni 3 0 Juli August 6 6 September 5 2 Oktober 9 6 November 2 8 Dezember 25 2 Definition Eine Funktion h: U [m] heißt eine Hashfunktion. Wenn S U gegeben ist (oder ein f : S R), verteilt h die Schlüssel in S auf [m] = {0,...,m }. Idealfall: Die Einschränkung h S ist injektiv, d. h. für jedes i [m] existiert höchstens ein x S mit h(x) = i. Beispiel: Auf S = {Februar, Maerz, Mai, Juni, Juli, Dezember} ist obiges h injektiv, nicht aber auf S = {Februar,Maerz,April} FG KuEA, U Ilmenau AuD FG KuEA, U Ilmenau AuD Sprechweise: h perfekt für S : h S injektiv. Falls h perfekt für S: Speichere x bzw. (x,r) in abellenplatz [h(x)]. lookup(x): Berechne i = h(x). (Dies sollte effizient möglich sein.) Prüfe, ob in [i] Schlüssel x steht. Falls ja: (x,r) ausgeben, sonst x / S. Kollision: x,y S, x y, h(x) = h(y) Leider sind Kollisionen praktisch unvermeidlich (Ausweg: speziell auf S abgestimmte Hashfunktion h.) Fall: h rein zufällig, S = n, S = {x,...,x n }. D. h.: Uniformitätsannahme (UF ): Werte h(x ),...,h(x n ) in {0,...,m } n sind rein zufällig, d.h. jeder der m n möglichen Wertevektoren (i,...,i n ) {0,...,m } n kommt mit derselben Wahrscheinlichkeit /m n vor. ritt ein, wenn S U rein zufällige Menge ist und h das Universum in gleich große eile schneidet, d. h. h ({i}) = U m oder = U m, i = 0,...,m. FG KuEA, U Ilmenau AuD FG KuEA, U Ilmenau AuD

16 Mit (UF ): Prob(h ist injektiv auf {x,...,x n }) = m m m m m 2 m m n + m (Für i =,...,n ist die Wahrscheinlichkeit, dass h(x i ) in [m] {h(x ),...,h(x i )} liegt, genau m i+ m.)... = ( ) ( 2 ) m m e 0 e m e m 2 e n m (denn für x 0 ist + x < e x ), also... ( n m = e n(n ) 2m. ) Prob(h injektiv auf S) e n(n ) 2m. Wunsch: Linearer Platzverbrauch, also Auslastungsfaktor α = n m nicht kleiner als eine Konstante α 0. Dann: Prob(h injektiv auf S) e α 0 (n ) 2. Winzig für nicht ganz kleine n! Fazit: Kollisionen kommen vor. Kollisionsbehandlung FG KuEA, U Ilmenau AuD FG KuEA, U Ilmenau AuD Beispiel: Hashing mit verketteten Listen : 0: : 2: 3: 4: 5: 6: 7: Juni Februar September Maerz August 8: 9: 0: : 2: November Juli Dezember Januar April Oktober Mai Hashing mit verketteten Listen engl.: chained hashing Benutze Array [0..m ] von Zeigern auf Anfänge von m einfach verketteten linearen Listen L 0,...,L m. Liste L i enthält die Schlüssel aus Behälter ( bucket ) B i = {x S h(x) = i}, u.u. mit Zusatzinformation, d. h. dem Wert r = f(x). FG KuEA, U Ilmenau AuD FG KuEA, U Ilmenau AuD

17 Algorithmen(skizzen) empty(m): Erzeugt Array [0..m-] mit m NIL-Zeigern und legt h: U [m] fest. Kosten: Θ(m). Beachte: Man wählt h, ohne S zu kennen! insert(x, r): Berechne i = h(x); suche Schlüssel x in Liste bei [i]; falls gefunden: ersetze Daten bei x durch r; sonst: füge (x,r) in Liste [i] ein. Kosten: O( + Zahl der Schlüsselvergleiche x = x? )... falls die Auswertung von h(x) und ein Schlüsselvergleich Zeit O() kostet.. Fall: x nicht vorhanden erfolglose Suche Zahl der Schlüsselvergleiche = B i. 2. Fall: x ist vorhanden erfolgreiche Suche Mittlere Zahl der Schlüsselvergleiche = 2 B i. FG KuEA, U Ilmenau AuD FG KuEA, U Ilmenau AuD delete(x): Berechne i = h(x); suche Schlüssel x in Liste bei [i]; falls gefunden: lösche Eintrag; sonst: tue nichts. Kosten: wie bei insert. Ziel: Analysiere erwartete Kosten. Genügt: Analysiere erwartete Anzahl der Schlüsselvergleiche. Szenario: n Schlüssel x,...,x n in Struktur gespeichert, Menge S. Nun: Suche nach y U. α = n m : der (aktuelle) Auslastungsfaktor. Fall : y / S erfolglose Suche. Wieviele Schlüsselvergleiche im erwarteten Fall? Abgeschwächte Uniformitätsannahme (UF 2 ): Für je 2 Schlüssel x z in U gilt: Prob(h(x) = h(z)) m FG KuEA, U Ilmenau AuD FG KuEA, U Ilmenau AuD

18 Definiere Zufallsgrößen/Zufallsvariable, für x,z U: { falls h(x) = h(z), Y x,z := 0 falls h(x) h(z). Nach (UF 2 ): E(Y x,z ) = Prob(h(x) = h(z)) m. Anzahl der Schlüsselvergleiche/Listenlänge: aktuelle Länge der bei der b y = {x S h(y) = h(x)} = Suche zu durchlaufenden = Y x,y. x S Liste Erwartete Listenlänge: Proposition E(b y ) = x S E(Y x,y ) x S m = n m = α. Die erwartete Anzahl von Schlüsselvergleichen bei erfolgloser Suche unter der Annahme (UF 2 ) ist höchstens α. Der erwartete Zeitbedarf für eine erfolglose Suche ist O(+α). Fazit: Wenn α α, α konstant (z.b. = 2), dann ist die erwartete Zeit für eine erfolglose Suche O(). FG KuEA, U Ilmenau AuD FG KuEA, U Ilmenau AuD Fall 2: y S erfolgreiche Suche. Wieviele Schlüsselvergleiche im erwarteten Fall? (nach (UF 2 )) Gemittelt über alle Fälle y = x, x S (jeweils W. n )! Wir nehmen an: Einfügereihenfolge ist x,...,x n, Elemente werden beim Einfügen ans Listenende gesetzt. Im Fall y = x i wird y mit genau j i Y xj,y Gemittelt über alle i: n i n Y xj,x i = + n j i j<i n Erwartungswert (mit (UF 2 )) ist höchstens + n j<i n Y xj,x i. m = + (n )n n 2m < + α 2. Listenelementen verglichen. (Vor oder gleich y in der gleichen Liste!) FG KuEA, U Ilmenau AuD FG KuEA, U Ilmenau AuD

19 Proposition Die erwartete (mit (UF 2 )) mittlere (über die Einträge x,...,x n gemittelte) Anzahl von Schlüsselvergleichen bei erfolgreicher Suche ist höchstens + α 2. Der erwartete Zeitbedarf für eine erfolgreiche Suche ist O( + α). Fazit: Wenn α α, α konstant (z.b. = 2), dann ist die erwartete Zeit für eine erfolgreiche Suche O(). Kriterien für Qualität: Einfache Hashfunktionen ) schnelles Auswerten von h(x) 2) wenige Kollisionen (unter realistischen Annahmen über die Schlüsselmenge S) Für ) entscheidend: Schlüsselformat FG KuEA, U Ilmenau AuD FG KuEA, U Ilmenau AuD Fall: Schlüssel sind natürliche Zahlen: U N Divisionsrestmethode: Multiplikationsmethode: U = {0,,...,u } Idee: Für 0 < ϑ < (ideal: ϑ irrational) h(x) = x mod m Hinweis: Sehr einfach, effizient. Nachteile: Unflexibel Bei strukturierten Schlüsselmengen (z.b. aus Strings übersetzte Schlüssel) erhöhtes Kollisionsrisiko Relativ sicher nur für Primzahlen m. Vorsichtsmaßnahme: m 2 k 20 für Zweierpotenzen 2 k. Für Produktionssysteme nicht sehr zu empfehlen. h(x) = ((ϑx) mod ) m. Dabei: (ϑx) mod = (ϑx) (ϑx). (Gebrochener Anteil von ϑx.) Beispiel: ϑ = φ = 2 ( 5 ) m = 00 FG KuEA, U Ilmenau AuD FG KuEA, U Ilmenau AuD

20 h(00) = ((00ϑ) mod ) 00 = (6, mod ) 00 = 80 h(0) = ((0ϑ) mod ) 00 = (62, mod ) 00 = 42 Man kann zeigen: Mit diesem ϑ werden aufeinanderfolgende Schlüssel (x,x +,...,x + q ) sehr gut in [m] verteilt. Diskrete Version : mit a ungerade und ϑ a/2 k. h a (x) = (ax mod 2 k ) div2 k l Auswertung ohne Division (sehr effizient): a * x = ax h(x) l Bits FG KuEA, U Ilmenau AuD FG KuEA, U Ilmenau AuD Fall: Schlüssel sind Strings: U Seq(Σ) Σ: Alphabet endliche nichtleere Menge. Beispiel: Σ = ASCII-Alphabet = {0,} 8 = {0,,...,255} Schlüssel: x = (c,...,c r ),c,...,c r Σ. Stets möglich: num : Σ {0,..., Σ } übersetzt Alphabetzeichen in Zahlen. Möglich, nicht sehr zu empfehlen: ransformation von Schlüssel x in Zahl ˆx = n(x) als neuen Schlüssel. Dann: x h(ˆx). Kollisionen n(x) = n(y) nie auflösbar! Häufig: Ineffiziente Auswertung. Besser: An Schlüsselformat x = (c,...,c r ) angepasste Hashfunktionen. FG KuEA, U Ilmenau AuD FG KuEA, U Ilmenau AuD

21 Lineare Funktionen über Körper Z p : m = p Primzahl mit p > Σ, also 0 num(c) < p. Wähle Koeffizienten a,...,a r {0,...,p }. ( r ) h(c c r ) = a i num(c i ) mod p. Vorteile: i= Rechnung nur mit Zahlen < m 2 (wenn man nach jeder Multiplikation/Addition modulo m reduziert); Sehr effizient; heoretisch nachweisbares gutes Verhalten, wenn a,...,a r aus {0,,...,p } zufällig gewählt wurden. Lineare Funktionen über Z 2 -Vektorraum {0,} n U = Σ r, mit Σ = {0,...,s }. m = 2 l mit l w (w: Wortlänge, z.b. w = 32). [m] entspricht {0,} l. Repräsentation der Hashfunktion h: Array A[..r,0..s ] mit Einträgen aus {0,} w. h(c c r ) = die ersten l Bits von A[,num(c )] A[r, num(c r )] FG KuEA, U Ilmenau AuD FG KuEA, U Ilmenau AuD Dabei: ist bitweises XOR, auf ganzes Wort angewendet. (Maschinenoperation effizient!) Beispiel: w {}}{ a i XOR b i Zahlenbeispiel: r = 20 Zeichen pro Wort. w = 32, Σ = ASCII-Alphabet = {0,} 8. A[..r,0..s ] hat rs = Einträge. Sinnvoll für große Hashtabellen. = a i b i {, ai b = i 0, a i = b i Vorteile: Sehr schnelle Auswertung ( ebenso schnell wie +); heoretisch nachweisbares gutes Verhalten, wenn Einträge von A zufällig sind; Dasselbe kann für m = 2 4,2 5,2 6,...,2 w benutzt werden. Ideal für die Kombination mit der Verdopplungsstrategie: Wählen einer neuen Hashfunktion für doppelt so große abelle entspricht dem Erhöhen von l um ; die Einträge in A bleiben unverändert. FG KuEA, U Ilmenau AuD FG KuEA, U Ilmenau AuD

22 Wiederholen: GdP-Folien über Hashing. Lineares Sondieren Quadratisches Sondieren Double Hashing FG KuEA, U Ilmenau AuD

Balancierte Suchbäume

Balancierte Suchbäume Foliensatz 10 Michael Brinkmeier echnische Universität Ilmenau Institut für heoretische Informatik Sommersemester 2009 U Ilmenau Seite 1 / 74 Balancierte Suchbäume U Ilmenau Seite 2 / 74 Balancierte Suchbäume

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

Klausur Algorithmen und Datenstrukturen SS August Arbeitszeit 90 min

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

Mehr

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 - Balancierte Bäume, AVL-Bäume) Prof. Dr. Susanne Albers Balancierte Bäume Eine Klasse von binären Suchbäumen ist balanciert, wenn jede der drei

Mehr

Hashing. Überblick Aufgabe Realisierung

Hashing. Überblick Aufgabe Realisierung Überblick Aufgabe Realisierung Aufgabe Realisierung Anforderungen Wahl einer Hashfunktion mit Verkettung der Überläufer Offene Universelles 2/33 Überblick Aufgabe Realisierung Aufgabe Dynamische Verwaltung

Mehr

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

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

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

Beweis: Die obere Schranke ist klar, da ein Binärbaum der Höhe h höchstens

Beweis: Die obere Schranke ist klar, da ein Binärbaum der Höhe h höchstens Beweis: Die obere Schranke ist klar, da ein Binärbaum der Höhe h höchstens h 1 2 j = 2 h 1 j=0 interne Knoten enthalten kann. EADS 86/600 Beweis: Induktionsanfang: 1 ein AVL-Baum der Höhe h = 1 enthält

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

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

Informatik II: Algorithmen und Datenstrukturen SS 2015

Informatik II: Algorithmen und Datenstrukturen SS 2015 Informatik II: Algorithmen und Datenstrukturen SS 2015 Vorlesung 8b, Mittwoch, 17. Juni 2015 (Balancierte Suchbäume) Prof. Dr. Hannah Bast Lehrstuhl für Algorithmen und Datenstrukturen Institut für Informatik

Mehr

Rotation. y T 3. Abbildung 3.10: Rotation nach rechts (analog links) Doppelrotation y

Rotation. y T 3. Abbildung 3.10: Rotation nach rechts (analog links) Doppelrotation y Die AVL-Eigenschaft soll bei Einfügungen und Streichungen erhalten bleiben. Dafür gibt es zwei mögliche Operationen: -1-2 Rotation Abbildung 3.1: Rotation nach rechts (analog links) -2 +1 z ±1 T 4 Doppelrotation

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

P ( Mindestens zwei Personen haben am gleichen Tag Geb. ) (1) = 1 P ( Alle Personen haben an verschiedenen Tagen Geb. ) (2)

P ( Mindestens zwei Personen haben am gleichen Tag Geb. ) (1) = 1 P ( Alle Personen haben an verschiedenen Tagen Geb. ) (2) 1 Hashing Einleitung Eine sehr naive Herangehensweise zur Implementierung eines Wörterbuchs ist die Benutzung eines hinreichend grossen unsortierten Arrays, in dem jeweils an eine freie Position eingefügt

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

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen Vorlesung Informatik 2 Algorithmen und Datenstrukturen (23 Bruder-Bäume, B-Bäume) Prof. Dr. Susanne Albers Balancierte Bäume Eine Klasse von binären Suchbäumen ist balanciert, wenn jede der drei Wörterbuchoperationen

Mehr

Algorithmen und Datenstrukturen I AVL-Bäume

Algorithmen und Datenstrukturen I AVL-Bäume Algorithmen und Datenstrukturen I AVL-Bäume Prof. Dr. Oliver Braun Letzte Änderung: 01.12.2017 14:42 Algorithmen und Datenstrukturen I, AVL-Bäume 1/38 Balancierte Bäume in einem zufällig erzeugten Binärbaum

Mehr

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

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

Mehr

3. Binäre Suchbäume. 3.1 Natürliche binäre Suchbäume. EADS 3.1 Natürliche binäre Suchbäume 78/598 ľernst W. Mayr

3. Binäre Suchbäume. 3.1 Natürliche binäre Suchbäume. EADS 3.1 Natürliche binäre Suchbäume 78/598 ľernst W. Mayr 3. Binäre Suchbäume 3.1 Natürliche binäre Suchbäume Definition 18 Ein natürlicher binärer Suchbaum über einem durch total geordneten Universum U ist ein als interner Suchbaum organisierter Binärbaum (also:

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

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

Copyright, Page 1 of 8 AVL-Baum

Copyright, Page 1 of 8 AVL-Baum www.mathematik-netz.de Copyright, Page 1 of 8 AVL-Baum 1. Motivation und Einleitung Das Suchen, Einfügen und entfernen eines Schlüssels in einem zufällige erzeugten binären Suchbaum mit N Schlüsseln ist

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Sortierte Folgen Maike Buchin 30.5., 1.6., 13.6.2017 Sortierte Folgen Häufiges Szenario: in einer Menge von Objekten mit Schlüsseln (aus geordnetem Universum) sollen Elemente

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

Algorithmen und Datenstrukturen 2. Dynamische Datenstrukturen Algorithmen und Datenstrukturen 2 Dynamische Datenstrukturen Algorithmen für dynamische Datenstrukturen Zugriff auf Variable und Felder durch einen Ausdruck: Namen durch feste Adressen referenziert Anzahl

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

Es sei a 2 und b 2a 1. Definition Ein (a, b)-baum ist ein Baum mit folgenden Eigenschaften:

Es sei a 2 und b 2a 1. Definition Ein (a, b)-baum ist ein Baum mit folgenden Eigenschaften: Binäre Suchbäume (a, b)-bäume (Folie 173, Seite 56 im Skript) Es sei a 2 und b 2a 1. Definition Ein (a, b)-baum ist ein Baum mit folgenden Eigenschaften: 1 Jeder Knoten hat höchstens b Kinder. 2 Jeder

Mehr

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie Gliederung 1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie 4/3, Folie 1 2010 Prof. Steffen Lange - HDa/FbI

Mehr

Themen. Hashverfahren. Stefan Szalowski Programmierung II Hashverfahren

Themen. Hashverfahren. Stefan Szalowski Programmierung II Hashverfahren Themen Hashverfahren Einleitung Bisher: Suchen in logarithmischer Zeit --> Binärsuche Frage: Geht es eventuell noch schneller/effektiver? Finden von Schlüsseln in weniger als logarithmischer Zeit Wichtig

Mehr

Vorlesung Datenstrukturen

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

Mehr

Übungsklausur Algorithmen I

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

Mehr

(a, b)-bäume / 1. Datenmenge ist so groß, dass sie auf der Festplatte abgespeichert werden muss.

(a, b)-bäume / 1. Datenmenge ist so groß, dass sie auf der Festplatte abgespeichert werden muss. (a, b)-bäume / 1. Szenario: Datenmenge ist so groß, dass sie auf der Festplatte abgespeichert werden muss. Konsequenz: Kommunikation zwischen Hauptspeicher und Festplatte - geschieht nicht Byte für Byte,

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Prof. Martin Lercher Institut für Informatik Heinrich-Heine-Universität Düsseldorf Teil 6 Suchbäume Version vom 25. November 2016 1 / 75 Vorlesung 10 22. November 2016 2

Mehr

Programmiertechnik II

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

Mehr

Suchstrukturen. Übersicht. 8 Suchstrukturen. Allgemeines. H. Täubig (TUM) GAD SS

Suchstrukturen. Übersicht. 8 Suchstrukturen. Allgemeines. H. Täubig (TUM) GAD SS Übersicht 8 Suchstrukturen Allgemeines Binäre Suchbäume AVL-Bäume H. Täubig (TUM) GAD SS 14 309 Allgemeines Übersicht 8 Suchstrukturen Allgemeines Binäre Suchbäume AVL-Bäume H. Täubig (TUM) GAD SS 14 310

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

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

Wiederholung. Bäume sind zyklenfrei. Rekursive Definition: Baum = Wurzelknoten + disjunkte Menge von Kindbäumen.

Wiederholung. Bäume sind zyklenfrei. Rekursive Definition: Baum = Wurzelknoten + disjunkte Menge von Kindbäumen. Wiederholung Baum: Gerichteter Graph, der die folgenden drei Bedingungen erfüllt: Es gibt einen Knoten, der nicht Endknoten einer Kante ist. (Dieser Knoten heißt Wurzel des Baums.) Jeder andere Knoten

Mehr

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie Gliederung 1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie 4/2, Folie 1 2014 Prof. Steffen Lange - HDa/FbI

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

Datenstrukturen & Algorithmen

Datenstrukturen & Algorithmen Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Binäre Suchbäume Einführung und Begriffe Binäre Suchbäume 2 Binäre Suchbäume Datenstruktur für dynamische Mengen

Mehr

Kap. 4.2 Binäre Suchbäume ff Kap. 4.3: AVL-Bäume

Kap. 4.2 Binäre Suchbäume ff Kap. 4.3: AVL-Bäume Kap. 4.2 Binäre Suchbäume ff Kap. 4.3: AVL-Bäume Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 12./13. VO DAP2 SS 2009 28.5./2.6.2009 1 Motivation Warum soll

Mehr

Algorithmen und Datenstrukturen (für ET/IT) Programm heute. Sommersemester Dr. Tobias Lasser

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

Mehr

Informatik II, SS 2018

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

Mehr

Algorithmen und Datenstrukturen 1

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen 1 8. Vorlesung Martin Middendorf und Peter F. Stadler Universität Leipzig Institut für Informatik middendorf@informatik.uni-leipzig.de studla@bioinf.uni-leipzig.de Gefädelte

Mehr

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 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 2. April

Mehr

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen Vorlesung Informatik 2 Algorithmen und Datenstrukturen (22 - AVL-Bäume: Entfernen) Prof. Dr. Susanne Albers Definition von AVL-Bäumen Definition: Ein binärer Suchbaum heißt AVL-Baum oder höhenbalanziert,

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

14. Rot-Schwarz-Bäume

14. Rot-Schwarz-Bäume Bislang: Wörterbuchoperationen bei binären Suchbäume effizient durchführbar, falls Höhe des Baums klein. Rot-Schwarz-Bäume spezielle Suchbäume. Rot-Schwarz-Baum mit n Knoten hat Höhe höchstens 2 log(n+1).

Mehr

ContainerDatenstrukturen. Große Übung 4

ContainerDatenstrukturen. Große Übung 4 ContainerDatenstrukturen Große Übung 4 Aufgabenstellung Verwalte Kollektion S von n Objekten Grundaufgaben: Iterieren/Auflistung Suche nach Objekt x mit Wert/Schlüssel k Füge ein Objekt x hinzu Entferne

Mehr

Mehrwegbäume Motivation

Mehrwegbäume Motivation Mehrwegbäume Motivation Wir haben gute Strukturen (AVL-Bäume) kennen gelernt, die die Anzahl der Operationen begrenzen Was ist, wenn der Baum zu groß für den Hauptspeicher ist? Externe Datenspeicherung

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

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 und Datenstrukturen 3. Vorlesung

Algorithmen und Datenstrukturen 3. Vorlesung Algorithmen und Datenstrukturen 3. Vorlesung Martin Dietzfelbinger 18. April 2005 Stacks Queues Listen... Datentypen und Datenstrukturen FG KTuEA, TU Ilmenau AuD 18.04.2005 FG KTuEA, TU Ilmenau AuD 18.04.2005

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

7 Weitere Baumstrukturen und Heapstrukturen

7 Weitere Baumstrukturen und Heapstrukturen 7 Weitere Baumstrukturen und Heapstrukturen Man kann kurze Suchzeiten in Baumstrukturen erreichen durch Rebalancierung bei Einfügungen und Löschungen (AVL Bäume, gewichtsbalancierte Bäume, Bruderbäume,

Mehr

Binäre Suchbäume. Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps

Binäre Suchbäume. Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps Binäre Suchbäume Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps Mengen n Ziel: Aufrechterhalten einer Menge (hier: ganzer Zahlen) unter folgenden Operationen: Mengen n Ziel: Aufrechterhalten einer

Mehr

3.6 AVL-Bäume. (AVL = Adel son-velskii und Landis (1962)) . Seite 326/726

3.6 AVL-Bäume. (AVL = Adel son-velskii und Landis (1962)) . Seite 326/726 3.6 VL-Bäume (VL = del son-velskii und Landis (1962)) 2-3-Bäume... sind Basis der B-Bäume, sind gut auf eitere Operationen ereiterbar (SPLIT, CONCTENTE), haben Worstcase-Zeiten on O(log n), aber sie nuten

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 217 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda: Graphen, Suchbäume, AVL Bäume Heute: Graphen und Bäume Binäre Suchbäume AVL-Bäume Nächste

Mehr

6. Sich selbst organisierende Datenstrukturen

6. Sich selbst organisierende Datenstrukturen 6. Sich selbst organisierende Datenstrukturen 6.1 Motivation einfach, wenig Verwaltungsoverhead effizient im amortisierten Sinn EADS 6.1 Motivation 201/598 6.2 Sich selbst organisierende lineare Listen

Mehr

Algorithmen und Datenstrukturen Hashverfahren

Algorithmen und Datenstrukturen Hashverfahren Algorithmen und Datenstrukturen Hashverfahren Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12 Überblick Prinzip Details Anwendungen Motivation Hashverfahren

Mehr

Grundlagen der Algorithmen und Datenstrukturen Kapitel 4

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

Mehr

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen Vorlesung Informatik 2 Algorithmen und Datenstrukturen (18 Bäume: Grundlagen und natürliche Suchbäume) Prof. Dr. Susanne Albers Bäume (1) Bäume sind verallgemeinerte Listen (jedes Knoten-Element kann mehr

Mehr

Informatik II, SS 2016

Informatik II, SS 2016 Informatik II - SS 2016 (Algorithmen & Datenstrukturen) Vorlesung 10 (27.5.2016) Binäre Suchbäume II Algorithmen und Komplexität Zusätzliche Dictionary Operationen Dictionary: Zusätzliche mögliche Operationen:

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

ADS 1: Algorithmen und Datenstrukturen

ADS 1: Algorithmen und Datenstrukturen ADS 1: Algorithmen und Datenstrukturen Teil IX Uwe Quasthoff Institut für Informatik Abteilung Automatische Sprachverarbeitung Universität Leipzig 1 Dezember 017 [Letzte Aktualisierung: 04/1/017, 10:56]

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

Algorithmen und Datenstrukturen I Bruder-Bäume

Algorithmen und Datenstrukturen I Bruder-Bäume Algorithmen und Datenstrukturen I Bruder-Bäume Prof. Dr. Oliver Braun Letzte Änderung: 11.12.2017 10:50 Algorithmen und Datenstrukturen I, Bruder-Bäume 1/24 Definition ein binärer Baum heißt ein Bruder-Baum,

Mehr

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen Was bisher geschah abstrakter Datentyp : Signatur Σ und Axiome Φ z.b. ADT Menge zur Verwaltung (Finden, Einfügen, Entfernen) mehrerer Elemente desselben Typs Spezifikation einer Schnittstelle Konkreter

Mehr

Bemerkung: Heapsort. Begriffsklärung: (zu Bäumen) Begriffsklärung: (zu Bäumen) (2) Heapsort verfeinert die Idee des Sortierens durch Auswahl:

Bemerkung: Heapsort. Begriffsklärung: (zu Bäumen) Begriffsklärung: (zu Bäumen) (2) Heapsort verfeinert die Idee des Sortierens durch Auswahl: Heapsort Bemerkung: Heapsort verfeinert die Idee des Sortierens durch Auswahl: Minimum bzw. Maximum wird nicht durch lineare Suche gefunden, sondern mit logarithmischem Aufwand durch Verwendung einer besonderen

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

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 11 (4.6.2014) Binäre Suchbäume II Algorithmen und Komplexität Binäre Suchbäume Binäre Suchbäume müssen nicht immer so schön symmetrisch sein

Mehr

Informatik II, SS 2016

Informatik II, SS 2016 Informatik II - SS 2016 (Algorithmen & Datenstrukturen) Vorlesung 9 (25.5.2016) Hashtabellen II, Binäre Suchbäume I Algorithmen und Komplexität Hashtabellen mit Chaining Jede Stelle in der Hashtabelle

Mehr

Dynamische Mengen. Realisierungen durch Bäume

Dynamische Mengen. Realisierungen durch Bäume Dynamische Mengen Eine dynamische Menge ist eine Datenstruktur, die eine Menge von Objekten verwaltet. Jedes Objekt x trägt einen eindeutigen Schlüssel key[x]. Die Datenstruktur soll mindestens die folgenden

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

Technische Universität München. Vorlesungsgrobstruktur: wo stehen wir, wie geht s weiter

Technische Universität München. Vorlesungsgrobstruktur: wo stehen wir, wie geht s weiter Vorlesungsgrobstruktur: wo stehen wir, wie geht s weiter Kapitel 7 Fortgeschrittene Datenstrukturen Motivation: Lineare Liste: Suchen eines Elements ist schnell O(log n) Einfügen eines Elements ist langsam

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

Wörterbucher. Das Wörterbuch 1 / 71

Wörterbucher. Das Wörterbuch 1 / 71 Wörterbucher Das Wörterbuch 1 / 71 Der abstrakte Datentyp Wörterbuch Ein Wörterbuch für eine gegebene Menge S besteht aus den folgenden Operationen: insert(x): Füge x zu S hinzu, d.h. setze S = S {x}.

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Prioritätswarteschlangen Maike Buchin 18. und 23.5.2017 Prioritätswarteschlange Häufiges Szenario: dynamische Menge von Objekten mit Prioritäten, z.b. Aufgaben, Prozesse, in der

Mehr

Algorithmen und Datenstrukturen Balancierte Suchbäume

Algorithmen und Datenstrukturen Balancierte Suchbäume Algorithmen und Datenstrukturen Balancierte Suchbäume Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12 Überblick Einführung Einfügen und Löschen Einfügen

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

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 10 (3.6.2014) Binäre Suchbäume I Algorithmen und Komplexität Zusätzliche Dictionary Operationen Dictionary: Zusätzliche mögliche Operationen:

Mehr

13. Bäume: effektives Suchen und Sortieren

13. Bäume: effektives Suchen und Sortieren Schwerpunkte Aufgabe und Vorteile von Bäumen 13. Bäume: effektives Suchen und Sortieren Java-Beispiele: Baum.java Traverse.java TraverseTest.java Sortieren mit Bäumen Ausgabealgorithmen: - Preorder - Postorder

Mehr

a) Fügen Sie die Zahlen 39, 38, 37 und 36 in folgenden (2, 3)-Baum ein:

a) Fügen Sie die Zahlen 39, 38, 37 und 36 in folgenden (2, 3)-Baum ein: 1 Aufgabe 8.1 (P) (2, 3)-Baum a) Fügen Sie die Zahlen 39, 38, 37 und 36 in folgenden (2, 3)-Baum ein: Zeichnen Sie, was in jedem Schritt passiert. b) Löschen Sie die Zahlen 65, 70 und 100 aus folgendem

Mehr

Fibonacci-Suche. Informatik I. Fibonacci-Suche. Fibonacci-Suche. Einführung. Rainer Schrader. 24. Mai 2005

Fibonacci-Suche. Informatik I. Fibonacci-Suche. Fibonacci-Suche. Einführung. Rainer Schrader. 24. Mai 2005 Fibonacci-Suche Informatik I Einführung Rainer Schrader Zentrum für Angewandte Informatik Köln 4. Mai 005 Grundidee wie bei der Binärsuche, aber andere Aufteilung Fibonacci-Zahlen: F 0 = 0 F 1 = 1 F m

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

Teil 1: Suchen. Ausgeglichene Bäume B-Bäume Digitale Suchbäume. M.O.Franz, Oktober 2007 Algorithmen und Datenstrukturen - Binärbäume 1-1

Teil 1: Suchen. Ausgeglichene Bäume B-Bäume Digitale Suchbäume. M.O.Franz, Oktober 2007 Algorithmen und Datenstrukturen - Binärbäume 1-1 Teil : Suchen Problemstellung Elementare Suchverfahren Hashverfahren Binäre Suchbäume (Wiederholung aus Prog 2) Bäume: Begriffe, Eigenschaften und Traversierung Binäre Suchbäume Gefädelte Suchbäume Ausgeglichene

Mehr

Praktische Informatik I Algorithmen und Datenstrukturen Wintersemester 2006/07

Praktische Informatik I Algorithmen und Datenstrukturen Wintersemester 2006/07 6 Hashverfahren zum Namen Hash : engl für zerhacken gestreute Speicherung 61 Grundbegriffe Wir unterstellen ein direkt adressierbares Speichermedium mit einer Menge von Adressen, dem Adressraum Die Datensätze

Mehr

Muster. Informatik 3 (Februar 2004) Name: Matrikelnummer: Betrachten Sie den folgenden Suchbaum. A G H J K M N

Muster. Informatik 3 (Februar 2004) Name: Matrikelnummer: Betrachten Sie den folgenden Suchbaum. A G H J K M N 2 von 15 Aufgabe 1: Suchbäume (14 ) Betrachten Sie den folgenden Suchbaum. A B C D E F G H I J K L M N O P R (a) (1 Punkt ) Geben Sie die Höhe des Knotens F an. (b) (1 Punkt ) Geben Sie die Tiefe des Knotens

Mehr

Aufgabensammlung zum Buch Algorithmen und Datenstrukturen (Kapitel 5)

Aufgabensammlung zum Buch Algorithmen und Datenstrukturen (Kapitel 5) Aufgabensammlung zum Buch Algorithmen und Datenstrukturen (Kapitel 5) 1 Aufgaben aus dem Buch Zu folgenden Aufgaben, die direkt aus dem Buch entnommen sind, gibt es an der Universität Freiburg am Lehrstuhl

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 2017 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda: Kürzeste Wege, Heaps, Hashing Heute: Kürzeste Wege: Dijkstra Heaps: Binäre Min-Heaps Hashing:

Mehr

Algorithmen und Datenstrukturen 1

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen 1 9. Vorlesung Peter Stadler Universität Leipzig Institut für Informatik studla@bioinf.uni-leipzig.de Balancierte Binärbäume Der ausgeglichene binäre Suchbaum verursacht

Mehr

Beispiellösungen zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 6

Beispiellösungen zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 6 Robert Elsässer u.v.a. Paderborn, 29. Mai 2008 Beispiellösungen zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 6 Aufgabe 1 (6 Punkte): Zunächst sollte klar sein, daß ein vollständiger Binärer

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 13 (18.6.2014) Binäre Suchbäume IV (Rot Schwarz Bäume) Algorithmen und Komplexität Rot Schwarz Bäume Ziel: Binäre Suchbäume, welche immer

Mehr

Algorithmen und Komplexität Lösungsvorschlag zu Übungsblatt 8

Algorithmen und Komplexität Lösungsvorschlag zu Übungsblatt 8 ETH Zürich Institut für Theoretische Informatik Prof. Dr. Angelika Steger Florian Meier, Ralph Keusch HS 2017 Algorithmen und Komplexität Lösungsvorschlag zu Übungsblatt 8 Lösungsvorschlag zu Aufgabe 1

Mehr

Wörterbücher ihre Implementierung mit AVL Bäumen

Wörterbücher ihre Implementierung mit AVL Bäumen Wörterbücher ihre Implementierung mit AVL Bäumen Wörterbücher - der Dictionar AD Auch in diesem Vorlesungsthema geht es um die Verwaltung von Objekten mit einem Schlüssel. Wir nennen die aus einem Schüssel

Mehr

Übung zur Vorlesung Algorithmische Geometrie

Übung zur Vorlesung Algorithmische Geometrie Übung zur Vorlesung Algorithmische Geometrie Dipl.-Math. Bastian Rieck Arbeitsgruppe Computergraphik und Visualisierung Interdisziplinäres Zentrum für Wissenschaftliches Rechnen 8. Mai 2012 B. Rieck (CoVis)

Mehr

Übung: Algorithmen und Datenstrukturen SS 2007

Übung: Algorithmen und Datenstrukturen SS 2007 Übung: Algorithmen und Datenstrukturen SS 07 Prof. Lengauer Sven Apel, Michael Claÿen, Christoph Zengler, Christof König Blatt 8 Votierung in der Woche vom 25.06.0729.06.07 Aufgabe 22 AVL-Bäume (a) Geben

Mehr

Algorithmen und Datenstrukturen 1

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen 1 7. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@informatik.uni-leipzig.de aufbauend auf den Kursen der letzten Jahre von E. Rahm, G. Heyer,

Mehr