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

Größe: px
Ab Seite anzeigen:

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

Transkript

1 Algorithmen und Datenstrukturen Hash-Tabellen Viele Anwendungen erfordern dynamische Mengen, für welche die sog. Wörterbuch-Operationen INSERT, SEARCH und DELETE verfügbar sind. Beispiel: Symboltabelle in einem Compiler. Eine Hash-Tabelle ist eine effiziente Datenstruktur zur Implementierung von Wörterbüchern (dictionaries). Die mittlere Zeit zum Auffinden eines Elements in einer Hash-Tabelle beträgt, unter realistischen Annahmen, O(1). Im ungünstigsten Fall beträgt sie jedoch O(n) (bei n Elementen). 9 Hash-Tabellen TU Bergakademie Freiberg, WS 2005/06

2 Algorithmen und Datenstrukturen 214 Eine Hash-Tabelle ist eine Verallgemeinerung eines gewöhnlichen Feldes. Gewöhnliches Feld: Element mit Schlüssel k wird an Position k gespeichert. Um ein Element mit Schlüssel k wieder aufzufinden, muss lediglich an Position k des Feldes nachgeschaut werden; man nennt dies direkte Adressierung. Direkte Adressierung kann immer dann eingesetzt werden, wenn der Speicherbedarf eines Feldes mit einem Eintrag für jeden möglichen Schlüssel akzeptabel ist. 9 Hash-Tabellen TU Bergakademie Freiberg, WS 2005/06

3 Algorithmen und Datenstrukturen 215 Eine Hash-Tabelle wird dagegen eingesetzt, wenn dieser Aufwand zu groß ist: Einsatz einer Hash-Tabelle ist dann angesagt, wenn die Anzahl der tatsächlich auftretenden Schlüssel klein ist im Vergleich zu der der möglichen Schlüssel. Eine Hash-Tabelle ist ein Feld, dessen Speicherbedarf proportional zur Anzahl tatsächlich gespeicherter Schlüssel ist (anstelle der Anzahl möglicher Schlüssel). Bei gegebenem Schlüssel k wird nicht einfach k als Feldindex verwendet; der Index ergibt sich stattdessen aus einer Funktion angewandt auf k, der Hash-Funktion. 9 Hash-Tabellen TU Bergakademie Freiberg, WS 2005/06

4 Algorithmen und Datenstrukturen 216 Themen dieses Kapitels: Entwurf geeigneter Hash-Funktionen (Multiplikations- und Divisionsverfahren) Kollisionsauflösung, d.h. geeignete Maßnahmen für den Fall, dass die Hash-Funktion mehrere Schlüssel auf denselben Feldindex abbildet (Chaining, offene Adressierung). 9 Hash-Tabellen TU Bergakademie Freiberg, WS 2005/06

5 Algorithmen und Datenstrukturen Tabellen mit direkter Adressierung Jedes Element besitzt einen Schlüssel aus einer Grundmenge G = {0, 1,..., m 1}, wobei m nicht zu groß ist. Verschiedene Elemente besitzen verschiedene Schlüssel. Für Menge K tatsächlich auftretender Schlüssel gilt K G. Direkt-adressierte Tabelle implementiert durch Feld T [0.. m 1]: Jede Position entspricht einem Schlüssel aus G Ist ein Element x mit Schlüssel k vorhanden, so enthählt T [k] einen Zeiger auf x. Andernfalls ist T [k] unbesetzt, was durch den Wert NIL dargestellt wird. 9.1 Tabellen mit direkter Adressierung TU Bergakademie Freiberg, WS 2005/06

6 Algorithmen und Datenstrukturen 218 T G (Grundmenge) / / 0 1 Schluessel Nutzdaten / K (auftretende Schluessel) / / / 9 Realisierung eines Wörterbuchs durch eine direkt-adressierte Tabelle T. Jeder Schlüssel der Grundmenge G entspricht einem Index in die Tabelle. Die Menge auftretendender Schlüssel K bestimmt die Positionen von T, an denen Zeiger auf Elemente stehen. 9.1 Tabellen mit direkter Adressierung TU Bergakademie Freiberg, WS 2005/06

7 Algorithmen und Datenstrukturen 219 Grundoperationen (allesamt O(1)) DIRECT-ADDRESS-SEARCH(T, k) return T [k] DIRECT-ADDRESS-INSERT(T, x) T [key[x]] x DIRECT-ADDRESS-DELETE(T, x) T [key[x]] NIL 9.1 Tabellen mit direkter Adressierung TU Bergakademie Freiberg, WS 2005/06

8 Algorithmen und Datenstrukturen Hash-Tabellen Betrachte nun Fall G sehr groß, aber K G. In diesem Fall beansprucht eine Hash-Tabelle wesentlich weniger Speicherplatz, im Wesentlichen Θ( K ). Suchzeit noch O(1) im Mittel, aber nicht mehr im ungünstigsten Fall. Idee: Element mit Schlüssel k wird nicht an Position k gespeichert, sondern an Position h(k) mit einer geeigneten Funktion h. h heißt Hash-Funktion. h : G {0, 1,..., m 1}, d.h. für alle k G ist h(k) eine zulässige Position in T (T heißt jetzt Hash-Tabelle). Sprechweisen: k wird nach Position h(k) gehasht, h(k) ist der Hash- Wert von k. 9.2 Hash-Tabellen TU Bergakademie Freiberg, WS 2005/06

