Algorithmen und Datenstrukturen 13. Vorlesung

Größe: px
Ab Seite anzeigen:

Download "Algorithmen und Datenstrukturen 13. Vorlesung"

Transkript

1 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 verwaltet eine Tabelle für die Bezeichner der betreffenden Programmiersprache. Hashtabellen: Effektive ImplementierungvonWörterbüchern Worst-case Laufzeit für search: Θ(n) Erwartete Laufzeit für search: O() Im folgendenseiu einuniversum vonschlüsseln, K dieteilmenge der gespeicherten Schlüssel und R ein Wertebereich für die eigentlichen Daten (sattelite data). FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Hashing 2 Hashtabellen verallgemeinern gewöhnliche Arrays, verwenden aber im Unterschied zu Arrays das Prinzip der indirekten Adressierung via einer Hashfunktion. Direkte Adressierung ist anwendbar, wennfürjedenschlüssel eine Tabellenposition zur Verfügung steht. Ist jedoch K kleingegenüber U, so stellen Hashtabelleneine effektive Alternative dar, denn derengröße ist proportionalzu K. Idee: Anstatt einen Schlüssel key[x] als Arrayindex zu verwenden, wird der Arrayindex h(key[x]) aus dem Schlüssel via einer Hashfunktion h berechnet. Hashing 3 Problem: Im allgemeinentretenkollisionen auf, d.h. mehrere Schlüssel erhalten via h dieselbe Position (englisch: slot). Wir betrachten zwei Arten der Kollisionsbehandlung: Hashing mit verketteten Listen (chained hashing) Geschlossenes Hashing (open addressing) Variante: perfektes Hashing bei statischem K, d.h. einmal gespeicherte Schlüssel bleiben unverändert. Bei perfektem Hashing beträgt die worst-case Laufzeit für alle Wörterbuchoperationen: O() FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

2 Direktes Adressieren: Hashing 4 Empfehlenswert, wenn U klein ist. O.E. sei U := {0,...,m }. Annahme: Je zwei Elemente der zu implementierenden dynamischen Menge S haben verschiedene Schlüssel. Wir implementieren S als Array T[0..m ], in dem jede Position k auf ein Element x S mit Schlüssel key[x] = k zeigt, oder es gilt T[k] = NIL, falls kein solches Element existiert. Triviale ImplementierungderWörterbuchoperationen, alle mit worst-case Laufzeit O(): Hashing 5 Bsp. Direkte Adressierung im Bild: 4 2 U K h T key satellite data FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Hashing 6 : procedure direct-address-search(t,k) 2: return T[k] : procedure direct-address-insert(t,x) 2: T[key[x]] x : procedure direct-address-delete(t,x) 2: T[key[x]] NIL Bem. Bei manchen Anwendungen kann man die Objekte x (mit Schüssel key[x] und sattelite data) direkt (ohne Zeiger) in der Tabelle speichern ( Platzersparnis). Oft kann man auchkey[x] einsparen (Positionensinddannbelegt oderleer). Hashing 7 Problem bei direkter Adressierung: Ist U sehr groß, so kann man das Allokieren von Array T[0.. U ] unmöglich oder unpraktisch sein: K könnte viel kleiner als U sein ( Platzverschwendung!). Im letzteren Fall eignen sich Hashtabellen: Reduzieren den Speicherplatzbedarf auf Θ( K ) Erwartete Laufzeit pro Wörterbuchoperation: O() Def. Für m N + sei [m] := {0,...,m }. Ansatz: Speicherung von Schüsseln aus U in m Plätzen einer Tabelle T[0..m ]. FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

3 Hashing 8 Def. Eine Hashfunktion (fürhashtabelle T) ist eine Funktion h: U [m]. Ein Wert h(k) heißt Hashwert von k unter h. T 0 U k K k 4 k 5 k 2 k 3 h. h(k ) h(k 4 ). h(k 2 ) = h(k 5 ). h(k 3 ). m Hashing 9 Problem: Zwei Schlüssel könnten denselben Hashwert unter h erhalten ( Kollision). Ideal: Speichere k in berechneter Zelle T[h(k)] und versuche h so zu wählen, daß keine Kollisionen vorkommen. Aber: Im Falle U > m (und das nehmen wir ja an) sind Kollisionen unvermeidbar. Idee: ) Minimiere Kollisionen via Zufall ( Randomisierung) 2) Behandle die verbleibenden Kollisionen geeignet: chained hashing (Hashing mit verketteten Listen) open addressing (geschlossenes Hashing) FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Hashing 0 Chained Hashing: Alle Schlüssel mit demselben Hashwert j werden in einer verketteten Liste verwaltet und T[j] ist ein ZeigeraufderenAnfang. Fallses keine Schlüsselmit Hashwert j gibt, so gilt T[j]=NIL. T U K k k 4 k 5 k 7 k 2 k 3 k 8 k 6 h k k 4 k 5 k 2 k 7 k 3 k 8 k 6 Hashing Bem. Bei chained Hashing ist die Hashtabelle ein Array von Zeigern auf den Anfang von eventuell leeren Listen. Die Prozedur chained-hash-delete(t,x) löscht Objekt x aus der Hashtabelle T. : procedure chained-hash-delete(t,x) 2: Lösche Objekt x aus Liste T[h(key[x])]. Laufzeit: O() bei zweifach verketteten linearen Listen! (Man muß nach Objekt x nicht erst suchen!) FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

