Algorithmen und Datenstrukturen 8. Vorlesung

Größe: px
Ab Seite anzeigen:

Download "Algorithmen und Datenstrukturen 8. Vorlesung"

Transkript

1 Algorithmen und Datenstrukturen 8. Vorlesung Martin Dietzfelbinger 2. Juni 2008 Beispiel eines N-MSB: Mehrweg-Such-Bäume Wurzel FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Mehrweg-Such-Bäume Variante Ein MSB-Knoten wird durch eine aufsteigend sortierte lineare Liste von Binärbaumknoten dargestellt. Jeder Knoten hat Platz für: Schlüssel, (Daten,) Zeiger auf Unterbaum, Zeiger auf nächsten in Liste. Im Knoten ist als Boolescher Wert vermerkt, ob es sich um den Knoten am Listenende handelt. (Im Bild: *.) Dieser Knoten hat zwei Zeiger auf Unterbäume. Elegant: Für die Suche kann man die gewöhnliche Suchprozedur für binäre Suchbäume benutzen. Mehrweg-Such-Bäume T: * 7 16 * * * * 9 * 12 * FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

2 2-3-Bäume Definition Ein Mehrweg-Suchbaum T heißt ein 2-3-Baum, wenn gilt: Beispiele: Leerer 2-3-Baum: 2-3-Baum mit 2 Ebenen: G O Level 1 (a) Jeder Knoten enthält 1 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 T 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 T haben dieselbe Tiefe. 2-3-Baum mit 3 Ebenen: A I L R Level 0 = Blattebene I Level 2 G O T Level 1 A H L M R S U Level 0 = Blattebene NB: Die Ebenen werden von den Blättern her nummeriert. FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD L O T A M R U Kein 2-3-Baum (zu großer Grad). G A O L M R Kein 2-3-Baum (Blätter in verschiedenen Tiefen). 2-3-Bäume: Logarithmische Tiefe Proposition Die Tiefe eines 2-3-Baums mit n Einträgen ist mindestens log 3 (n +1) 1 und höchstens log(n +1) 1. [log 3 x 0.63 log 2 x.] Beweis: Übung. Level h h-1 G O A I L Kein 2-3-Baum (Leerer Unterbaum in Nicht-Blatt). 1 0 FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

3 2-3-Bäume: logarithmische Laufzeit Mitteilung Mit 2-3-Bäumen lassen sich die folgenden Operationen in Zeit O(log n) durchführen (wo n die gegenwärtig im Baum gespeicherte Anzahl von Schlüsseln ist): Suchen Einfügen Löschen split(t,a) (zerlege T in zwei Bäume, einer enthält alle Einträge >a, der andere alle Einträge a. join(t 1,T 2 ) (gegeben zwei Bäume T 1, T 2 mit x 1 <x 2 für alle x 1 in T 1, x 2 in T 2, konstruiere einen Baum T, der alle Schlüssel enthält. Details, Beweise: siehe Literatur Weitere balancierte Bäume... mit logarithmischer Tiefe und logarithmischen Operationszeiten: Bäume: Mehrwegsuchbäume mit 1, 2 oder 3 Schlüsseln pro Knoten (und 2, 3 oder 4 Unterbäumen). Rot-Schwarz-Bäume B-Bäume (für Hintergrundspeicher, Schlüssel, Daten, Zeiger eines Knotens füllen eine Seite im Hintergrundspeicher) Darstellung: siehe Literatur, für B-Bäume auch Vorlesung Datenbank-Implementierungstechniken. FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD oder Hashing Schlüsseltransformationsverfahren... implementieren Wörterbücher... bieten Operationen in (erwarteter) konstanter Zeit Gegeben: Universum U (auch ohne Ordnung) und Wertebereich R. Ziel: Implementiere Wörterbuch oder dynamische (partielle) Abbildung f : S R, wos U endlich Werden sehen: Erreichbar ist Zeit O(1) pro Operation im Durchschnitt unabhängig vom Umfang der Datenstruktur! Gegensatz Bäume: Zeit O(log(n)) pro Operation. FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

4 T Grundansatz: h h: U [m] Speicherung von f : S R in m Plätzen einer Tabelle T[0..m 1]. Aus Schlüssel x U wird ein Index h(x) [m] berechnet. U : Universum der Schlüssel [m] ={0,...,m 1} : Indexbereich für Tabelle T x wird in h(x) umgewandelt/transformiert. Idealvorstellung: Speichere x und f(x) in Zelle T[j], woj = h(x). S U, S = n S U m 1 FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Beispiel: U = {A,...,Z, a,...,z} 3 Nichtleere Wörter aus lateinischen Buchstaben mit mindestens 3 Buchstaben: eine unendliche Menge! h : U {0,...,12} wird definiert durch wo h(c 1 c 2 c r )=num(c 3 )mod13, num(a) = num(a) = 0 num(b) =. num(b). = 1. num(z) = num(z) = 25 h(c 1...c r )=num(c 3 )mod13 x f(x) num(c 3 ) h(x) Januar Februar Maerz April Mai Juni Juli August September Oktober November Dezember FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

5 h(c 1...c r )=num(c 3 )mod13 Kollisionen! j (x, f(x)) 0 (Januar, 31) (Juni, 30) 1 (Februar, 28) 2 (September, 30) 3 (Maerz, 31) (April, 30) (August, 31) (Oktober, 31) 7 8 (Mai, 31) (November, 30) (Juli, 31) 11 (Dezember, 31) 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]. 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 1 = {Februar (1), Maerz (4), Mai (8), Juni (0), Juli (11), Dezember (12) } ist obiges h injektiv, nicht aber auf S 2 = {Januar (0), Mai (8), Juli (11), November (8) }. FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Sprechweise: h perfekt für S : h S injektiv. Falls h perfekt für S: Speichere x bzw. (x, r) in Tabellenplatz T[h(x)]. lookup(x): Berechne j = h(x). (Dies sollte effizient möglich sein.) Prüfe, ob in T[j] 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, fortgeschrittene Konstruktionen.) Fall: h rein zufällig, S = n, S = {x 1,...,x n }. D. h.: Uniformitätsannahme (UF ): Werte h(x 1 ),...,h(x n ) in [m] n sind rein zufällig, d. h. jeder der m n möglichen Wertevektoren (j 1,...,j n ) [m] n kommt mit derselben Wahrscheinlichkeit 1/m n als (h(x 1 ),...,h(x n )) vor. (UF ) tritt z. B. (näherungsweise) ein, wenn U endlich ist, S U rein zufällige Menge ist und h das Universum in gleich große Teile schneidet, d. h. h 1 ({j}) = U m oder = U m,j=0,...,m 1. FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