9 Algorithmen und Datenstrukturen 221 Kollision: mehrere Schlüssel werden auf dieselbe Position gehasht (h nicht injektiv). möglich sobald G > m für gegebene Schlüsselmenge K mit K m ebenfalls möglich, tritt sicherlich auf falls K > m Daher Strategie zur Kollisionsauflösung in allen Fällen erforderlich. Zwei Verfahren: Chaining und offene Adressierung (Chaining meistens besser) Je besser die Hash-Funktion, desto seltener muß auf Kollisionsauflösung zurückgegriffen werden. 9.2 Hash-Tabellen TU Bergakademie Freiberg, WS 2005/06

10 Algorithmen und Datenstrukturen 222 T G (Grundmenge) 0 h(k 1 ) k 1 h(k 4 ) K (auftretende Schluessel) k 4 k 5 k 2 k 3 h(k 2 ) = h(k 5 ) h(k 3 ) m 1 Abbildung von Schlüsseln nach Hash-Positionen. Die Schlüssel k 2 und k 5 werden auf dieselbe Position abgebildet, d.h. hier tritt eine Kollision auf. 9.2 Hash-Tabellen TU Bergakademie Freiberg, WS 2005/06

11 Algorithmen und Datenstrukturen Kollisionsauflösung durch Chaining Idee: Alle Elemente mit demselben Hash-Wert werden in einer verketteten Liste gehalten. T G (Grundmenge) / k 1 k 4 / / K (auftretende Schluessel) k 1 k 4 k 5 k 7 k 8 k 6 k 2 k 3 / / / k 5 k 3 k 8 / k 2 k 7 k 6 / / / 9.2 Hash-Tabellen TU Bergakademie Freiberg, WS 2005/06

12 Algorithmen und Datenstrukturen 224 Im der Abbildung werden einfach verkettete Listen verwendet; um Elemente schnell löschen zu können sollte die Verkettung doppelt sein. (Dabei wird angenommen, dass die Löschprozedur einen Zeiger auf das zu löschende Element erhält.) Position j der Hash-Tabelle enthält einen Zeiger auf den Kopf der Liste aller Elemente mit Hash-Wert j. (NIL, falls diese leer) Einfügen: CHAINED-HASH-INSERT(T, x) füge x am Kopf der Liste T [h(key[x])] ein Worst-Case-Laufzeit ist O(1). Annahme: einzufügendes Element noch nicht in der Liste enthalten. Überprüfung dieser Annahme erfordert zusätzliches Suchen. 9.2 Hash-Tabellen TU Bergakademie Freiberg, WS 2005/06

13 Algorithmen und Datenstrukturen 225 Suchen: CHAINED-HASH-SEARCH(T, k) Suche Element mit Schlüssel k in Liste T [h(k)] Laufzeit proportional zu Länge der Liste an Position h(k). Löschen: CHAINED-HASH-DELETE(T, x) Lösche x aus der Liste T [h(key[x])] Prozedur erhält Zeiger auf zu löschendes Element x, daher kein Suchen erforderlich. Worst-Case-Laufzeit O(1) bei doppelt verketteten Listen Bei einfach verketteten Listen dauert Löschen so lange wir Suchen, da zur Aktualisierung der Verzeigerung zunächst der Vorgänger von x bestimmt werden muss. 9.2 Hash-Tabellen TU Bergakademie Freiberg, WS 2005/06