4 Hashing 2 : procedure chained-hash-insert(t,x) 2: Füge Objekt x am Anfang von Liste T[h(key[x])] ein. Laufzeit: O() vorausgesetzt, Objekt x befindet sich nicht in T. Dies kann man vorher mittels chained-hash-search testen, freilich nur mit zusätzlichem Zeitaufwand. Frage: Wie hoch ist dieser im Durchschnitt? : procedure chained-hash-search(t,k) 2: Suche nach Objekt mit Schlüssel k in Liste T[h(k)]. Hashing 3 Analyse von chained Hashing: Ziel: Erwartete Laufzeitfüralle Wörterbuchoperationen: O() Genügt: Erwartete Laufzeit von chained-hash-search beträgt O(). Sei T[0..m ] eine Hashtabelle bzgl. Hashfunktion h mit n gespeicherten Elementen. Die Analyse ist inabhängigkeitvom (aktuellen) Auslastungsfaktor α := n m (= durchschnittliche Länge einer verketteten Liste in T). Worst-case Laufzeit: Θ(n) (die Schlüssel der n Elemente von T könnten ja alle denselben Hashwert haben!) FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Hashing 4 Die erwartete Laufzeit hängt wesentlich vonder Verteilungder Hashwerte unter h ab. Hierfür treffen wir die folgende Abgeschwächte Uniformitätsannahme: (UF 2 ) Für alle k l in U gilt: Pr{h(k)=h(l)} m Für j < m bezeichne n j die Länge der Liste T[j]. Also gilt: n=n 0 + n n m Bem. Bei Annahme (UF 2 ) gilt für den Erwartungswert von n j (= erwartete Listenlänge von T[j]): E[n j ] α Weitere Annahme: h ist einfach, d.h. jeder Wert h(k) kann in Zeit O() berechnet werden. Hashing 5 Satz (Chained Hashing). Unter obigen Annahmen gilt: Die erwartete Laufzeit bei erfolgloser Suche ist O( + α). Die erwartete Laufzeit beierfolgreicher Suche ist O(+α). Beweis. Erfolglose Suche nach k / T. Genügt: E[n j ] α Für l [m] definiere dazu die Indikator-Zufallsvariable { falls h(k)=h(l) Y kl := 0 sonst. Dann gilt n h(k) = l T Y kl. Mittels Linearität des Erwartungswertes, Lemma und (UF 2 ) erhalten wir somit: E[n h(k) ] = E[Y kl ] = Pr{h(k)=h(l)} m = α l T l T l T FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

5 Hashing 6 Erfolgreiche Suche BeierfolgreicherSuche nacheinem Objekt x in T mit Schlüssel k in einer Liste T[j] werden plus die Anzahl der nach x in T[j] eingefügten Schlüssel verglichen. Seien x,...,x n die nacheinander in T eingefügten Objekte mit Schlüsseln k,...,k n. Für i,j [m] seien wieder Indikator-Zufallsvariablen definiert: { falls h(ki )=h(k X ij := j ) 0 sonst Die erwartete Anzahl der Schlüsselvergleiche bei erfolgreicher Suche, gemittelt über alle n Elemente, ergibt sich damit nach Linearität des Erwartungswertes, Lemma und (UF 2 ) zu: E [ n n (+ n i= j=i+ Hashing 7 X ij ) ] = n n (+ n i= j=i+ m ) i= j=i+ n m n i= n n (+ n = + E[X ij ]) (n i) = + n m (n2 n(n+) 2 ) = + n 2m = + α 2 2m Damit ist die erwartete Laufzeit bei erfolgreicher Suche: Θ(2 + α 2 2m ) = Θ( + α) FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Hashing 8 Interpretation: Wenn die Hashtabellengröße m zumindest proportionalzuranzahln dergespeichertenelemente ist, d.h. n = O(m), dann gilt: α = n m = O(m) m = O() d.h. die erwartete Laufzeit bei der Suche ist O(). Satz (Wörterbuchoperationen bei chained Hashing). Wenn (UF 2 ) gilt und die Hashtabellengröße proportional zur Anzahl der gespeicherten Elemente ist (oder α c für eine Konstante c), dann beträgt die erwartete Laufzeit von chained Hashing für alle Wörterbuchoperationen nur O(). Hashing 9 Hashfunktionen: Kriterien für gute Hashfuktionen Drei Schematazur Erzeugung guter Hashfunktionen: Divisionsmethode Multiplikationsmethode Universelles Hashing (Randomisierung!) Kriterien für gute Hashfuktionen ) Auswertungszeit von h(k) 2) Wahrscheinlichkeit für Kollisionen (unter realistischen Annahmen über die Schlüsselmenge U) Für ) entscheidend: Schlüsselformat FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