6 Mit (UF ): Pr(keine Kollision) = = Pr(h ist injektiv auf {x 1,...,x n })= = m m m 1 m m 2 n +1 m =... m m (Für i =1,...,n ist die Wahrscheinlichkeit, dass h(x i ) in [m] {h(x 1 ),...,h(x i 1 )} liegt, genau m i+1 m.)... = 1 ( 1 1 ) ( 1 2 ) m m < e 0 e m 1 e m 2 e n 1 m (denn für x 0ist 1+x<e x ), also... ( 1 n 1 m = e n(n 1) 2m. ) Pr(h injektiv auf S) <e n(n 1) 2m. Wunsch: Linearer Platzverbrauch, also Auslastungsfaktor α = n m nicht kleiner als eine Konstante α 0,z.B.α 1 2 stets. Dann: Pr(h injektiv auf S) e α 0 (n 1) 2. Winzig für nicht ganz kleine n! Fazit: Kollisionen kommen vor. Kollisionsbehandlung ist notwendig. FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Beispiel: T Hashing mit verketteten Listen : 1 1 Juni Februar September Maerz August November Juli Dezember Januar April Oktober Mai Hashing mit verketteten Listen engl.: chained hashing Auch: offenes Hashing, weil man Platz außerhalb von T benutzt. In Array T[0..m 1] werden Zeiger auf die Anfänge von m einfach verketteten linearen Listen L 0,...,L m 1 gespeichert. Liste L j enthält die Schlüssel x aus Behälter ( bucket ) B j = {x S h(x) =j}, gegebenenfalls mit Zusatzinformation, d. h. dem Wert r = f(x). FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

7 Algorithmen(skizzen) empty(m): Erzeugt Array T[0..m 1] mit m NULL-Zeigern und legt h : U [m] fest. Kosten: Θ(m). Beachte: Man wählt h, ohne S zu kennen! lookup(x): Berechne j = h(x); suche Schlüssel x in Liste L j bei T[j]; falls Eintrag (x, r) gefunden: return r; ( erfolgreiche Suche ) sonst: return nicht vorhanden ( erfolglose Suche ) Kosten: O(1 + Zahl der Schlüsselvergleiche x = y? )... falls die Auswertung von h(x) und ein Schlüsselvergleich Zeit O(1) kostet. Kosten: Erfolglose Suche: B j Schlüsselvergleiche. Kosten: Erfolgreiche Suche: Kosten: Zwischen 1 und B j Schlüsselvergleiche, Kosten: Mittlere Anzahl: 1 2 (1 + B j ). FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD insert(x, r): Kosten: Wie bei lookup. Berechne j = h(x); suche Schlüssel x in Liste L j bei T[j]; falls gefunden: ( erfolgreiche Suche ) ersetze Daten bei x durch r; sonst: ( erfolglose Suche: Normalfall! ) füge (x, r) in Liste T[j] ein. delete(x): Kosten: wie bei lookup. Berechne j = h(x); suche Schlüssel x in Liste L j bei T[j]; falls gefunden: ( erfolgreiche Suche, Normalfall! ) lösche Eintrag (x, f(x)); sonst: ( erfolglose Suche ) tue nichts. FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

