Algorithmen und Datenstrukturen 7. Vorlesung
|
|
- Detlef Heiko Küchler
- vor 6 Jahren
- Abrufe
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
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
MehrNAME, VORNAME: Studiennummer: Matrikel:
TU Ilmenau, Fakultat IA Institut für Theoretische Informatik FG Komplexitätstheorie und Effiziente Algorithmen Prof. Dr. (USA) M. Dietzfelbinger Klausur Algorithmen und Datenstrukturen SS08, Ing.-Inf.
MehrKlausur Algorithmen und Datenstrukturen SS August Arbeitszeit 90 min
TU Ilmenau, Fakultät für Informatik und Automatisierung FG Komplexitätstheorie und Effiziente Algorithmen Univ.-Prof. Dr. M. Dietzfelbinger, Dipl.-Ing. C. Mattern Klausur Algorithmen und Datenstrukturen
MehrVorlesung Informatik 2 Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (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
MehrHashing. Ü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
MehrAlgorithmen 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
MehrAlgorithmen und Datenstrukturen SS09. Foliensatz 12. Michael Brinkmeier. Technische Universität Ilmenau Institut für Theoretische Informatik
Foliensatz 12 Michael Brinkmeier Technische Universität Ilmenau Institut für Theoretische Informatik Sommersemester 2009 TU Ilmenau Seite 1 / 98 Hashing TU Ilmenau Seite 2 / 98 Wörterbücher Sei U ein Universum
Mehr13. Hashing. AVL-Bäume: Frage: Suche, Minimum, Maximum, Nachfolger in O(log n) Einfügen, Löschen in O(log n)
AVL-Bäume: Ausgabe aller Elemente in O(n) Suche, Minimum, Maximum, Nachfolger in O(log n) Einfügen, Löschen in O(log n) Frage: Kann man Einfügen, Löschen und Suchen in O(1) Zeit? 1 Hashing einfache Methode
MehrBeweis: 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
Mehr12. Hashing. Hashing einfache Methode um Wörtebücher zu implementieren, d.h. Hashing unterstützt die Operationen Search, Insert, Delete.
Hashing einfache Methode um Wörtebücher zu implementieren, d.h. Hashing unterstützt die Operationen Search, Insert, Delete. Worst-case Zeit für Search: Θ(n). In der Praxis jedoch sehr gut. Unter gewissen
Mehr4.4.1 Statisches perfektes Hashing. des Bildbereichs {0, 1,..., n 1} der Hashfunktionen und S U, S = m n, eine Menge von Schlüsseln.
4.4 Perfektes Hashing Das Ziel des perfekten Hashings ist es, für eine Schlüsselmenge eine Hashfunktion zu finden, so dass keine Kollisionen auftreten. Die Größe der Hashtabelle soll dabei natürlich möglichst
MehrInformatik 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
MehrRotation. 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
MehrHashing Hashfunktionen Kollisionen Ausblick. Hashverfahren. Dank an: Beate Bollig, TU Dortmund! 1/42. Hashverfahren
Dank an: Beate Bollig, TU Dortmund! 1/42 Hashing Überblick Aufgabe Realisierung Aufgabe Realisierung Anforderungen Wahl einer Hashfunktion mit Verkettung der Überläufer Offene Universelles Hashing 2/42
MehrP ( 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
MehrTeil VII. Hashverfahren
Teil VII Hashverfahren Überblick 1 Hashverfahren: Prinzip 2 Hashfunktionen 3 Kollisionsstrategien 4 Aufwand 5 Hashen in Java Prof. G. Stumme Algorithmen & Datenstrukturen Sommersemester 2009 7 1 Hashverfahren:
MehrVorlesung 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
MehrAlgorithmen 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
MehrHumboldt-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
Mehr3. 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:
Mehr4. Hashverfahren. geg.: Wertebereich D, Schlüsselmenge S = {s 1,..., s n } D. Menge A von Speicheradressen; oft: A = {0,..., m 1}
105 4. Hashverfahren geg.: Wertebereich D, Schlüsselmenge S = {s 1,..., s n } D Menge A von Speicheradressen; oft: A = {0,..., m 1} jedes Speicherverfahren realisiert h : D A mögliche Implementierungen
MehrKollision Hashfunktion Verkettung Offenes Hashing Perfektes Hashing Universelles Hashing Dynamisches Hashing. 4. Hashverfahren
4. Hashverfahren geg.: Wertebereich D, Schlüsselmenge S = {s 1,..., s n } D Menge A von Speicheradressen; oft: A = {0,..., m 1} jedes Speicherverfahren realisiert h : D A mögliche Implementierungen von
MehrCopyright, 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
MehrVorlesung 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
MehrAlgorithmen und Datenstrukturen
Universität Innsbruck Institut für Informatik Zweite Prüfung 16. Oktober 2008 Algorithmen und Datenstrukturen Name: Matrikelnr: Die Prüfung besteht aus 8 Aufgaben. Die verfügbaren Punkte für jede Aufgabe
MehrAlgorithmen und Datenstrukturen 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
MehrGrundlagen: Algorithmen und Datenstrukturen
Grundlagen: Algorithmen und Datenstrukturen Prof. Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester 2010
MehrEs 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
Mehr1. 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
MehrThemen. 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
MehrVorlesung Datenstrukturen
Vorlesung Datenstrukturen Hashing Maike Buchin 2. und 4.5.2017 Motivation häufig werden Daten anhand eines numerischen Schlüssel abgespeichert Beispiele: Studenten der RUB nach Matrikelnummer Kunden einer
MehrÜbungsklausur Algorithmen I
Jun.-Prof. Hofheinz, Jun.-Prof. Meyerhenke (ITI, KIT) 08.06.2015 Übungsklausur Algorithmen I Aufgabe 1. (Algorithm Engineering) Nennen Sie zwei Konzepte, die Algorithm Engineering im Gegensatz zu theoretischer
Mehr(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,
MehrAlgorithmen 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
MehrProgrammiertechnik II
Hash-Tabellen Überblick Hashfunktionen: Abbildung von Schlüsseln auf Zahlen Hashwert: Wert der Hashfunktion Hashtabelle: Symboltabelle, die mit Hashwerten indiziert ist Kollision: Paar von Schlüsseln mit
MehrSuchstrukturen. Ü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
MehrStud.-Nummer: Datenstrukturen & Algorithmen Seite 1
Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1 Aufgabe 1. / 16 P Instruktionen: 1) In dieser Aufgabe sollen Sie nur die Ergebnisse angeben. Diese können Sie direkt bei den Aufgaben notieren. 2) Sofern
MehrInformatik II, SS 2014
Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 7 (21.5.2014) Binäre Suche, Hashtabellen I Algorithmen und Komplexität Abstrakte Datentypen : Dictionary Dictionary: (auch: Maps, assoziative
MehrWiederholung. 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
Mehr1. 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
MehrAlgorithmen & Datenstrukturen. 3. Suchen
Algorithmen & Datenstrukturen 3. Suchen 1 Exponentielle Suche Gesucht wird ein Element mit Schlüssel k. Die exponentielle Suche eignet sich zum Suchen in nach den Schlüsselwerten sortierten Feldern, deren
MehrDatenstrukturen & 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
MehrKap. 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
MehrAlgorithmen 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
MehrInformatik II, SS 2018
Informatik II - SS 2018 (Algorithmen & Datenstrukturen) Vorlesung 6 (7.5.2018) Dictionaries, Binäre Suche, Hashtabellen I / Yannic Maus Algorithmen und Komplexität Abstrakte Datentypen : Dictionary Dictionary:
MehrAlgorithmen 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
MehrDatenstrukturen & 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
MehrVorlesung 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,
MehrAlgorithmen und Datenstrukturen Heapsort
Algorithmen und Datenstrukturen 2 5 Heapsort In diesem Kapitel wird Heapsort, ein weiterer Sortieralgorithmus, vorgestellt. Dieser besitzt wie MERGE-SORT eine Laufzeit von O(n log n), sortiert jedoch das
Mehr14. 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).
MehrContainerDatenstrukturen. 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
MehrMehrwegbä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
Mehr6/23/06. Universelles Hashing. Nutzen des Universellen Hashing. Problem: h fest gewählt es gibt ein S U mit vielen Kollisionen
Universelles Hashing Problem: h fest gewählt es gibt ein S U mit vielen Kollisionen wir können nicht annehmen, daß die Keys gleichverteilt im Universum liegen (z.b. Identifier im Programm) könnte also
MehrVorlesung Informatik 2 Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (11 Hashverfahren: Allgemeiner Rahmen) Prof. Dr. Susanne Albers Das Wörterbuch-Problem (1) Das Wörterbuch-Problem (WBP) kann wie folgt beschrieben
MehrAlgorithmen 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
MehrGrundlagen: Algorithmen und Datenstrukturen
Grundlagen: Algorithmen und Datenstrukturen Prof. Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester 2010
Mehr7 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,
MehrBinä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
Mehr3.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 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
Mehr6. 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
MehrAlgorithmen 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
MehrGrundlagen der Algorithmen und Datenstrukturen Kapitel 4
Grundlagen der Algorithmen und Datenstrukturen Kapitel 4 Christian Scheideler + Helmut Seidl SS 2009 06.05.09 Kapitel 4 1 Wörterbuch-Datenstruktur S: Menge von Elementen Jedes Element e identifiziert über
MehrVorlesung 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
MehrInformatik 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:
MehrHeapsort / 1 A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8]
Heapsort / 1 Heap: Ein Array heißt Heap, falls A [i] A [2i] und A[i] A [2i + 1] (für 2i n bzw. 2i + 1 n) gilt. Beispiel: A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] Heapsort / 2 Darstellung eines Heaps als
MehrADS 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]
MehrAlgorithmen und Datenstrukturen II: Hashverfahren
Algorithmen und Datenstrukturen II: Hashverfahren Prof. Dr. Oliver Braun Letzte Änderung: 10.05.2017 16:21 Algorithmen und Datenstrukturen II: Hashverfahren 1/28 Hashverfahren bisher jeder Datensatz durch
MehrAlgorithmen 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,
MehrWiederholung 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
MehrBemerkung: 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
MehrKapitel 4. Streuen. (h K injektiv) k 1 k 2 K = h(k 1 ) h(k 2 )
Kapitel 4 Streuen Wir behandeln nun Ipleentationen ungeordneter Wörterbücher, in denen die Schlüssel ohne Beachtung ihrer Sortierreihenfolge gespeichert werden dürfen, verlangen aber, dass es sich bei
MehrInformatik 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
MehrInformatik 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
MehrDynamische 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
MehrAlgorithmen und Datenstrukturen II: Hashverfahren
Algorithmen und Datenstrukturen II: Hashverfahren Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 10.05.2017 16:21 Inhaltsverzeichnis Hashverfahren....................................
MehrTechnische 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
MehrUntersuchen Sie, inwiefern sich die folgenden Funktionen für die Verwendung als Hashfunktion eignen. Begründen Sie Ihre Antwort.
Prof. aa Dr. Ir. Joost-Pieter Katoen Christian Dehnert, Friedrich Gretz, Benjamin Kaminski, Thomas Ströder Tutoraufgabe 1 (Güte von Hashfunktionen): Untersuchen Sie, inwiefern sich die folgenden Funktionen
MehrWö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}.
MehrVorlesung 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
MehrAlgorithmen 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
MehrVorlesung Informatik 2 Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (12 Hashverfahren: Verkettung der Überläufer) Prof. Dr. Susanne Albers Möglichkeiten der Kollisionsbehandlung Kollisionsbehandlung: Die Behandlung
MehrInformatik 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:
Mehr13. 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
Mehra) 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
MehrFibonacci-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
MehrAlgorithmen und Datenstrukturen SoSe 2008 in Trier. Henning Fernau Universität Trier
Algorithmen und Datenstrukturen SoSe 2008 in Trier Henning Fernau Universität Trier fernau@uni-trier.de 1 Algorithmen und Datenstrukturen Gesamtübersicht Organisatorisches / Einführung Grundlagen: RAM,
MehrTeil 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
MehrPraktische 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
MehrMuster. 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
MehrAufgabensammlung 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 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:
MehrAlgorithmen 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
MehrBeispiellö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
MehrInformatik 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
MehrAlgorithmen 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
MehrWö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 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 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
MehrAlgorithmen 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