14 Algorithmen und Datenstrukturen Analyse von Hashen mit Chaining Frage: wie lange dauert das Auffinden eines Elementes mit gegebenem Schlüssel bzw. die Feststellung, ob ein solches Element vorhanden ist? Analyse benutzt Begriff des Lastfaktors (load factor) α := n/m (mittlere # Elemente pro Liste) n: # Elemente in der Tabelle m: # Positionen in der Tabelle = # (möglicherweise leerer) verketteter Listen α < 1, = 1 oder > 1 möglich Ungünstigster Fall: alle n Schlüssel auf dieselbe Position abgebildet, d.h. eine verkettete Liste der Länge n Worst-Case Laufzeit für Suchen ist Θ(n) plus Zeit für Auswertung von h. Durchschnittlicher Aufwand hängt davon ab, wie gleichmäßig h die Schlüssel verteilt. 9.2 Hash-Tabellen TU Bergakademie Freiberg, WS 2005/06

15 Algorithmen und Datenstrukturen 227 Wir betrachten den durchschnittlichen Aufwand von Hashen mit Chaining. Annahme: jedes Element wird mit gleicher Wahrscheinlichkeit in eines der m Positionen gehasht (einfaches, gleichmäßiges Hashen) Sei n j die Länge der Liste T [j], j = 0,..., m 1, d.h. n = n 0 + +n m 1. Erwartungswert von n j gegeben durch E[n j ] = n/m = α. Annahme: Auswertung von h in O(1) Zeit möglich, d.h. Laufzeit für Suchen des Elements mit Schlüssel k hängt ab von n h(k). Zwei Fälle: Hash-Tabelle enthält kein Element mit Schlüssel k, also Suche erfolglos Andernfalls Suche erfolgreich In den folgenden Aussagen sei stets einfaches, gleichmäßiges Hashen mit Kollisionsauflösung durch Chaining vorausgesetzt. 9.2 Hash-Tabellen TU Bergakademie Freiberg, WS 2005/06

16 Algorithmen und Datenstrukturen 228 Erfolglose Suche: Satz 9.1 In einer Hash-Tabelle mit Kollosionsauflösung durch Chaining beträgt der Erwartungswert der Laufzeit einer erfolglosen Suche Θ(1 + α). Beweis: Ein noch nicht enthaltener Schlüssel wird mit gleicher Wahrscheinlichkeit in eine der m Listen gehasht. Erfolglose Suche nach Schlüssel k erfordert vollständiges Durchsuchen von Liste T [h(k)]. Diese besitzt erwartete Länge E[n h(k) ] = α. Somit beträgt die erwartete Anzahl bei einer erfolglosen Suche zu prüfender Elemente α. Zusammen mit Zeit für die Auswertung der Hash-Funktion ergibt sich Θ(1 + α). 9.2 Hash-Tabellen TU Bergakademie Freiberg, WS 2005/06

17 Algorithmen und Datenstrukturen 229 Erfolgreiche Suche: Die mittlere Laufzeit einer erfolgreichen Suche ist ebenfalls Θ(1 + α). Die Umstände unterscheiden sich etwas vom erfolglosen Fall. Die Wahrscheinlichkeit, dass eine Liste durchsucht wird ist proportional zu deren Länge. Satz 9.2 Der Erwartungswert der Laufzeit einer erfolgreichen Suche beträgt Θ(1 + α). Beweis: Angenommen, das gesuchte Element ist mit gleicher Wahrscheinlichkeit eines der n in der Tabelle enthaltenen Elemente. 9.2 Hash-Tabellen TU Bergakademie Freiberg, WS 2005/06

18 Algorithmen und Datenstrukturen 230 Die Anzahl bei einer erfolgreichen Suche nach x überprüfter Elemente beträgt eins mehr als die Anzahl Vorgänger von x in dessen Liste. Diese Elemente wurden nach x eingefügt (da am Kopfende eingefügt wird). Zu bestimmen ist somit die (über die n Elemente x in der Tabelle) gemittelte Anzahl Elemente, welche nach x in dessen Liste eingefügt wurden. Sei x i das i-te in die Tabelle eingefügte Element (i = 1,..., n) sowie k i := key[x i ]. Für alle 1 i, j n definieren wir die Indikatorzufallsvariablen X i,j := I{h(k i ) = h(k j )} = { 1 falls h(ki ) = h(k j ), 0 sonst. Einfaches gleichmäßiges Hashen Pr{h(k i ) = h(k j )} = 1/m, d.h. E[X i,j ] = 1/m. 9.2 Hash-Tabellen TU Bergakademie Freiberg, WS 2005/06

19 Algorithmen und Datenstrukturen 231 Somit beträgt die erwartete Anzahl überprüfter Elemente in einer erfolgreichen Suche E 1 n ( n ) 1 + X i,j = 1 n ( n ) 1 + E[X i,j ] n n = 1 n i=1 n ( 1 + i=1 = nm j=i+1 ( n i=1 n ) 1 m n ) n i j=i+1 i=1 i=1 = nm j=i+1 n (n i) i=1 = nm ( n 2 = 1 + n m n + 1 2m = 1 + n 1 2m = 1 + α 2 α 2n. ) n(n + 1) 2 Zusammen mit der Zeit zur Auswertung von h ergibt sich als mittlere Gesamtzeit für eine erfolgreiche Suche Θ(2 + α/2 α/2n) = Θ(1 + α). 9.2 Hash-Tabellen TU Bergakademie Freiberg, WS 2005/06

20 Algorithmen und Datenstrukturen 232 Interpretation: Ist n = O(m), so ist α = n/m = O(m)/m = O(1), d.h. Suchen benötigt im Durchschnitt O(1) Laufzeit. Da Einfügen und (bei doppelt verketteten Listen) auch Löschen O(1)- Operationen sind, erhalten wir somit für alle Wörterbuch-Operationen im Mittel Laufzeit O(1). 9.2 Hash-Tabellen TU Bergakademie Freiberg, WS 2005/06

21 Algorithmen und Datenstrukturen Hash-Funktionen Gewünschte Eigenschaften: Idealerweise Annahme des einfachen, gleichmäßigen Hashens erfüllt Dies ist in der Praxis deshalb nicht möglich, da die Wahrscheinlichkeitsverteilung der auftretenden Schlüssel nicht im Voraus bekannt ist; ferner sind diese möglicherweise nicht unabhängig. Oft werden auf der Grundmenge der Schlüssel basierende Heuristiken eingesetzt, um effiziente Hash-Funktionen zu konstruieren. 9.3 Hash-Funktionen TU Bergakademie Freiberg, WS 2005/06

22 Algorithmen und Datenstrukturen 234 Schlüssel als natürliche Zahlen Hash-Funktionen sind für natürliche Zahlen definiert. Anderswertige Schlüssel müssen zuvor nach N abgebildet werden. Besipiel: Abbildung von ASCII-Zeichenketten auf natürliche Zahlen in einer geeigneten Basis. Betrachte die Zeichenkette CLRS. Die zugehörigen ASCII-Codes lauten C=67, L=76, R=82, S=83. ASCII-Codes zwischen 0 und 127. Interpretiere daher die Zeichenkette CLRS als die Zahl (Basis 128) ( ) + ( ) + ( ) + ( ) = Hash-Funktionen TU Bergakademie Freiberg, WS 2005/06

23 Algorithmen und Datenstrukturen Die Divisionsmethode Schlüssel k wird auf eine von m Positionen abgebildet durch Restbildung bezüglich Division durch m, d.h. h(k) = k mod m. Beispiel: m = 20, k = 91, h(k) = 11. Vorteil: Auswertung schnell, da nur eine Division erforderlich Beachte: Bestimmte Werte von m sind zu vermeiden. Zweierpotenzen ungünstig. Bei m = 2 p hängt h(k) nur von den p niedrigstwertigen Bits von k ab. (Hash-Wert sollte von allen Bits abhängen, es sei denn alle p-bitmuster gleich wahrscheinlich.) Ist k eine Zeichenkette als Zahl zur Basis 2 p dargestellt (s.o.), so ist m = 2 p 1 insofern schlecht, als dann der Hash-Wert invariant ist unter Permutationen der Zeichen. Gute Wahl: Primzahl nicht allzu nahe an einer Zweierpotenz. 9.3 Hash-Funktionen TU Bergakademie Freiberg, WS 2005/06

24 Algorithmen und Datenstrukturen Die Multiplikationsmethode Hier wird die Hash-Funktion wie folgt konstruiert: 1. Wahl einer Konstanten A im Intervall (0, 1) 2. Multiplikation des Schlüssels k mit A 3. Bestimmung des gebrochenen (nichtganzzahligen) Anteils von ka 4. Multiplikation des gebrochenen Anteils mit m 5. Ergebnis nach unten abrunden Insgesamt: h(k) = m(ka mod 1). (9.1) (ka mod 1 = ka ka ist eine Schreibweise für den gebrochenen Anteil von ka.) 9.3 Hash-Funktionen TU Bergakademie Freiberg, WS 2005/06

25 Algorithmen und Datenstrukturen 237 Nachteil: Auswertung langsamer als bei Divisionsmethode Vorteil: Wahl von m nicht kritisch Beispiel für (relativ) einfache Implementierung: Wähle m = 2 p für ein p N. Die Wortlänge der Maschine betrage w Bits. Annahme: k passt in ein Wort, ist also in w Bits darstellbar. Wähle A von der Form A = s/2 w, wobei s N im Bereich 0 < s < 2 w, (d.h. s ebenfalls durch w Bits darstellbar) Produkt ks ist dann 2w Bits breit, d.h. ks = r 1 2 w + r 0, r 0, r 1 < 2 w. Es gilt: r 1 = ka, r 0 = (ka ka )2 w. h(k) = m(ka mod 1) besteht aus den p = log 2 m höchstwertigen Bits von r Hash-Funktionen TU Bergakademie Freiberg, WS 2005/06

26 Algorithmen und Datenstrukturen 238 Beispiel: m = 8, d.h. p = 3; w = 5, k = 21. Für s im Bereich 0 < s < 2 5 wählen wir s = 13, somit ist A = 13/32. Berechnung nach Formel (9.1): ka = = = m(ka mod 1) = = 17 h(k) = m(ka mod 1) = 4. Berechnung gemäß Implementierung: ka mod 1 = = ks = = 273 = r 1 = 8, r 0 = 17. In w-bit-darstellung: r 0 = , die p = 3 höchstwertigen Bits hiervon sind = 4 10, also h(k) = Hash-Funktionen TU Bergakademie Freiberg, WS 2005/06

27 Algorithmen und Datenstrukturen 239 Wahl von A: Die Multiplikationsmethode funktioniert mit jedem zulässigen Wert von A. In Abhängigkeit der zu hashenden Schlüssel sind einige Werte effizienter als andere. Vorschlag von Knuth: A ( 5 1)/ Hash-Funktionen TU Bergakademie Freiberg, WS 2005/06

28 Algorithmen und Datenstrukturen Universelles Hashen Gedankenspiel: Einem Dämon, dem die Hash-Funktion bekannt sei, obliege die Auswahl der zu hashenden Schlüssel. Diese könnte er so wählen, dass alle in dieselbe Position gehasht werden, womit die Worst-Case Komplexität eintritt. Möglicher Ausweg: In jedem Programmaufruf eine neue Hash-Funktion wählen. Ist dem Dämon die Folge der gewählten Hash-Funktionen nicht bekannt, so kann er die Schlüssel nicht mehr ungünstig wählen. Auswahl aus einer endlichen Menge H von Hash-Funktionen h : G {0, 1,..., m 1}. H heißt universell, falls für jedes Schlüsselpaar k, l G, k l, gilt: {h H : h(k) = h(l)} H /m. 9.3 Hash-Funktionen TU Bergakademie Freiberg, WS 2005/06

29 Algorithmen und Datenstrukturen 241 Interpretation: H ist universell, falls für jede zufällig ausgewählte Hash- Funktion h H die Kollisionswahrscheinlichkeit für zwei verschiedene Schlüssel höchstens 1/m beträgt, also nicht größer ist als in dem Fall, dass die Hash-Werte für k und l gleichverteilt zufällig aus {0, 1,..., m 1} gewählt werden. Satz 9.3 Bei universellem Hashen mit Chaining angewandt auf einen Schlüssel k gilt: (a) Ist k nicht in der Tabelle enthalten, so gilt für die erwartete Länge E[n h(k) ] der Liste, in die k gehasht wird, E[n h(k) ] α. (b) Ist k in der Tabelle enthalten, so gilt für die erwartete Länge der k enthaltenden Liste E[n h(k) ] 1 + α. 9.3 Hash-Funktionen TU Bergakademie Freiberg, WS 2005/06

30 Algorithmen und Datenstrukturen 242 Korollar 9.4 Bei universellem Hashen mit Kollisionsauflösung durch Chaining ist zur Bearbeitung einer beliebigen Folge von n INSERT-, SEARCHoder DELETE-Operationen, worunter sich insgesamt O(m) INSERT-Operationen befinden, im Mittel Θ(n) Zeit erforderlich. Insbesondere beträgt die mittlere Laufzeit der Suchoperation O(1). Darüberhinaus sind universelle Familien von Hash-Funktionen einfach zu konstruieren; Details in [Cormen, Leiserson, Rivest & Stein]. 9.3 Hash-Funktionen TU Bergakademie Freiberg, WS 2005/06

31 Algorithmen und Datenstrukturen Offene Adressierung Idee: Alle Datensätze (hier: Schlüssel) in der Hash-Tabelle gespeichert. An jeder Position steht entweder ein Schlüssel oder NIL. Suchen nach Schlüssel k: Prüfe, ob k an Position h(k). Prüfung heißt Sondierung (probe). Enthält Position h(k) Schlüssel k, ist die Suche erfolgreich; enthält Position h(k) den Wert NIL, ist sie erfolglos. Dritte Möglichkeit: Position h(k) enthält anderen Schlüssel l k. In diesem Fall werden, abhängig von k und der aktuellen Sondierung, solange weitere mögliche Positionen für k durchlaufen, bis an einer dieser entweder NIL oder der Schlüssel k vorgefunden wird. 9.4 Offene Adressierung TU Bergakademie Freiberg, WS 2005/06

32 Algorithmen und Datenstrukturen 244 Damit erforderlichenfalls alle Positionen sondiert werden und jede Position höchstens einmal sondiert wird, muss die Folge der Sondierungen eine Permutation der Zahlen {0, 1,..., m 1} sein. Die Hash-Funktion ist somit eine Abbildung h : G {0, 1,..., m 1} }{{} Sondierungsindex {0, 1,..., m 1}. }{{} Position Die Forderung, dass für jeden Schlüssel die Folge der generierten Positionen eine Permutation von {0, 1,..., m 1} ist, bedeutet die Sondierungsfolge {h(k, 0), h(k, 1),..., h(k, m 1)} ist eine Permutation von {0, 1,..., m 1}. Beim Einfügen geht man vor wie beim Suchen und fügt an der ersten NIL-Position der Sondierungsfolge ein. 9.4 Offene Adressierung TU Bergakademie Freiberg, WS 2005/06

33 Algorithmen und Datenstrukturen 245 Pseudocode für Suchen: liefert Position des gesuchten Schlüssels bzw. NIL. HASH-SEARCH(T, k) i 0 repeat j h(k, i) if T [j] = k then return j i i + 1 until T [j] = NIL or i = m return NIL Annahme hierbei: es findet keine Löschung von Elementen statt. 9.4 Offene Adressierung TU Bergakademie Freiberg, WS 2005/06

34 Algorithmen und Datenstrukturen 246 Pseudocode für Einfügen: liefert Position, an der Schlüssel eingefügt wurde bzw. Fehlermeldung Hash-Tabellen Überlauf, falls keine freie Position gefunden wurde. HASH-INSERT(T, k) i 0 repeat j h(k, i) if T [j] = NIL then T [j] k return j else i i + 1 until i = m error Hash-Tabellen Überlauf 9.4 Offene Adressierung TU Bergakademie Freiberg, WS 2005/06

35 Algorithmen und Datenstrukturen 247 Löschen von Elementen: Es genügt nicht, die Position des zu löschenden Schlüssels mit NIL zu überschreiben. Begründung: Zu löschen sei Schlüssel k an Position j. Nach Einfügen von k sei ein weiterer Schlüssel k eingefügt worden, im Verlaufe dessen Einfügens Position j sondiert (und k vorgefunden) wurde. Angenommen wir löschen daraufhin Schlüssel k durch Eintragen von NIL an Position j. Würde daraufhin nach Schlüssel k gesucht, so würde vor der k enthaltenden Position zuerst Position j sondiert, NIL vorgefunden und die Suche als erfolglos beendet werden. Dies obwohl k noch in der Tabelle enthalten ist. 9.4 Offene Adressierung TU Bergakademie Freiberg, WS 2005/06

36 Algorithmen und Datenstrukturen 248 Lösung: Verwendung eines Sonderzeichens DELETED neben NIL. Beim Suchen werden Positionen mit Symbol DELETED behandelt als enthielten diese vom gesuchten Schlüssel verschiedene Schlüssel. Beim Einfügen werden solche Positionen als frei erkannt und können erneut belegt werden. Nachteil: Suchzeit hängt nun nicht mehr vom Lastfaktor α ab. 9.4 Offene Adressierung TU Bergakademie Freiberg, WS 2005/06

37 Algorithmen und Datenstrukturen Berechnung von Sondierungsfolgen Idealfall: Auf jeden Schlüssel entfällt mit gleicher Wahrscheinlichkeit eine der m! Permutationen von {0, 1,..., m 1} als Sondierungsfolge: gleichmäßiges Hashen. Dies stellt insofern eine Verallgemeinerung des einfachen gleichmäßigen Hashens dar, als die Hash-Funktion jedem Schlüssel anstelle einer Zahl eine Zahlenfolge (Permutation) zuordnet. Echtes gleichmäßiges Hashen ist schwer zu realisieren, daher wird es approximiert durch Techniken, welche zumindest garantieren, dass jede Sondierungsfolge eine Permutation von {0, 1,..., m 1} ist. Keine dieser Techniken vermag alle m! Permutationen zu generieren. 9.4 Offene Adressierung TU Bergakademie Freiberg, WS 2005/06

38 Algorithmen und Datenstrukturen 250 Lineares Sondieren Zu einer gegebenen Hash-Funktion h : G {0, 1,..., m 1} ( Grundfunktion ) verwendet lineares Sondieren die Hash-Funktion h(k, i) = (h (k) + i) mod m, i = 0, 1,..., m 1. Zu gegebenem Schlüssel k wird also zuerst T [h (k)] sondiert gefolgt von T [h (k) + 1],..., T [m 1], T [0], T [1],..., T [h (k) 1]. Die erste Sondierung bestimmt die gesamte Folge, es gibt genau m verschiedene Sondierungsfolgen. Lineares Sondieren ist einfach zu implementieren, leidet aber unter der Bildung von primären Clustern: eine freie Position, welcher i besetzte Positionen vorangehen, wird mit Wahrscheinlichkeit (i + 1)/m besetzt. So neigen lange Folgen besetzter Positionen dazu, noch länger zu werden, womit die Suchzeit sich erhöht. 9.4 Offene Adressierung TU Bergakademie Freiberg, WS 2005/06

39 Algorithmen und Datenstrukturen 251 Quadratisches Sondieren Beim quadratischen Sondieren lautet zu gegebener Grundfunktion h und Konstanten c 1 sowie c 2 0 die Hash-Funktion h(k, i) = (h (k) + c 1 i + c 2 i 2 ) mod m, i = 0, 1,..., m 1. Wieder wird T [h (k)] zuerst sondiert; die Inkremente zu den danach sondierten Positionen hängen quadratisch von i ab. Quadratisches Sondieren funktioniert deutlich besser als lineares Sondieren es ist jedoch erforderlich, c 1, c 2 und m geeignet zu wählen, um das Feld möglichst gut auszunutzen. Für zwei Schlüssel k 1, k 2 mit h(k 1, 0) = h(k 2, 0) gilt h(k 1, i) = h(k 2, i) für alle i; diese Eigenschaft führt zur Bildung von sog. Sekundärclustern. Wieder bestimmt die erste Sondierposition alle weiteren, es gibt also auch hier genau m verschiedene Sondierfolgen. 9.4 Offene Adressierung TU Bergakademie Freiberg, WS 2005/06

40 Algorithmen und Datenstrukturen 252 Doppeltes Hashen Hier werden zwei Grundfunktionen h 1 und h 2 verwandt: h 1 liefert die erste Sondierung, h 2 bestimmt die weiteren: h(k, i) = (h 1 (k) + ih 2 (k)) mod m. h 2 (k) muss teilerfremd zu m sein, damit eine Sondierungsfolge voller Länge erreicht wird. Möglichkeiten: m als Zweierpotenz wählen und h 2 > 1 stets ungerade. m eine Primzahl und 1 < h 2 (k) < m. Verbesserung gegenüber linearer oder quadratischer Sondierung: Θ(m 2 ) verschiedene Sondierungsfolgen (jedes Paar (h 1 (k), h 2 (k)) liefert andere Folge) anstelle von Θ(m). 9.4 Offene Adressierung TU Bergakademie Freiberg, WS 2005/06

41 Algorithmen und Datenstrukturen 253 Beispiel: 0 Einfügen des Schlüssels k = 14 in eine Hash- Tabelle mit m = 13 Positionen bei Kollisionsauflösung durch doppeltes Hashen mit Hash- Funktionen h 1 (k) = k mod 13 h 2 (k) = 1 + k mod 11. Die endgültige Einfügeposition ist bei Position 9 erreicht, nachdem Positionen 1 und 5 sondiert und als belegt erkannt wurden Offene Adressierung TU Bergakademie Freiberg, WS 2005/06

42 Algorithmen und Datenstrukturen 253 Beispiel: 0 Einfügen des Schlüssels k = 14 in eine Hash- Tabelle mit m = 13 Positionen bei Kollisionsauflösung durch doppeltes Hashen mit Hash- Funktionen h 1 (k) = k mod 13 h 2 (k) = 1 + k mod 11. Die endgültige Einfügeposition ist bei Position 9 erreicht, nachdem Positionen 1 und 5 sondiert und als belegt erkannt wurden Offene Adressierung TU Bergakademie Freiberg, WS 2005/06

43 Algorithmen und Datenstrukturen 253 Beispiel: 0 Einfügen des Schlüssels k = 14 in eine Hash- Tabelle mit m = 13 Positionen bei Kollisionsauflösung durch doppeltes Hashen mit Hash- Funktionen h 1 (k) = k mod 13 h 2 (k) = 1 + k mod 11. Die endgültige Einfügeposition ist bei Position 9 erreicht, nachdem Positionen 1 und 5 sondiert und als belegt erkannt wurden Offene Adressierung TU Bergakademie Freiberg, WS 2005/06

44 Algorithmen und Datenstrukturen 253 Beispiel: 0 Einfügen des Schlüssels k = 14 in eine Hash- Tabelle mit m = 13 Positionen bei Kollisionsauflösung durch doppeltes Hashen mit Hash- Funktionen h 1 (k) = k mod 13 h 2 (k) = 1 + k mod 11. Die endgültige Einfügeposition ist bei Position 9 erreicht, nachdem Positionen 1 und 5 sondiert und als belegt erkannt wurden Offene Adressierung TU Bergakademie Freiberg, WS 2005/06

45 Algorithmen und Datenstrukturen Analyse von offener Adressierung Annahmen: Tabelle nie vollständig belegt, d.h. Lastfaktor α = n/m < 1. Gleichmäßiges Hashen Keine Löschoperationen Bei erfolgreichen Suchoperationen wird jeder Schlüssel mit gleicher Wahrscheinlichkeit gesucht. Satz 9.5 Bei einer Hash-Tabelle mit offener Adressierung und Lastfaktor α = n/m < 1 beträgt die erwartete Anzahl Sondierungen bei erfolgloser Suche höchstens 1/(1 α) unter der Annahme gleichmäßigen Hashens. 9.5 Analyse von offener Adressierung TU Bergakademie Freiberg, WS 2005/06

46 Algorithmen und Datenstrukturen 255 Beweis: Bei erfolgloser Suche untersucht jede Sondierung eine belegte Position bis auf die letzte, die eine leere Position prüft. Definiere Zufallsvariable X := # Sondierungen bei einer erfolglosen Suche. Definiere Ereignisse A i, i = 1, 2,... durch A i := { i-te Sondierung wird durchgeführt und prüft eine belegte Position}. Es gilt: X i falls Sondierungen 1, 2,..., i 1 stattfinden und jeweils belegte Positionen prüfen. m.a.w. {X i} = A 1 A 2 A i 1. Ferner gilt (Übung) Pr(A 1 A 2 A i 1 ) = Pr(A 1 ) Pr(A 2 A 1 ) Pr(A 3 A 1 A 2 )... Pr(A i 1 A 1 A 2 A i 2 ). 9.5 Analyse von offener Adressierung TU Bergakademie Freiberg, WS 2005/06

47 Algorithmen und Datenstrukturen 256 Behauptung: es ist Pr(A j A 1 A 2 A j 1 ) = { Pr(A1 ) = n/m falls j = 1, n j+1 m j+1 j = 2,..., m 1. (9.2) Im Fall j = 1 sind n aus m Positionen belegt, die erste Sondierung findet daher mit Wahrscheinlichkeit n/m eine belegte Position vor. Wurden j 1 Sondierungen, jeweils von belegten Positionen, durchgeführt, so prüft die nächste Sondierung eine bisher noch nicht geprüfte Position (da jede Sondierungsfolge eine Permutation von 0, 1,..., m 1 ist). Es verbleiben m j + 1 Positionen von denen n j 1 belegt sind, d.h. die j-te Sondierung trifft mit Wahrscheinlichkeit (n j + 1)/(m j + 1) auf eine belegte Position, und (9.2) ist gezeigt. 9.5 Analyse von offener Adressierung TU Bergakademie Freiberg, WS 2005/06

48 Algorithmen und Datenstrukturen 257 Mit Hilfe von (9.2) erhalten wir Pr(X i) = n m n 1 m 1 n 2 m 2... n i + 2. m i + 2 }{{} i 1 Faktoren Da n < m folgt (n j)/(m j) n/m für j 0, und somit Pr(X i) ( ) i 1 n = α i 1. m Wir erhalten E[X] = i Pr(X = i) = i=0 Pr(X i) i=1 α i 1 = i=1 i=0 α i = 1 1 α. 9.5 Analyse von offener Adressierung TU Bergakademie Freiberg, WS 2005/06

49 Algorithmen und Datenstrukturen 258 Interpretation: Eine Sondierung findet immer statt. Erste Sondierung trifft auf belegte Position mit Wahrscheinlichkeit α. Mit Wahrscheinlichkeit α 2 auch die zweite, usw. Ist α konstant, so besitzt erfolglose Suche Laufzeit O(1). α = 0.5: erfolglose Suche erfordert im Mittel 1/(1 0.5) = 2 Sondierungen. α = 0.9: im Mittel 1/(1 0.9) = 10 Sondierungen. Korollar 9.6 Die erwartete Anzahl Sondierungen beim Einfügen beträgt höchstens 1/(1 α). Beweis: Unter der Annahme, dass keine Löschungen stattfinden, benutzt die Einfügeoperation dieselbe Sondierungsfolge wie erfolgloses Suchen. 9.5 Analyse von offener Adressierung TU Bergakademie Freiberg, WS 2005/06

50 Algorithmen und Datenstrukturen 259 Satz 9.7 Die erwartete Anzahl Sondierungen bei erfolgreichem Suchen beträgt höchstens 1 α log 1 1 α. Beweis: Erfolgreiches Suchen nach Schlüssel k geschieht nach derselben Sondierungsfolge wie beim Einfügen von k. Nach Korollar 9.6: war k der (i + 1)-te eingefügte Schlüssel, so hatte α zu dieser Zeit den Wert i/m. Die erwartete Anzahl Sondierungen für die Suche nach k ist somit 1/(1 i/m) = m/(m i). Wir Mitteln dies über alle Schlüssel der Tabelle: 1 n n 1 i=0 m m i = m n n 1 i=0 1 m i = 1 α (H m H m n ), wobei H i := i j=1 1/j die i-te harmonische Zahl bezeichnet. 9.5 Analyse von offener Adressierung TU Bergakademie Freiberg, WS 2005/06

51 Algorithmen und Datenstrukturen 260 Wir schätzen ab: 1 α (H m H m n ) = 1 α m k=m n+1 m 1 k 1 1 α m n x dx = 1 ( ) log m log(m n) α = 1 α log m m n = 1 α log 1 1 α. 9.5 Analyse von offener Adressierung TU Bergakademie Freiberg, WS 2005/06

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Grundlagen der Algorithmen und Datenstrukturen Kapitel 4

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

Mehr

Vorlesung 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ü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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

8 Elementare Datenstrukturen

8 Elementare Datenstrukturen Algorithmen und Datenstrukturen 186 8 Elementare Datenstrukturen In diesem und dem folgenden Kapitel werden grundlegende Techniken der Darstellung und Manipulation dynamischer Mengen auf Computern vorgestellt.

Mehr

6 Quicksort. die mittlere Laufzeit Θ(n log n) beträgt und. die in der asymptotischen Notation verborgenen Konstanten sehr klein sind.

6 Quicksort. die mittlere Laufzeit Θ(n log n) beträgt und. die in der asymptotischen Notation verborgenen Konstanten sehr klein sind. Algorithmen und Datenstrukturen 132 6 Quicksort In diesem Abschnitt wird Quicksort, ein weiterer Sortieralgorithmus, vorgestellt. Trotz einer eher langsamen Worst-Case Laufzeit von Θ(n 2 ) ist Quicksort

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

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

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

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

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

Ü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

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

Ü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

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 Heapsort

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

Mehr

4 Probabilistische Analyse und randomisierte Algorithmen

4 Probabilistische Analyse und randomisierte Algorithmen Algorithmen und Datenstrukturen 96 4 Probabilistische Analyse und randomisierte Algorithmen Bei der Algorithmenanalyse ist es sehr hilfreich, Aspekte berücksichtigen zu können, die vom Zufall abhängen.

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

Ü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

INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS

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

Mehr

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

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

Mehr

Überlaufbehandlung ohne Verkettung

Überlaufbehandlung ohne Verkettung 3.2 Statische Hash-Verfahren direkte Berechnung der Speicheradresse (Seitenadresse) eines Satzes über Schlüssel (Schlüsseltransformation) Hash-Funktion h: S {, 2,..., n} S = Schlüsselraum, n = Größe des

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

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

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

Untersuchen Sie, inwiefern sich die folgenden Funktionen für die Verwendung als Hashfunktion eignen. x 9

Untersuchen Sie, inwiefern sich die folgenden Funktionen für die Verwendung als Hashfunktion eignen. x 9 Prof. aa Dr. Ir. G. Woeginger T. Hartmann, D. Korzeniewski, B. Tauer Globalübungsaufgabe1 (Güte von Hashfunktionen): Untersuchen Sie, inwiefern sich die folgenden Funktionen für die Verwendung als Hashfunktion

Mehr

Algorithmen & Datenstrukturen. 3. Suchen

Algorithmen & Datenstrukturen. 3. Suchen Algorithmen & Datenstrukturen 3. Suchen 1 Exponentielle Suche Gesucht wird ein Element mit Schlüssel k. Die exponentielle Suche eignet sich zum Suchen in nach den Schlüsselwerten sortierten Feldern, deren

Mehr

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 Komplexität Lösungsvorschlag zu Übungsblatt 8

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

Mehr

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

Lineare Kongruenzgeneratoren und Quicksort

Lineare Kongruenzgeneratoren und Quicksort Seminar Perlen der theoretischen Informatik Dozenten: Prof. Johannes Köbler und Olaf Beyersdorff Lineare Kongruenzgeneratoren und Quicksort Ausarbeitung zum Vortrag Mia Viktoria Meyer 12. November 2002

Mehr

Kap. 4.7 Skiplisten. 15./16. VO DAP2 SS /10. Juni 2008

Kap. 4.7 Skiplisten. 15./16. VO DAP2 SS /10. Juni 2008 Kap. 4.7 Skiplisten Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 15./16. VO DAP2 SS 2008 5./10. Juni 2008 1 Proseminare WS 2008/09 Anmeldefrist: Montag 16.06.

Mehr

Datenstrukturen. Kapitel III. Datenstrukturen

Datenstrukturen. Kapitel III. Datenstrukturen Kapitel III Datenstrukturen 88 89 Inhalt Kapitel III 1 Dynamische Mengen und binäre Suchbäume Dynamische Mengen Binäre Suchbäume 2 AVL-Bäume 3 B-Bäume 4 Rot-Schwarz-Bäume Operationen auf Rot-Schwarz Bäumen

Mehr

Datenstrukturen sind neben Algorithmen weitere wichtige Bausteine in der Informatik

Datenstrukturen sind neben Algorithmen weitere wichtige Bausteine in der Informatik 5. Datenstrukturen Motivation Datenstrukturen sind neben Algorithmen weitere wichtige Bausteine in der Informatik Eine Datenstruktur speichert gegebene Daten und stellt auf diesen bestimmte Operationen

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

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

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

Mehr

Gliederung. 5. Compiler. 6. Sortieren und Suchen. 7. Graphen

Gliederung. 5. Compiler. 6. Sortieren und Suchen. 7. Graphen 5. Compiler Gliederung 1. Struktur eines Compilers 2. Syntaxanalyse durch rekursiven Abstieg 3. Ausnahmebehandlung 4. Arrays und Strings 6. Sortieren und Suchen 1. Grundlegende Datenstrukturen 2. Bäume

Mehr

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

Counting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit Counting-Sort Counting - Sort ( A,B,k ). for i to k. do C[ i]. for j to length[ A]. do C[ A[ j ] C[ A[ j ] +. > C[ i] enthält Anzahl der Elemente in 6. for i to k. do C[ i] C[ i] + C[ i ]. > C[ i] enthält

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT) Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 207 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München Programm heute 7 Fortgeschrittene Datenstrukturen 8

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