8 Ziel: Analysiere erwartete Kosten für lookup, insert, delete. Hierfür genügt: Analysiere erwartete Anzahl der Schlüsselvergleiche. Vorausgesetzt: Irgendeine Quelle für Zufall. (Dazu später mehr.) Pr(A): Wahrscheinlichkeit für Ereignis A. E(X): Erwartungswert der Zufallsvariablen X. Abgeschwächte Uniformitätsannahme (UF 2 ) : Szenario: Menge S = {x 1,...,x n } von n Schlüsseln in Struktur gespeichert. Nun: Suche nach y U. α = n m : der (aktuelle) Auslastungsfaktor. Fall y/ S erfolglose Suche. Fall y S erfolgreiche Suche. Wir mitteln über alle Fälle y = x 1,...,y = x n. Für je 2 Schlüssel x z in U gilt: Pr(h(x) =h(z)) 1 m Später: Wann ist diese Annahme erfüllt? Wenn Hashwerte rein zufällig sind:... = 1 m. FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Fall y/ S Erfolglose Suche. Definiere Zufallsgrößen/Zufallsvariable, für alle x, z U: { 1, falls h(x) =h(z), Y x,z := 0, falls h(x) h(z). Erwartete Listenlänge: E( B h(y) )= x S E(Y x,y ) (UF 2) x S 1 m = n m = α. Nach (UF 2 ): E(Y x,z )=Pr(h(x) =h(z)) 1 m. Anzahl der Schlüsselvergleiche/Listenlänge = Aktuelle Länge der bei der Suche zu durchlaufenden Liste = B h(y) = {x S h(x) =h(y)} = x S Y x,y. Dabei ist B h(y) eine Zufallsvariable! Proposition Bei Hashing mit verketteten Listen gilt unter der Annahme (UF 2 ) folgendes: Die erwartete Anzahl von Schlüsselvergleichen bei erfolgloser Suche ist höchstens α. Die erwartet Zeit für eine erfolglose Suche ist O(1 + α). Fazit: Wenn α α 1, α 1 konstant (z.b. α 1 =2), dann ist die erwartete Zeit für eine erfolglose Suche O(1). FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

9 Fall y S Erfolgreiche Suche. Wie viele Schlüsselvergleiche im erwarteten Fall (nach (UF 2 ))? Gemittelt über alle Fälle y = x, x S (jeweils W. 1 n )! Wir nehmen an (keine wesentliche Annahme): Einfügereihenfolge ist x 1,...,x n, Elemente werden beim Einfügen ans Listenende gesetzt. Im Fall y = x i wird y mit genau Y xk,y 1 k i Mittelung von 1 k i Y x k,y über alle i: 1 n 1 i n 1 k i Y xk,x i =1+ 1 n 1 k<i n Y xk,x i. Der Erwartungswert dieser Größe ist höchstens (mit (UF 2 )): 1+ 1 n 1 k<i n ( ) 1 n 1 m =1+1 n 2 m =1+n 1 2m < 1+α 2. Listenelementen verglichen. (In der Liste L h(y), vor oder gleich y.) FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Proposition Bei Hashing mit verketteten Listen gilt unter der Annahme (UF 2 ) folgendes: Die erwartete (mit (UF 2 )) mittlere (über die Einträge x 1,...,x n gemittelte) Anzahl von Schlüsselvergleichen bei erfolgreicher Suche ist höchstens 1+ α 2. Der erwartete Zeitbedarf für eine erfolgreiche Suche ist O(1 + α). Fazit: Wenn α α 1, α 1 konstant (z. B. α 1 =2), dann ist die erwartete Zeit für eine erfolgreiche Suche O(1). Wie erreicht man α α 1 bei wachsender, am Anfang unbekannter, Schlüsselanzahl? Verdoppelungsstrategie empty(m): Anfangs-Tabellengröße m oder empty(): Anfangs-Tabellengröße m 0 (fester Wert) Variable load enthält aktuelle Anzahl von Schlüsseln. empty(m): load 0, insert(x, r) mit x neu: load load +1, delete(x) mit x vorhanden: load load 1. FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

10 Verdoppelungsstrategie (Forts.) Wenn bei insert(x, r) (mit x neu) load den Wert α 1 m überschreitet: Erzeuge neue Tabelle T neu der Größe 2m. Erzeuge neue Hashfunktion h neu : U [2m]. Übertrage Einträge aus alten Listen in Listen zu Tabelle T neu, gemäß neuer Hashfunktion. Dabei Einfügen am Listenanfang ohne Suchen. (Wissen: Alle Schlüssel sind verschieden!) Kosten: O(m) im schlechtesten Fall. Benenne T neu in T und h neu in h um. Satz Sei α 1 fest. Wenn die verwendeten Hashfunktionen (UF 2 ) erfüllen, dann gilt für das skizzierte Verfahren für Hashing mit Listen mit Verdoppelungsstrategie: (a) Die erwartete Anzahl der Schlüsselvergleiche für erfolglose bzw. erfolgreiche Suche sind α 1 bzw. 1+ α 1 2. (b) Die Gesamtkosten für sämtliche Verdopplungen sind durch O(ñ) (schlechtester Fall) beschränkt; dabei ist ñ die maximale Anzahl der jemals gleichzeitig in der Datenstruktur vorhandenen Schlüssel (maximaler Wert in load). (c) Der Gesamtplatzbedarf ist O(ñ). (Analyse der Verdoppelungsstrategie wie bei Stacks.) FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Kriterien für Qualität: Einfache Hashfunktionen 1) Zeit für Auswertung von h(x) (Schnell!) 2) Wahrscheinlichkeit für Kollisionen (unter realistischen Annahmen über Schlüsselmenge S). (Klein, am besten c/m für c konstant.) Für 1) entscheidend: Schlüsselformat. 1. Fall: Schlüssel sind natürliche Zahlen: U N. Divisionsrestmethode: h(x) =x mod m Hinweis: Sehr einfach, recht 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. FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

11 Multiplikationsmethode: U N Idee: Für 0 < ϑ < 1 (ideal: ϑ irrational) h(x) = ((ϑ x) mod1) m. Dabei: (ϑ x) mod1=(ϑ x) (ϑ x). (Gebrochener Anteil von ϑ x.) h(x) = ((ϑ x) mod1) m. ( ) Beispiel: ϑ =Φ 1= ,618...; m = 100. h(10) = ((ϑ 10) mod1) 100 = (6, mod 1) 100 = 0, = 18 h(11) = ((ϑ 11) mod1) 100 = (6, mod 1) 100 =79 ϑ: theta. h(12) = ((ϑ 12) mod1) 100 = (7, mod 1) 100 =41 Man kann zeigen: Mit diesem ϑ werden aufeinanderfolgende Schlüssel (x, x +1,...,x+ q 1) sehr gut in [m] verteilt. FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Diskrete Version der Multiplikationsmethode: U =[2 k ] und m =2 l. h a (x) =(ax mod 2 k ) div 2 k l mit a [2 k ] ungerade und ϑ a/2 k. Auswertung ohne Division (Shifts, Bitmasken sehr effizient): a k Bits x k Bits ax * = 2k Bits 1 h ( x) l Bits 2. Fall: Schlüssel sind Strings/Wörter: U Seq(Σ) Σ: Alphabet endliche nichtleere Menge. Seq(Σ): Menge aller endlichen Folgen von Elementen von Σ: Wörter über Σ. Beispiel: Σ= ASCII-Alphabet = {0, 1} 8 = {0, 1,...,255}. Schlüssel: x =(c 1,...,c r )=c 1...c r, c 1,...,c r Σ. Stets möglich: num :Σ 1 1 {0,..., Σ 1} übersetzt Alphabetzeichen (Buchstaben) in Zahlen. FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