6 Hashing 20 Bsp. U = {A,...,Z,a,...,z} 3 Nichtleere Wörter mit mindestens 3 Buchstaben: unendlich! h: U {0,...,2} wird definiert durch wobei h(c c 2 c r ) = num(c 3 ) mod 3 num(a) = num(a) = 0 num(b) = num(b) =.. num(z) = num(z) = 25 Hashing 2 Es war: h(c c 2 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 FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Hashing 22 Bsp. Chained Hashing T : 0: : 2: 3: 4: 5: 6: 7: 8: 9: 0: : 2: Juni Februar September Maerz August November Juli Dezember Januar April Oktober Mai.Fall U N Hashing 23 Divisionsmethode: h(k) = k mod m Vorteile: Sehr einfach, effizient. Nachteile: Bei strukturierten Schlüsselmengen (z.b. aus Strings übersetzte Schlüssel) erhöhtes Kollisionsrisiko Relativ sicher nur für Primzahlen m. Vorsicht: Falls m = 2 p, ist h(k) der Binärwert der p lowerorder Bits von k. Solange man nichts über deren Verteilung weiß, sollte h(k) von möglichst vielen Bits von k abhängen! Oft gute Wahl: m als Primzahl mit m 2 p 20. FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

7 Hashing 24 Multiplikationsmethode: U = {0,,...,m } Idee: Für 0 < ϑ < ( theta ) h(k) = (ϑ k mod ) m wobei ϑ k mod = ϑ k ϑ k = Nachkommastellenvonϑ k Bsp. ϑ := φ = und m = 00 h(00) = (ϑ 00 mod ) 00 = (6, mod ) 00 = 80 h(0) = (ϑ 0 mod ) 00 = (62, mod ) 00 = 42 Hashing 25 Bem. Mitdiesem ϑ (nachknuth) werdenaufeinanderfolgende Schlüssel (k, k +,...,k+q ) sehr gut in [m] verteilt. Diskrete Version der Multiplikationsmethode: U = [2 k ], m = 2 l. h(x) = (a x mod 2 k )div2 k l mit ungeradem a und ϑ a/2 k. Sehr effizient auswertbar ohne Division: a k Bits x k Bits ax * = 2k Bits h ( x) l Bits FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Hashing 26 2.Fall U Seq(Σ) = Strings über einem Alphabet Σ. Bsp. ASCII-Zeichensatz ={0,} 8 ={0,,...,255} Schlüssel: k = c...c r mit Buchstaben c,...,c r Σ. Stets möglich: Codierung der Buchstaben als Zahlen num: Σ {0,..., Σ } und damit Codierung der Schlüssel als Zahlen: num: Seq(Σ) Zahldarstellungen bzgl Basis Σ mit num(c...c r ) := num(c )...num(c r ). Hashing 27 Möglich, nicht sehr zu empfehlen: x ˆx h(ˆx). Bsp. h(c }...c {{} r ) = num(c 3 ) mod 3, wobei ˆx = num(c 3 ) x x num(c 3 ) h(x) Januar 3 0 Februar Juni 3 0 Juli Nachteil: Kollisionen ˆx = ŷ sind nicht auflösbar. Besser: an Schlüsselformat angepasste Hashfunktion! FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

8 Hashing 28 Lineare Funktionen über Körper Z p ( Z modulo pz ): 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 Theoretisch nachweisbares gutes Verhalten, wenn a,...,a r aus {0,,...,p } zufällig gewählt wurden. Qualitätskriterien: Hashing 29 ) Zeit für Auswertung von h(x) 2) Wahrscheinlichkeit für Kollisionen ohne Annahmen über die Schlüsselmenge S 3) Effizientes Generieren einer neuen Hashfunktion ( Verdoppelungsstrategie) 4) Platzbedarf für die Speicherung von h (Programm, Parameter) FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Universelles Hashing: Hashing 30 Erinnerung: Bei jeder fest gewählten Hashfunktion kann die worst-case Laufzeit Θ(n) eintreten. Ausweg: Man wählt zufällig eine Fkt. aus einer geeigneten Klasse vonhashfunktion, unabhängig vonderzuspeichernden Schlüsselmenge. Def. Eine endliche Menge H von Hashfunktionen, d.h. H {h h: U [m]}, heißt universell, falls für beliebige Schlüssel k, l U mit k l gilt: {h H h(k)=h(l)} H m Hashing 3 Satz (Universelles Chained Hashing). Sei h H für eine universelle Hashklasse H zur Speicherung von n Schlüsseln in einer Hashtabelle T der Größe m zufällig gewählt. Dann gilt: Die erwartete Laufzeit für chained Hashing bei erfolgloser Suche ist O(α). Die erwartete Laufzeit für chained Hashing bei erfolgreicher Suche ist O( + α). Beweis. Genügt: Bestimmung von E[n h(k) ]. Definiere dazu für jedes Paar k, l [m] mit k l die Indikator-Zufallsvariable { falls h(k)=h(l) X kl := 0 sonst. FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

9 Hashing 32 Nach Vorauss., Lemma gilt: E[X kl ]=Pr{h(k)=h(l)} m. Nun definiere für k [m] Zufallsvariable Y k, die die Anzahl der l k mit h(k)=h(l) mißt. Also gilt: m E[Y k ] = E[ l T l k X kl ] = l T l k E[Y kl ] l T l k k / T Dann gilt n h(k) = Y k und {l T : l k} =n. = E[n h(k) ] = E[Y k ] n m =α k T Dann gilt n h(k) = Y k + und {l T : l k} =n. = E[n h(k) ] = E[Y k ] + n m + < + α Hashing 33 Satz (Wörterbuch bei universellem chained Hashing). Bei universellem chained Hashing bzgl einer Hashtabelle der Größembeträgtdieerwartete Laufzeit fürn Wörterbuchoperationen mit O(m) insert-operationen nur O(n). Beweis. Nach Annahme gilt n = O(m) und somit α = O(). Nach Satz beträgt damit die erwartete Laufzeit jeder Wörterbuchoperation O(). Aus der Linearität des Erwartungswertes folgt damit die Behauptung des Satzes. FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Hashing 34 Bsp. einer universellen Hashklasse H: Betrachte den Restklassenkörper Z p (Z modulo pz) für eine Primzahl p > m. Es gilt Z p = {0,,...,p }. Nun definiere zu jedem Paar a Z + p und b Z p eine Hashfunktion h a,b wie folgt: h a,b (k) := ((a k + b) mod p)mod m Satz (Universelle Hashklasse). Die Menge H p,m := {h a,b a Z + p,b Z p } ist eine universelle Hashklasse. Beweis. Zahlentheorie Hashing 35 Geschlossenes Hashing oder open addressing : Ansatz: Speichere alle Schlüssel in Array A[0..m ] einfach praktisch viel verwendet kein Platz für Zeiger und leere Plätze in Zeiger-Array vermeidet Zeitaufwand für dynamische Erzeugung von Listenelementen Bei open addressing gibt es für jeden Schlüssel k U eine Sondierungsfolge h(k,0),h(k,),...,h(k, m ) in [m]. FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

10 Hashing 36 Beim EinfügenvonObjektxmit Schlüsselk undbeim Suchen nach einem Objekt mit Schlüssel k werden die Zellen der Hashtabelle T in dieser Reihenfolge untersucht bis eine leere Zelle oder der Eintrag k gefunden wird. Die bei openaddressingbetrachtetenhashfunktionen h sind also von der Gestalt h: U [m] [m]. Damit jede Zelle erreicht wird, fordert man: h(k,0),h(k,),...,h(k, m ) ist Permutation von [m]. Wennmindestens eine Zelle in T leer ist, dann endet also jede erfolglose Suche in einer leeren Zelle. Hashing 37 Problem: Beim Suchen nach einem Objekt mit Schlüssel k wird dieselbe Sondierungsfolge wie beim Einfügen verwendet. Daherkanndie Suche erfolglosenden (mantrifft aufeine leere Zelle), obwohl das Objekt in der Tabelle vorhanden ist. Lösung: Mandarfbeim Löscheneines Objektes die Zelle nicht auf NIL setzen, sondern nur den Status auf deleted. Beim Einfügen muß man lediglich Zellen mit Status deleted wie leere Zellen behandeln. Nachteil: Erwartete Laufzeit beim Suchenkann nichtmehrin Abhängigkeit vom Auslastungsfaktor α analysiert werden. Rest: nächste Woche! (nun im Netz) FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Hashing 38 O.E. besitze im folgendenjedertabelleneintragxdiekomponenten key[x] und status[x] {NIL,full,deleted}, also keine sattelite data. : procedure open-address-search(t,k) 2: i 0 3: repeat 4: j h(k, i) 5: if key[t[j]]=k then return j k found 6: else i i + 7: until status[t[j]]=nil oder i=m 8: return NIL k not found Hashing 39 : procedure open-address-insert(t,k) 2: i 0 3: repeat 4: j h(k, i) 5: if status[t[j]] full then 6: key[t[j]] k 7: status[t[j]] full 8: return j 9: else i i + 0: until i=m : return hash table overflow Bem. Bei overflow besser: Verdoppelungsstrategie! FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

11 Hashing 40 : procedure open-address-delete(t,k) 2: i 0 3: repeat 4: j h(k, i) 5: if (status[t[j]]=full key[t[j]]=k) then 6: status[t[j]] deleted 7: if status[t[j]]=nil then 8: return error not found! 9: else i i + 0: until i=m Hashing 4 Def. Gegeben eine gewöhnliche Hashfunktion h : U [m], so verwendet geschlossenes Hashing mit linearem Sondieren (linear probing) die Hashfunktion h: U [m] [m]: h(k, i) := (h (k) + i) mod m Bem. Zueinem Schlüsselk gehörthierdiesondierungsfolge: h (k),h (k) +,...,m,0,...,h (k) Bem. Es gibt nur m verschiedene Sondierungsfolgen! Die GefahrderprimärenClusterbildung (lange Abschnitte belegter Slots) verschlechtert die erwartete Laufzeit. FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Hashing 42 Def. Gegeben eine gewöhnliche Hashfunktion h : U [m] sowie Konstanten c und c 2 0, so verwendet geschlossenes Hashing mit quadratischem Sondieren (quadratic probing) die Hashfunktion h: U [m] [m]: h(k, i) := (h (k) + c i + c 2 i 2 ) mod m Bem. Zu k U gehört eine Sondierungsfolge, die mit h (k) beginnt; alle weiteren Sondierungspositionen ergeben sich aus der vorangehenden durch einen Offset (modulo m), der quadratisch von i abhängt. Bem. Da jede solche Sondierungsfolge eine Permutation von [m] sein soll, muß man c,c 2 sowie m geeignet wählen! Hashing 43 Variante: Alternierendes quadratisches Sondieren h(k, i) = ( h (k) + i 2 2 ( ) i+) mod m Fakt. Ist m=4j+3 eine Primzahl, so ist jede Sondierungsfolge h(k,0),h(k,),...,h(k, m ) eine Permutation von [m]. Beweis. Elementare Zahlentheorie. Bsp. m=9 und h (k)=0 liefert die Sondierungsfolge: 0,,8,4,5,9,0,6,3,6,3,7,2,,8,7,2,5,4 FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

12 Hashing 44 Bem. Beim quadratischen Sondieren existieren ebenfalls nur m verschiedene Sondierungsfolgen! Denn es gilt: h(k,0)=h(k 2,0) = h(k,i)=h(k 2,i) für i < m. Bem. Quadratisches Sondieren arbeitet besser als lineares Sondieren und verhält sich der Erfahrung nach sehr gut (wenn h gut verteilend und der Auslastungsfaktor 0,9 ist.) Trotzdem besteht die Gefahr derprimärenclusterbildung, aber nur in abgemilderter Form. Hashing 45 Def. Gegeben zwei gewöhnliche Hashfunktionen h,h 2 : U [m], so verwendet das (geschlossene) Doppel-Hashing die Hashfunktion h: U [m] [m]: h(k, i) := (h (k) + i h 2 (k)) mod m Bem. Zu k U gehört eine Sondierungsfolge, die mit h (k) beginnt; alle weiteren Sondierungspositionen ergeben sich aus der vorangehenden durch den Offset h 2 (k), modulo m. Bem. Beim Doppel-Hashing existieren Θ(m 2 ) verschiedene Sondierungsfolgen!, denn jedes mögliche Paar (h (k),h 2 (k)) lieferteine unterschiedliche Sondierungsfolge. Doppel-Hashing verhält sich daher fast wie das ideale uniforme Hashing. FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Hashing 46 Fakt. Ist m eine Primzahl, so ist bei folgender Variante des Doppel-Hashings mit Bild(h 2 ) [m ] h(k, i) := (h (k) + i ( + h 2 (k))) mod m jede Sondierungsfolge h(k,0),h(k,),...,h(k, m ) eine Permutation von [m]. Beweis. Sei z := +h 2 (k) und gelte h(k, i) = h(k, j). = (h (k) + i z) mod m = (h (k) + j z) mod m Also gilt (j i) z 0 (mod m), d.h. m teilt (j i) z. Da m Primzahl ist und z < m (nach Vorauss.), teilt m die Zahl j i. Also ist i = j, da 0 i,j < m. Einschub: W-Theorie Def. Sei (Pr{ },S) ein W-Raum und A,B Ereignisse von S mit Pr{B} =0. Dann definiert Pr{A B} := Pr{A B} Pr{B} die Wahrscheinlichkeit von A unter der Bedingung B. Folg (Durchschnitt und bedingte Wahrscheinlichkeit). Für Ereignisse A,...,A n, n 2 von S gilt: Pr{ n i= A j } = Pr{A } Pr{A 2 A } Pr{A 3 A A 2 } Pr{A n A A 2... A n } FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

13 Einschub: W-Theorie 2 Beweis. Für i = 2,...,n sei B i :=A i A i 2... A. n = Pr{A } Pr{A i B i } Def n = Pr{A } i=2 Def = Pr{A } i=2 n i=2 Pr{A i B i } Pr{B i } Pr{B i+ } Pr{B i } = Pr{A } Pr{B n+} Pr{B 2 } = Pr{B n+ } Fertig, denn B n+ =A n... A und Pr{A } n Pr{A i B i } ist die linke Seite der Behauptung. i=2 Hashing 47 Analyse von geschlossenem Hashing: Ziel: Erwartete Laufzeit bei der Suche nach einem Schlüssel k ineinerhashtabelle T[..m] mit n gespeicherten Schlüsseln und gegebener Hashfunktion h: U [m] [m]. Dies erfolgt ) in Abhängigkeit vom Auslastungsfaktor α := n m 2) unter der Annahme des uniformen Hashings: (UH) Jeder Schlüssel wird von h unabhängig und gleichwahrscheinlich auf eine Tabellenposition verteilt. Konsequenz: Jede der m! möglichen Sondierungsfolgen h(k,0),h(k,),...,h(k, m ) fürdas Einfügenvonk oder Suchen nach k ist gleichwahrscheinlich. FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Hashing 48 Satz (Open Addressing bei erfolgloser Suche). Sei h: U [m] [m] eine Hashfunktion zur Speicherung von n Schlüsseln in einer Tabelle T[..m]. Ferner gelte (UH). Dann ist die erwartete Laufzeit für open addressing mit α < bei erfolgloser Suche α. Beweis. Bei erfolglosersuche nacheinem Schüsselk enthält jede gemäßsondierungsfolge besuchte Zelle, bis auf die letzte (diese ist leer), einen Schlüssel k. SeiX eine Zufallsvariable, diedieanzahlderbesuchtenzellen mißt. Ferner sei A i, i, das Ereignis, daß die i-te besuchte Zelle belegt ist. Hashing 49 Dann gilt: Pr{X i}=pr{a A 2... A i } Nach Einschub zu W-Theorie gilt: A j } = Pr{A } Pr{A 2 A } Pr{A 3 A A 2 } Pr{ i j= Nun gilt: Pr{A i A A 2... A i 2 } Pr{A }= n m Pr{A j A A 2... A j }= n j+ m j+ für j = 2,...i. = Pr{X i} = n m n m n i+2 m i+2 ( n m )i = E[X] = Pr{X i} α i = α i= i= FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

14 Hashing 50 Folg (Einfügen bei open Addressing). Unter der Annahme (UH) ist die erwartete Laufzeit für das Einfügen eines Schlüssels bei open addressing mit Auslastungsfaktor α höchstens α. Beweis. Das Einfügeneines Schlüssels k ist nur möglich, falls α < gilt. Es erfordert eine gemäß Sondierungsfolge erfolglose Suche, gefolgt von einer Plazierung von k in die erste leere Zelle. Also ist die erwartete Anzahl von Sondierungen (nach Satz) höchstens α. Hashing 5 Satz (Open Addressing bei erfolgreicher Suche). Sei h: U [m] [m] eine Hashfunktion zur Speicherung von n Schlüsseln in einer Tabelle T[..m]. Ferner gelte (UH). Dann ist erwartete Laufzeit für open addressing mit α < bei erfolgreicher Suche höchstens α ln α. Beweis. Eine erfolgreiche Suche nach einem Schüssel k folgt derselben Sondierungsfolge wie beim Einfügen von k. Wurde also k als (i + )-ter Schlüssel in die Tabelle eingefügt, so ist nach Folgerung die erwartete Anzahl von dazu erforderlichen Sondierungen höchstens: α = m m i m i FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Hashing 52 Mittelung über alle n Schlüssel in der Tabelle ergibt für die erwartete Anzahl von Sondierungen bei erfolgreicher Suche: m m i = m n n m i i=0 i=0 n n = α α m k k=m n m m n x dx Umnumerierung Riemannintegral = α (lnm ln(m n)) Fundamental., ln x= x = α ln m m n = α ln α Funktionalgleichung FG KTuEA, TU Ilmenau AuD

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

Algorithmen und Datenstrukturen 8. Vorlesung

Algorithmen und Datenstrukturen 8. Vorlesung Algorithmen und Datenstrukturen 8. Vorlesung Martin Dietzfelbinger 2. Juni 2008 Beispiel eines N-MSB: Mehrweg-Such-Bäume Wurzel 27 39 7 16 29 35 36 38 45 1 2 4 10 11 13 21 25 41 48 50 9 12 FG KTuEA, TU

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

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

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

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

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

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

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

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

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

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

Eine universelle Klasse von Hash-Funktionen

Eine universelle Klasse von Hash-Funktionen Eine universelle Klasse von Hash-Funktionen Annahmen: U = p, mit Primzahl p und U = {0,, p-1} Seien a {1,, p-1} und b {0,, p-1} Definiere wie folgt Satz: Die Menge ist eine universelle Klasse von Hash-Funktionen..

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

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

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

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

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

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

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

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

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

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

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

Ü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

13. Hashing. Sortierte Ausgabe aller Elemente in O(n) Zeit Suche, Minimum, Maximum, Nachfolger in O(log n) Zeit Einfügen, Löschen in O(log n) Zeit

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

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

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

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

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

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

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

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

Teil VII. Hashverfahren

Teil VII. Hashverfahren Teil VII Hashverfahren Überblick 1 Hashverfahren: Prinzip 2 Hashfunktionen 3 Kollisionsstrategien 4 Aufwand 5 Hashen in Java Prof. G. Stumme Algorithmen & Datenstrukturen Sommersemester 2009 7 1 Hashverfahren:

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen Wintersemester 2015/16 12. Vorlesung Hashing Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I 2 Übungen Begründen Sie grundsätzlich alle Behauptungen außer die Aufgabe

Mehr

Algorithmen 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

Datenstrukturen und Algorithmen. Vorlesung 9

Datenstrukturen und Algorithmen. Vorlesung 9 Datenstrukturen und Algorithmen Vorlesung 9 Inhaltsverzeichnis Vorige Woche: ADT Deque ADT Prioritätsschlange Binomial-Heap Heute betrachten wir: Aufgaben Hashtabellen Aufgabe I Rot-Schwarz Kartenspiel:

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

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

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

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

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

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

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

Ü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

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

Untersuchen Sie, inwiefern sich die folgenden Funktionen für die Verwendung als Hashfunktion eignen. Begründen Sie Ihre Antwort. Prof. aa Dr. Ir. Joost-Pieter Katoen Christian Dehnert, Friedrich Gretz, Benjamin Kaminski, Thomas Ströder Tutoraufgabe 1 (Güte von Hashfunktionen): Untersuchen Sie, inwiefern sich die folgenden Funktionen

Mehr

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

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

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

Mehr

Informatik II, SS 2014

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

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

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

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

4. Hashverfahren. geg.: Wertebereich D, Schlüsselmenge S = {s 1,..., s n } D. Menge A von Speicheradressen; oft: A = {0,..., m 1} 105 4. Hashverfahren geg.: Wertebereich D, Schlüsselmenge S = {s 1,..., s n } D Menge A von Speicheradressen; oft: A = {0,..., m 1} jedes Speicherverfahren realisiert h : D A mögliche Implementierungen

Mehr

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

Kollision Hashfunktion Verkettung Offenes Hashing Perfektes Hashing Universelles Hashing Dynamisches Hashing. 4. Hashverfahren 4. Hashverfahren geg.: Wertebereich D, Schlüsselmenge S = {s 1,..., s n } D Menge A von Speicheradressen; oft: A = {0,..., m 1} jedes Speicherverfahren realisiert h : D A mögliche Implementierungen von

Mehr

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

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

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

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

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

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

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

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

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

Hashverfahren I. Algorithmen und Datenstrukturen 251 DATABASE SYSTEMS GROUP

Hashverfahren I. Algorithmen und Datenstrukturen 251 DATABASE SYSTEMS GROUP Hashverfahren I Bisher: Suchen mit Hilfe von Schlüsselvergleichen Jetzt: Stattdessen Adressberechnung Auswertung einer Funktion (Hash- oder Adressfunktion) Vorteil: Suche erfolgt weitgehend unabhängig

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

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

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

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

Algorithmen I. Prof. Peter Sanders Institut für Theoretische Informatik Web: https://crypto.iti.kit.edu/index.php?

Algorithmen I. Prof. Peter Sanders Institut für Theoretische Informatik Web: https://crypto.iti.kit.edu/index.php? Algorithmen I Prof. Peter Sanders 16.05.2017 Institut für Theoretische Informatik Web: https://crypto.iti.kit.edu/index.php?id=799 (Folien von Peter Sanders) KIT Institut für Theoretische Informatik 1

Mehr

Hashing (Streuspeicherung)

Hashing (Streuspeicherung) Hashing (Streuspeicherung) to hash völlig durcheinander bringen. Paradoxerweise hilft das, Dinge wiederzunden KIT Institut für Theoretische Informatik 1 Erinnerung VL vom 02.05.2016 Letztes Mal: Heute:

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

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

17. Hashing. Hash Tabellen, Geburtstagsparadoxon, Hashfunktionen, Kollisionsauflösung durch Verketten, offenes Hashing, Sondieren

17. Hashing. Hash Tabellen, Geburtstagsparadoxon, Hashfunktionen, Kollisionsauflösung durch Verketten, offenes Hashing, Sondieren 336 17. Hashing Hash Tabellen, Geburtstagsparadoxon, Hashfunktionen, Kollisionsauflösung durch Verketten, offenes Hashing, Sondieren Motivation 337 Ziel: Tabelle aller n Studenten dieser Vorlesung Anforderung:

Mehr

INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS

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

Mehr

Multiplikationsmethode. Informatik I. goldener Schnitt. Der goldene Schnitt. Einführung. Rainer Schrader. 30. Mai Konstruktionsmethode

Multiplikationsmethode. Informatik I. goldener Schnitt. Der goldene Schnitt. Einführung. Rainer Schrader. 30. Mai Konstruktionsmethode Multiplikationsethode Inforatik I Einführung Rainer Schrader Zentru für Angewandte Inforatik Köln 30. Mai 005 zu (): Irrationale Zahlen sind eine gute Wahl. Erinnerung: Φ = 1 + 5 = 1.6180339887... ˆΦ =

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

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

Ü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

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

Erinnerung VL vom

Erinnerung VL vom Erinnerung VL vom 04.05.2016 Hashtabellen (mit verketteten Listen) Datenstruktur für Mengen mit schnellen Wörterbuchoperationen Schnelles Wiedernden von Elementen durch möglichst chaotische Anordnung im

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

Übersicht. Datenstrukturen und Algorithmen. Einführung (II) Einführung (I) Vorlesung 12: Hashing I (K11) Counting Sort. Joost-Pieter Katoen

Übersicht. Datenstrukturen und Algorithmen. Einführung (II) Einführung (I) Vorlesung 12: Hashing I (K11) Counting Sort. Joost-Pieter Katoen Übersicht Datenstrukturen und Algorithen Vorlesung 2: (K) Joost-Pieter Katoen Lehrstuhl für Inforatik 2 Software Modeling and Verification Group https://oves.rwth-aachen.de/teaching/ss-8/dsal/ 4. Juni

Mehr

Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen Datenstrukturen und Algorithmen VO 708.031 29.11.2012 elmar.rueckert@igi.tugraz.at 1 WH: Untere Schranke für SorGeren Die bisher betrachteten schnellen Sor$eralgorithmen (MergeSort, HeapSort, QuickSort)

Mehr

Grundlagen: Algorithmen und Datenstrukturen

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

Mehr

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

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

Mehr

Datenstrukturen & Algorithmen Lösungen zu Blatt 5 FS 14

Datenstrukturen & Algorithmen Lösungen zu Blatt 5 FS 14 Eidgenössische Technische Hochschule Zürich Ecole polytechnique fédérale de Zurich Politecnico federale di Zurigo Federal Institute of Technology at Zurich Institut für Theoretische Informatik 26. März

Mehr

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

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen Wintersemester 013/14 7. Vorlesung Zufall! Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Ein Experiment Ein Franke und ein Münchner gehen (unabhängig voneinander)

Mehr

Übersicht. 1 Einführung. 2 Suchen und Sortieren. 3 Graphalgorithmen. 4 Algorithmische Geometrie. 5 Textalgorithmen. 6 Paradigmen

Übersicht. 1 Einführung. 2 Suchen und Sortieren. 3 Graphalgorithmen. 4 Algorithmische Geometrie. 5 Textalgorithmen. 6 Paradigmen Übersicht 1 Einführung 2 Suchen und Sortieren 3 Graphalgorithmen 4 Algorithmische Geometrie 5 6 Paradigmen Übersicht 5 Editdistanz (Folie 446, Seite 83 im Skript) Eingabe: Zwei Strings v und w Frage: Kommt

Mehr

Hashing. Algorithmen und Datenstrukturen II 1

Hashing. Algorithmen und Datenstrukturen II 1 Hashing Algorithmen und Datenstrukturen II 1 Einführendes Beispiel Ein Pizza-Lieferservice in Bielefeld speichert die Daten seiner Kunden: Name, Vorname, Adresse und Telefonnummer Wenn ein Kunde seine

Mehr

Algorithmen und Datenstrukturen II

Algorithmen und Datenstrukturen II Syntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten Objektori Algorithmen und Datenstrukturen II AG Praktische Informatik Technische Fakultät

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

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen Wintersemester 2014/15 7. Vorlesung Zufall! Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I 2 Inhaltsverzeichnis Ein Zufallsexperiment InsertionSort: erwartete bzw.

Mehr

Algorithmen und Datenstrukturen 8. Vorlesung

Algorithmen und Datenstrukturen 8. Vorlesung lgorithmen und Datenstrukturen. Vorlesung Karl-Heinz Niggl. Mai 6 FG KTuE, TU Ilmenau ud..6 Untere Schranke und Sortieren in Linearzeit etrachtetenverschiedene lgorithmen, die n Werte aus einer totalen

Mehr

Erinnerung VL vom

Erinnerung VL vom Erinnerung VL vom 09.05.2016 Analyse von Hashtabellen mit verketteten Listen Erwartete Laufzeit O(1) bei zuf. Hashfkt. und falls M O(m) Guter Ersatz (hier) für zuf. Hashfkt.: universelle Hashfunktionen

Mehr

Informatik II Hashing

Informatik II Hashing lausthal Das Wörterbuch-Problem Informatik II Hashing. Zachmann lausthal University, ermany zach@in.tu-clausthal.de Das Wörterbuch-Problem (WBP) kann wie folgt beschrieben werden: egeben: Menge von Objekten

Mehr