12 Möglich, nicht sehr zu empfehlen: Transformation von Schlüssel x in Zahl ˆx = n(x) als neuen Schlüssel, dann: x h(ˆx). Beispiel: h(c 1...c r )=(num(c 3 )) mod 13, hier ˆx = num(c 3 ) }{{} x x num(c 3 ) h(x) Januar Juni Kollisionen n(x) =n(y) nie auflösbar! Wenn n injektiv: Ineffiziente Auswertung von h(ˆx). Besser: An Schlüsselformat x = (c 1,...,c r ) angepasste Hashfunktionen. Lineare Funktionen über Körper Z p : m = p Primzahl mit p> Σ, also 0 num(c) <p. Wähle Koeffizienten a 1,...,a r {0,...,p 1}. ( r ) h(c 1 c r )= a i num(c i ) mod p. Vorteile: i=1 Rechnung nur mit Zahlen <m 2 (wenn man nach jeder Multiplikation/Addition modulo m reduziert); Sehr effizient; Theoretisch nachweisbares gutes Verhalten, wenn a 1,...,a r aus {0, 1,..., p 1} zufällig gewählt wurden. FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Geschlossenes Hashing... oder offene Adressierung. Speichere alle Schlüssel in Array (Hashtabelle) T[0..m 1]. Speicherort von x nicht nur durch h(x) bestimmt offen. einfach praktisch viel verwendet kein Platz für Zeiger und leere Plätze in Zeiger-Array vermeidet Zeitaufwand für dynamische Erzeugung von Listenelementen schnell: O(1) Zeit (erwartet) für Wörterbuchoperationen. zur Ausführungszeit Einfachstes Verfahren mit Lineares Sondieren ( 1 1 FG KTuEA, TU Ilmenau AuD

13 Einfachstes Verfahren mit Lineares Sondieren ( Einfachstes Verfahren mit Lineares Sondieren ( 1 1 Januar (4) 1 1 Januar Februar (4) (5) Einfachstes Verfahren mit Lineares Sondieren ( Einfachstes Verfahren mit Lineares Sondieren ( 1 1 Januar Februar Maerz (4) (5) (8) 1 1 Maerz April (8) (8)

14 Einfachstes Verfahren mit Lineares Sondieren ( Einfachstes Verfahren mit Lineares Sondieren ( 1 1 Maerz (8) April Mai (8) (12) 1 1 Juni (4) Maerz (8) April (8) Mai (12) Einfachstes Verfahren mit Lineares Sondieren ( Einfachstes Verfahren mit Lineares Sondieren ( 1 1 Juli (2) Juni (4) Maerz (8) April (8) Mai (12) 1 1 Juli (2) Juni (4) Maerz (8) April August (8) (10) Mai (12)

15 Einfachstes Verfahren mit Lineares Sondieren ( Einfachstes Verfahren mit Lineares Sondieren ( 1 1 Juli (2) Juni (4) September (6) Maerz (8) April (8) August (10) Mai (12) 1 1 Juli (2) Juni (4) September (6) Maerz (8) April (8) August (10) Oktober (10) Mai (12) Einfachstes Verfahren mit Lineares Sondieren ( Einfachstes Verfahren mit Lineares Sondieren ( 1 1 November (12) Juli (2) Juni (4) September (6) Maerz (8) April (8) August (10) Oktober (10) Mai (12) 1 1 November (12) Juli (2) Dezember (3) Juni (4) September (6) Maerz April (8) (8) August (10) Oktober (10) Mai (12) FG KTuEA, TU Ilmenau AuD

16 empty(m): Lege leeres Array T[0..m 1] an. Arrayeintrag: (Schlüssel,Wert (in R)) oder leer. Initialisiere alle Plätze T[j] mit leer. Initialisiere load mit 0, maxload mit Wert <m. insert(x, r): j h(x); Finde erstes l in der Folge j, (j +1)modm, (j +2)modm,... mit T[l].key = x oder T[l] = leer. Im Fall T[l].key = x: ( erfolgreiche Suche ) T[l].data r; Im Fall T[l] = leer: ( erfolglose Suche ) Falls load = maxload: Überlaufbehandlung (z. B. Verdopplung von T, Neustart von insert(x, r)); Sonst: T[l] (x, r); load++. lookup(x): j h(x); Finde erstes l in der Folge j, (j +1)modm, (j +2)modm,... mit T[l].key = x oder T[l] = leer. Im Fall T[l].key = x: return T[l].data. ( erfolgreiche Suche ) Im Fall T[l] = leer: return nicht vorhanden. ( erfolglose Suche ) Korrektheit der Suche: Bei lookup(x) werden genau dieselben Zellen von T untersucht wie beim Einfügen von x. Da kein Element bewegt/gelöscht wird, wird auf diese Weise die Zelle, in der x sitzt, wieder erreicht, falls vorhanden oder eine leere Zelle wir müssen nur sicherstellen, dass immer eine leere Zelle vorhanden ist, also load m 1 ist. FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Erinnerung: Große Uniformitätsannahme (UF ): Die Werte h(x 1 ),...,h(x n ) sind rein zufällig. Proposition Bei linearem Sondieren in einer Tabelle der Größe m mit Schlüsselmenge S = {x 1,...,x n } gilt, mit α = n m : Die erwartete (nach (UF )) Anzahl von Schlüsselvergleichen bei erfolgloser Suche nach y/ S ist 1 ( ) (1 α) 2. Die erwartete (nach (UF )) mittlere (über x 1,...,x n ) Anzahl von Schlüsselvergleichen bei erfolgreicher Suche nach y S ist 1 ( 1+ 1 ). 2 1 α Nur von α, nicht von n, m abhängig! FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

17 Lineares Sondieren Anzahl Vergleiche α erfolglos erfolgreich Erwarteter Aufwand ist also O(1), falls α α 0 für eine Konstante α 0 < 1. Erwartete Anzahl von Schlüsselvergleichen bei linearem Sondieren: erfolglose Suche erfolgreiche Suche α 1 2 (1 + 1 (1 α) 2 ) 1 2 ( α ) 0,5 2,5 1,5 0,6 3,625 1,75 0,7 6,06 2,16 0,75 8,5 2,5 0, ,9 50,5 5,5 0,95 200,5 20 FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Ergebnisse für lineares Sondieren: Eine einzelne erfolglose Suche wird z. B. bei zu 90% gefüllter Tabelle schon recht teuer. Bei vielen erfolglosen Suchen in einer nicht veränderlichen Tabelle (anwendungsabhängig!) sind diese Kosten nicht tolerierbar. α 0,6 oder α 0,7 liefert jedoch akzeptable Kosten. Die (über y S) gemittelte Einfüge-/Suchzeit ist dagegen sogar bei 90% gefüllter Tabelle noch erträglich.!!! Lineares Sondieren passt perfekt zu Cache-Architekturen und ist deswegen auch in der Praxis sehr schnell. (Bei einem Cachefehler wird eine ganze Zeile geholt mehrere aufeinanderfolgende Wörter aus T). Verdoppelungsstrategie bei linearem Sondieren: Verdopple die Tabelle, sobald der Auslastungsfaktor α = n/m einen Wert von α 0 übersteigt z.b. α 0 =0,75 oder α 0 =0,8. Empfehlung: Kombiniere lineares Sondieren mit einer guten universellen Hashklasse. Nicht auf die Zufälligkeit von S vertrauen! FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

SS17 Algorithmen und Datenstrukturen 5. Kapitel Hashverfahren

SS17 Algorithmen und Datenstrukturen 5. Kapitel Hashverfahren SS17 Algorithmen und Datenstrukturen 5. Kapitel Hashverfahren Martin Dietzfelbinger Mai 2017 FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS17 Kapitel 5 5.1 Grundbegriffe Gegeben: Universum U (auch

Mehr

Algorithmen und Datenstrukturen 7. Vorlesung

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

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

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

Informatik II, SS 2016

Informatik II, SS 2016 Informatik II - SS 2016 (Algorithmen & Datenstrukturen) Vorlesung 8 (13.5.2016) Hashtabellen I Algorithmen und Komplexität Dictionary mit sortiertem Array Laufzeiten: create: O(1) insert: O(n) find: O(log

Mehr

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

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

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

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

Algorithmen und Datenstrukturen 13. Vorlesung

Algorithmen und Datenstrukturen 13. Vorlesung Algorithmen und Datenstrukturen 3. Vorlesung Karl-Heinz Niggl 27. Juni 2006 Hashing Viele AnwendungendynamischerMengen unterstützennur die Wörterbuchoperationen insert,search,delete. Bsp. Ein Compiler

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

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

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

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

Übersicht. Einfache Suche Binäre Suchbäume Hashing Skip-Lists Mengen Sortieren Order-Statistics. 2 Suchen und Sortieren

Übersicht. Einfache Suche Binäre Suchbäume Hashing Skip-Lists Mengen Sortieren Order-Statistics. 2 Suchen und Sortieren Übersicht 2 Einfache Suche Binäre Suchbäume Skip-Lists Mengen Sortieren Order-Statistics (Folie 103, Seite 46 im Skript) Wie können wir eine partielle Funktion {1,..., n} N effizient speichern? Wie können

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

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

Korollar 191 In einem (a, b)-baum mit n gespeicherten Schlüsseln können die Wörterbuchoperationen in Zeit O(log a n) durchgeführt werden.

Korollar 191 In einem (a, b)-baum mit n gespeicherten Schlüsseln können die Wörterbuchoperationen in Zeit O(log a n) durchgeführt werden. Korollar 191 In einem (a, b)-baum mit n gespeicherten Schlüsseln können die Wörterbuchoperationen in Zeit O(log a n) durchgeführt werden. Bemerkung: Die Wahl von a und b hängt wesentlich von der Anwendung

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

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

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

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

Hashing II. Übersicht. 1 Hashing und Verkettung. 2 Offene Adressierung

Hashing II. Übersicht. 1 Hashing und Verkettung. 2 Offene Adressierung Übersicht Datenstrukturen und Algorithmen Vorlesung 13: 1 Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group http://moves.rwth-aachen.de/teaching/ss-15/dsal/ 2 Effizienz

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

Hashing II. Übersicht. 1 Hashing und Verkettung. 2 Offene Adressierung

Hashing II. Übersicht. 1 Hashing und Verkettung. 2 Offene Adressierung Übersicht Datenstrukturen und Algorithmen Vorlesung 13: 1 Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group https://moves.rwth-aachen.de/teaching/ss-18/dsal/ 2 Effizienz

Mehr

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2013 / Vorlesung 5, Donnerstag, 21.

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2013 / Vorlesung 5, Donnerstag, 21. Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2013 / 2014 Vorlesung 5, Donnerstag, 21. November 2013 (Wie baut man eine Hash Map, Universelles Hashing)

Mehr

EADS 3.3 Gewichtsbalancierte Bäume 95/598 ľernst W. Mayr

EADS 3.3 Gewichtsbalancierte Bäume 95/598 ľernst W. Mayr 3.3 Gewichtsbalancierte Bäume Siehe zu diesem Thema Seite 189ff in Kurt Mehlhorn: Data structures and algorithms 1: Sorting and searching, EATCS Monographs on Theoretical Computer Science, Springer Verlag:

Mehr

Programmiertechnik II

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:

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

Datenstrukturen und Algorithmen. Vorlesung 10

Datenstrukturen und Algorithmen. Vorlesung 10 Datenstrukturen und Algorithmen Vorlesung 10 Hashtabelle als Erinnerung Hashtabellen sind Tabellen (Arrays), wo aber die Elemente nicht von links nach rechts eingefügt werden, wie bei typischen Arrays

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

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

Mehr

Satz 23 In einer Hashtabelle der Größe n mit m Objekten tritt mit Wahrscheinlichkeit

Satz 23 In einer Hashtabelle der Größe n mit m Objekten tritt mit Wahrscheinlichkeit Satz 23 In einer Hashtabelle der Größe n mit m Objekten tritt mit Wahrscheinlichkeit 1 e m(m 1) 2n 1 e m2 2n mindestens eine Kollision auf, wenn für jeden Schlüssel jede Hashposition gleich wahrscheinlich

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

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

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

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

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

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

Algorithmen I. Tutorium 1-4. Sitzung. Dennis Felsing

Algorithmen I. Tutorium 1-4. Sitzung. Dennis Felsing Algorithmen I Tutorium 1-4. Sitzung Dennis Felsing dennis.felsing@student.kit.edu www.stud.uni-karlsruhe.de/~ubcqr/algo 2011-05-09 Überblick 1 Verkettete Listen 2 Unbeschränkte Felder 3 Amortisierte Laufzeitanalyse

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 9 (28.5.2014) Hashtabellen III Algorithmen und Komplexität Offene Adressierung : Zusammenfassung Offene Adressierung: Alle Schlüssel/Werte

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

Informatik II, SS 2018

Informatik II, SS 2018 Informatik II - SS 2018 (Algorithmen & Datenstrukturen) Vorlesung 8 (14.5.2018) Hashtabellen III Algorithmen und Komplexität Hashtabellen mit Chaining Jede Stelle in der Hashtabelle zeigt auf eine verkette

Mehr

Algorithmen und Datenstrukturen SS09

Algorithmen und Datenstrukturen SS09 Foliensatz 9 Michael Brinkmeier Technische Universität Ilmenau Institut für Theoretische Informatik Sommersemester 2009 TU Ilmenau Seite / 63 Wörterbücher TU Ilmenau Seite 2 / 63 Wörterbücher Ein Wörterbuch

Mehr

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Such-Algorithmen für Wörterbücher. Wörterbuch. Sommersemester Dr.

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Such-Algorithmen für Wörterbücher. Wörterbuch. Sommersemester Dr. Programm heute Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 0 Fortgeschrittene Datenstrukturen Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München 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

SS10 Algorithmen und Datenstrukturen 2. Kapitel Fundamentale Datentypen und Datenstrukturen

SS10 Algorithmen und Datenstrukturen 2. Kapitel Fundamentale Datentypen und Datenstrukturen SS10 Algorithmen und Datenstrukturen 2. Kapitel Fundamentale Datentypen und Datenstrukturen Martin Dietzfelbinger April 2010 FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel 2 Datentyp

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

Hashing I. 1 Direkte Adressierung. 2 Grundlagen des Hashings. 3 Kollisionsauflösung durch Verkettung. 4 Hashfunktionen. 5 Offene Adressierung

Hashing I. 1 Direkte Adressierung. 2 Grundlagen des Hashings. 3 Kollisionsauflösung durch Verkettung. 4 Hashfunktionen. 5 Offene Adressierung Übersicht Datenstrukturen und Algorithmen Vorlesung 2: Hashing Prof. Dr. Erika Ábrahám Theorie Hybrider Systeme Informatik 2 http://ths.rwth-aachen.de/teaching/ss-4/ datenstrukturen-und-algorithmen/ Diese

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

Hashing. Überblick Aufgabe Realisierung

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

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

Übungsklausur Algorithmen I

Übungsklausur Algorithmen I Name: Vorname: Matrikelnr.: Tutorium: Jun.-Prof. Hofheinz, Jun.-Prof. Meyerhenke (ITI, KIT) 08.06.2015 Übungsklausur Algorithmen I Aufgabe 1. (Algorithm Engineering) [2 Punkte] Nennen Sie zwei Konzepte,

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

2.7 Bucket-Sort Bucket-Sort ist ein nicht-vergleichsbasiertes Sortierverfahren. Hier können z.b. n Schlüssel aus

2.7 Bucket-Sort Bucket-Sort ist ein nicht-vergleichsbasiertes Sortierverfahren. Hier können z.b. n Schlüssel aus 2.7 Bucket-Sort Bucket-Sort ist ein nicht-vergleichsbasiertes Sortierverfahren. Hier können z.b. n Schlüssel aus {0, 1,..., B 1} d in Zeit O(d(n + B)) sortiert werden, indem sie zuerst gemäß dem letzten

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

Ü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

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

WS18 Algorithmen und Datenstrukturen 1 4. Kapitel Suchbäume

WS18 Algorithmen und Datenstrukturen 1 4. Kapitel Suchbäume WS18 Algorithmen und Datenstrukturen 1 4. Kapitel Suchbäume Martin Dietzfelbinger November 2018 FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen 1 WS18 Kapitel 4 4.1 Binäre Suchbäume Binäre Suchbäume

Mehr

Hashing. Übersicht. 5 Hashing

Hashing. Übersicht. 5 Hashing Übersicht 5 Hashing Hashtabellen Hashing with Chaining Universelles Hashing Hashing with Linear Probing Anpassung der Tabellengröße Perfektes Hashing Diskussion / Alternativen H. Täubig (TUM) GAD SS 14

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

Informatik I 5. Kapitel. Hashverfahren. Hashverfahren. Hashverfahren. Rainer Schrader. 3. Juni Gliederung

Informatik I 5. Kapitel. Hashverfahren. Hashverfahren. Hashverfahren. Rainer Schrader. 3. Juni Gliederung Informatik I 5. Kapitel Rainer Schrader Zentrum für Angewandte Informatik Köln 3. Juni 2008 1 / 86 2 / 86 Gliederung Adressberechnung durch Hashing Hashfunktionen Kollisionsbehandlung Anwendung von Hashfunktionen

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Dr. Michael Brinkmeier Technische Universität Ilmenau Fakultät Informatik und Automatisierung Fachgebiet Automaten und Formale Sprachen 4.7.2007 Dr. Michael Brinkmeier (TU

Mehr

Hashtabellen. Hashverfahren, was ist das eigentlich?

Hashtabellen. Hashverfahren, was ist das eigentlich? Hashverfahren, was ist das eigentlich? Das Hashverfahren ist ein Algorithmus zum Suchen von Datenobjekten in großen Datenmengen. Es basiert auf der Idee, dass eine mathematische Funktion die Position eines

Mehr

Implementierung von Mengen (und Wörterbücher): Alternative zu Suchbäumen

Implementierung von Mengen (und Wörterbücher): Alternative zu Suchbäumen 5.8 HashVerfahren und Anwendungen Implementierung von Mengen (und Wörterbücher): Alternative zu Suchbäumen hash: zerhacken, Hackfleisch Grundidee: Indexierung der Tabelle mit geeignet transformierten Schlüsselwerten

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

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

Satz 172 Jedes vergleichsbasierte Sortierverfahren benötigt im worst-case mindestens n ld n + O(n) Vergleiche und hat damit Laufzeit Ω(n log n).

Satz 172 Jedes vergleichsbasierte Sortierverfahren benötigt im worst-case mindestens n ld n + O(n) Vergleiche und hat damit Laufzeit Ω(n log n). 2.6 Vergleichsbasierte Sortierverfahren Alle bisher betrachteten Sortierverfahren sind vergleichsbasiert, d.h. sie greifen auf Schlüssel k, k (außer in Zuweisungen) nur in Vergleichsoperationen der Form

Mehr

Dictionary Definition

Dictionary Definition Kapitel ADS:IV IV. Datenstrukturen Record Linear List Linked List Stack Queue Priority Queue Dictionary Direct-address Table Hash Function ADS:IV-60 Datenstrukturen POTTHAST 2018 Dictionary Definition

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

ADS: Algorithmen und Datenstrukturen

ADS: Algorithmen und Datenstrukturen ADS: Algorithmen und Datenstrukturen Teil X Peter F. Stadler & Konstantin Klemm Bioinformatics Group, Dept. of Computer Science & Interdisciplinary Center for Bioinformatics, University of Leipzig 13.

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

4. Übung zu Algorithmen I 17. Mai 2017

4. Übung zu Algorithmen I 17. Mai 2017 4. Übung zu Algorithmen I 17. Mai 2017 Björn Kaidel bjoern.kaidel@kit.edu (mit Folien von Julian Arz, Timo Bingmann, Lisa Kohl, Christian Schulz, Sebastian Schlag und Christoph Striecks) Organisatorisches

Mehr

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

14. Hashing. Motivation. Naive Ideen. Bessere Idee? k(s) = s i b i Motivation 14. Hashing Hash Tabellen, Geburtstagsparadoxon, Hashfunktionen, Perfektes und universelles Hashing, Kollisionsauflösung durch Verketten, offenes Hashing, Sondieren [Ottan/Widayer, Kap. 4.1-4.3.2,

Mehr

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

SS11 Algorithmen und Datenstrukturen 4. Kapitel Suchbäume

SS11 Algorithmen und Datenstrukturen 4. Kapitel Suchbäume SS11 Algorithmen und Datenstrukturen 4. Kapitel Suchbäume Martin Dietzfelbinger Mai 2011 FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS11 Kapitel 4 4.1 Binäre Suchbäume Binäre Suchbäume implementieren

Mehr

SS16 Algorithmen und Datenstrukturen 4. Kapitel Suchbäume

SS16 Algorithmen und Datenstrukturen 4. Kapitel Suchbäume SS16 Algorithmen und Datenstrukturen 4. Kapitel Suchbäume Martin Dietzfelbinger April/Mai 2016 FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS16 Kapitel 4 4.1 Binäre Suchbäume Binäre Suchbäume

Mehr

Klausur Algorithmen und Datenstrukturen SS 2017

Klausur Algorithmen und Datenstrukturen SS 2017 Rev. :, 24.07.207 TU Ilmenau, Institut für Theoretische Informatik Univ.-Prof. Dr. Martin Dietzfelbinger Klausur Algorithmen und Datenstrukturen SS 207 26. Juli 207 Arbeitszeit: 50 Minuten Hinweise ()

Mehr

Suchbäume. Suchbäume. Einfügen in Binären Suchbäumen. Suchen in Binären Suchbäumen. Prinzip Suchbaum. Algorithmen und Datenstrukturen

Suchbäume. Suchbäume. Einfügen in Binären Suchbäumen. Suchen in Binären Suchbäumen. Prinzip Suchbaum. Algorithmen und Datenstrukturen Suchbäume Suchbäume Prinzip Suchbaum Der Wert eines Knotens wird als Schlüssel verstanden Knoten kann auch weitere Daten enthalten, die aber hier nicht weiter betrachtet werden Werte der Schlüssel müssen

Mehr

Hashverfahren. (Algorithmen und Datenstrukturen II) Prof. Dr. Oliver Braun. Letzte Änderung: :33. Hashverfahren 1/29

Hashverfahren. (Algorithmen und Datenstrukturen II) Prof. Dr. Oliver Braun. Letzte Änderung: :33. Hashverfahren 1/29 Hashverfahren (Algorithmen und Datenstrukturen II) Prof. Dr. Oliver Braun Letzte Änderung: 19.03.2018 07:33 Hashverfahren 1/29 Hashverfahren bisher jeder Datensatz durch eindeutigen Schlüssel k K gekennzeichnet

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

U h(k 1 ) h(k 4 ) k 1 h(k 3 )

U h(k 1 ) h(k 4 ) k 1 h(k 3 ) 92 Kapitel 8 Hashing Hashing ist ein anderes Vorgehen, das auch ohne Baumstrukturen ein effizientes Suchen ermöglicht. Wie bei Bucketsort ist auch hier eine der grundsätzlichen Eigenschaften, dass Hashing

Mehr

Kap. 5 Hashing. 15./16. VO DAP2 SS /18. Juni 2009

Kap. 5 Hashing. 15./16. VO DAP2 SS /18. Juni 2009 Kap. 5 Hashing nach Übungstest Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 15./16. VO DAP2 SS 2009 16./18. Juni 2009 1 Linux-Kurs 2. Teil Beginn: Di 16.6.

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

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

Teil 1: Suchen. M.O.Franz, Oktober 2007 Algorithmen und Datenstrukturen - Suchen 1-1

Teil 1: Suchen. M.O.Franz, Oktober 2007 Algorithmen und Datenstrukturen - Suchen 1-1 Teil 1: Suchen Problemstellung Elementare Suchverfahren Hashverfahren Idee Hashfunktion Hashverfahren mit Verkettung Offene Hashverfahren Dynamische Hashverfahren Binäre Suchbäume Ausgeglichene Bäume B-Bäume

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

Die mittlere Zeit zum Auffinden eines Elements in einer Hash-Tabelle beträgt, unter realistischen Annahmen, O(1).

Die mittlere Zeit zum Auffinden eines Elements in einer Hash-Tabelle beträgt, unter realistischen Annahmen, O(1). Algorithmen und Datenstrukturen 213 9 Hash-Tabellen Viele Anwendungen erfordern dynamische Mengen, für welche die sog. Wörterbuch-Operationen INSERT, SEARCH und DELETE verfügbar sind. Beispiel: Symboltabelle

Mehr

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen Vorlesung Informatik 2 Algorithmen und Datenstrukturen (13 Offenes Hashing) Prof. Dr. Susanne Albers Hashing: Allgemeiner Rahmen Schlüsselmenge S Universum U aller möglichen Schlüssel Hashfunktion h 0,,m-1

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

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

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

Randomisierte Datenstrukturen

Randomisierte Datenstrukturen Seminar über Algorithmen DozentInnen: Helmut Alt, Claudia Klost Randomisierte Datenstrukturen Ralph Schäfermeier 13. 2. 2007 Das Verwalten von Mengen, so dass ein schneller Zugriff auf deren Elemente gewährleistet

Mehr

SS17 Algorithmen und Datenstrukturen 4. Kapitel Suchbäume

SS17 Algorithmen und Datenstrukturen 4. Kapitel Suchbäume SS17 Algorithmen und Datenstrukturen 4. Kapitel Suchbäume Martin Dietzfelbinger April/Mai 2017 FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS17 Kapitel 4 4.1 Binäre Suchbäume Binäre Suchbäume

Mehr

3. Übung Algorithmen I

3. Übung Algorithmen I INSTITUT FÜR THEORETISCHE INFORMATIK 1 KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft Institut für Theoretische www.kit.edu Informatik Hashtabellen:

Mehr

Ein sortiertes Feld kann in O(log n) durchsucht werden, z.b. mit Binärsuche. Der Algorithmus 1 gibt den Pseudocode der binären Suche an.

Ein sortiertes Feld kann in O(log n) durchsucht werden, z.b. mit Binärsuche. Der Algorithmus 1 gibt den Pseudocode der binären Suche an. 2.5 Suchen Eine Menge S will nach einem Element durchsucht werden. Die Menge S ist statisch und S = n. S ist Teilmenge eines Universums auf dem eine lineare Ordnung definiert ist und soll so gespeichert

Mehr

Kap. 5 Hashing. Linux-Kurs 2. Teil. Überblick. Motivation. 4 Idee von Hashing. Idee von Hashing. Warum soll ich heute hier bleiben? Und wenn nicht?

Kap. 5 Hashing. Linux-Kurs 2. Teil. Überblick. Motivation. 4 Idee von Hashing. Idee von Hashing. Warum soll ich heute hier bleiben? Und wenn nicht? Kap. 5 Hashing Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, T Dortmund nach Übungstest 15./16. VO DAP2 SS 2009 16./18. Juni 2009 Linux-Kurs 2. Teil Beginn: Di 16.6.

Mehr