Algorithmen und Datenstrukturen Hashverfahren
|
|
|
- Frank Baumann
- vor 9 Jahren
- Abrufe
Transkript
1 Algorithmen und Datenstrukturen Hashverfahren Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12
2 Überblick Prinzip Details Anwendungen
3 Motivation Hashverfahren (Hashtabellen) Datenstruktur effiziente Implementierung dynamischer Mengen, insbesondere Wörterbuchoperationen insert, search, delete mittlere Laufzeit für Wörterbuchoperationen O (1) schlechtester Fall O (n)
4 Grundlagen basiert auf einem Feld schneller direkter Zugriff auf beliebige Position in O (1) Position eines Elements ergibt sich aus seinem Schlüssel Schlüssel s Hashfunktion h Hashwert i = h(s) Für jeden Schlüssel s liefert die Hashfunktion h einen Hashwert (Hashindex) i = h(s), der die Position (Bucket) des Elements im Feld (in der Hashtabelle) bezeichnet.
5 Kleine Schlüsselmenge Schlüssel {4, 7, 8, 12} Hashfunktion h (s) = s (direkter Zugriff) Hashtabelle t [0..40] der Größe n=41 t.insert (4); h (4) = 4; t [4] = 4; t.insert (7); t.insert (8); t.insert (12); h (7) = 7; t [7] = 7; h (8) = 8; t [8] = 8; h (12) = 12; t [12] = 12; t.delete (7); h (7) = 7; t [7] = -1; t.search (8); h (8) = 8; t [8] == 8 true;
6 Große Schlüsselmenge Menge von möglichen Schlüsseln ist groß gegenüber der zu repräsentierenden Menge von Elementen direkte Adressierung ( h(s) = s ) nicht praktikabel: sehr große Hashtabellengröße m, sehr geringer Belegungsfaktor ( Zahl der Elemente n / Größe der Hashtabelle m) Wahl der Hashtabellengröße m in der Größenordnung der zu repräsentierenden Elemente Wahl der Hashfunktion, sodass alle Schlüssel auf einen gültigen Index der Hashtabelle abgebildet werden, beispielsweise h (s) = s mod m (0 h (s) m-1)
7 Große Schlüsselmenge Schlüsselmenge natürliche Zahlen Schlüssel {17, , } Hashtabelle t [0..m-1] mit m=10 (m=10 Einträge für n=3 Elemente) Hashfunktion h (s) = s mod m t.insert (17); h (17) = 7; t [7] = 17; t.insert (235436); t.insert ( ); h (235436) = 6; t [6] = ; h ( ) = 8; t [8] = ; t.search ( ); h ( ) = 8; t [8] == true;
8 Hashkollision Enthält die Menge zwei verschiedene Schlüssel, welche den gleichen Hashwert liefern, tritt eine Hashkollision auf. Schlüssel {17, , , 6} Hashfunktion h (s) = s mod 10 h (235436) = h (6) = 6
9 Hashverfahren / Hashing Menge mit n=7 Elementen Hashtabelle t der Größe m= , Hashfunktion: h (s) = s mod 10 Hashwerte / Hashindizes: h(256) = 6 h(2) = 2 h(0) = 0 h(3) = 3 h(17) = 7 h(7) = 7 h(4) = 4 Hashkollision: h(7) = h(17)
10 Implementierung von Hashtabellen Wahl der Hashtabellengröße m in Größenordnung der Anzahl der zu repräsentierenden Elemente n Belegungsfaktor n / m < 1, aber nicht zu klein Wahl der Hashfunktion h effiziente Berechnung, Vermeidung von Hashkollisionen Behandlung von Kollisionen (Kollisionsauflösung) Strategie zur Behandlung von Fällen, in denen mehrere Elemente auf den gleichen Hashwert abgebildet werden
11 Überblick Prinzip Details Hashtabellengröße Hashfunktion Behandlung von Hashkollisionen Anwendungen
12 Motivation großer Belegungsfaktor möglichst kleine Tabelle Zahl der Elemente n / Hashtabellengröße m sollte kleiner eins, aber nicht zu klein sein (ungenutzter Speicher) Vermeidung von Hashkollisionen möglichst große Tabelle große Tabellen verringern eventuell die Wahrscheinlichkeit von Hashkollisionen
13 Wahl der Hashtabellengröße schlechte Größen m sind einfach zu finden m gerade m = r k ± j, r = {2, 10} Basis der Elementrepräsentation, k und j kleine natürliche Zahlen Beispiele: 2, 8, 10, 16, 999, 10003, (256*256+5 = ) nicht ganz so schlechte Größen m große Primzahl, (die nicht Teiler von r k ± j ist) [Knuth 1973] Beispiele: 5657, 55931,
14 Überblick Prinzip Details Hashtabellengröße Hashfunktion Behandlung von Hashkollisionen Anwendungen
15 Hashfunktion h : Schlüssel Hashindex Schlüssel Menge aller möglichen Schlüssel Hashindex { 0,, m-1 } Addressraum (Menge aller Positionen in der Hashtabelle)
16 Motivation effiziente Berechnung Zahl der Hashkollisionen für die zu erwartende Schlüsselmenge und die gewählte Hashtabellengröße möglichst klein (Gleichverteilung der Hashwerte) stark unterschiedliche Hashwerte für ähnliche Schlüssel (Chaos) alle Hashwerte sollten möglich sein (Surjektivität) injektive Hashfunktionen heissen perfekt, da Kollisionen vollständig vermieden werden
17 Hashkollisionen treten leider häufiger auf, als man intuitiv annimmt Geburtstagsproblem Die Wahrscheinlichkeit, dass sich unter 23 Personen zwei Personen befinden, die am gleichen Tag (ohne Berücksichtigung des Jahres) Geburtstag haben, liegt bei über 50%. Bei 57 Personen liegt die Wahrscheinlichkeit bei 99%. Nicht zu verwechseln mit der Wahrscheinlichkeit, dass jemand am gleichen Tag Geburtstag hat wie ich. Für eine Wahrscheinlichkeit von 50% sind hier 253 Personen nötig.
18 Hashkollisionen Konsequenz für Hashkollisionen Hashtabellengröße 365 Hashfunktion liefert gleichverteilte Werte 23 Elemente Wahrscheinlichkeit für das Auftreten einer Hashkollision bei 50% 57 Elemente Wahrscheinlichkeit für das Auftreten einer Hashkollision bei 99%
19 Divisionsrestmethode h (s) = s mod m sehr effizient berechenbar für m = 2 k liefert h (s) die k niederwertigsten Bits von s, Variationen der anderen Bits werden nicht berücksichtigt wird in der Regel in Kombination mit weiteren Funktionen eingesetzt in der Form h (s) = f (s) mod m, z. B. h (s) = (( a s + b ) mod p ) mod m
20 Multiplikative Methode h(s)= m(α s α s ) 0 < α < 1 möglichst irrationale Werte für α, z. B. weniger sensitiv bezüglich m α= 5 1 2
21 Überblick Prinzip Details Hashtabellengröße Hashfunktion Behandlung von Hashkollisionen Anwendungen
22 Verkettung Hashtabelleneintrag ist Kopf einer verketteten Liste kollidierende Schlüssel werden gemeinsam in die Liste eines Eintrags (Bucket) sortiert oder am Ende eingefügt verkettete Liste für jeden Tabelleneintrag (Bucket) Unsortierte Speicherung. Sortierung würde erfolglose Suche beschleunigen. Operationen in O(1) bei sinnvoller Wahl von Tabellengröße und Hashfunktion (wenig Elemente pro Bucket) schlechtester Fall O(n), z. B. bei Tabellengröße 1 Hashtabelle dynamisch, variable Zahl von Elementen möglich
23 Offene Hashverfahren Für kollidierende Schlüssel (Überläufer) wird ein freier Eintrag in der Tabelle gesucht. statisch, Zahl der Elemente fest Sondierungsreihenfolge bestimmt für jeden Schlüssel, in welcher Reihenfolge alle Hashtabelleneinträge auf einen freien Platz durchsucht werden. Ist ein Eintrag belegt, kann beispielsweise iterativ der nächstfolgende Tabelleneintrag geprüft werden. Wird ein freier Eintrag gefunden, wird das Element eingetragen. Wird bei der Suche ein Element nicht am entsprechenden Tabelleneintrag gefunden, obwohl der Eintrag belegt ist, muss ebenfalls die definierte Sondierungsreihenfolge abgearbeitet werden, bis das Element oder ein freier Eintrag gefunden wurde.
24 Prinzip h (s) Hashfunktion für Schlüssel s g (s, j) Sondierungsfunktion für Schlüssel s mit 0 j m-1 ( h (s) g (s, j) ) mod m Sondierungsreihenfolge, d. h. Permutation von < 0, 1,, m-1 > Einfügen j:=0; while ( t [( h (s) g (s, j) ) mod m]!= frei ) j++; t [( h (s) g (s, j) ) mod m] := s; Suchen j:=0; while ( t [( h (s) g (s, j) ) mod m]!= frei && t [( h (s) g (s, j) ) mod m]!= s ) j++; if (t [( h (s) g (s, j) ) mod m] == s) return true; else return false;
25 Lineares Sondieren g (s, j ) = j Hashfunktion ( h (s) j ) mod m führt zu Sondierungsreihenfolge h(s), h(s)-1, h(s)-2,, 0, m-1,, h(s)+1 einfach führt aber zu primärer Häufung (primary clustering) Behandlung einer Hashkollision erhöht die Wahrscheinlichkeit einer Hashkollision in benachbarten Tabelleneinträgen
26 Beispiel Schlüssel: {12, 53, 5, 15, 2, 19}, Hashfunktion: h(s, j) = (s mod 7 j) mod 7 t.insert(12); h(12,0)=5; t.insert(53); h(53,0)=4; t.insert(5); h(5,0)=5; h(5,1)=4; h(5,2)=3; t.insert(15); h(15,0)=1; t.insert(2); h(2,0)=2; t.insert(19); h(19,0)=5; h(19,1)=4; h(19,2)=3; h(19,3)=2; h(19,4)=1; h(19,5)=0;
27 Quadratisches Sondieren Motivation: Vermeidung von lokalen Häufungen g (s, j ) = (-1) j j / 2 2 führt zu Sondierungsreihenfolge h(s), h(s)+1, h(s)-1, h(s)+4, h(s)-4, h(s)+16, h(s)-16 für Primzahl m = 4 k+3 ist die Sondierungsreihenfolge eine Permutation der Indizes der Hashtabelle alternativ auch h (s, j) = ( h (s) c1 j c2 j 2 ) mod m Problem der sekundären Häufung keine lokale Häufung mehr, allerdings durchlaufen Schlüssel mit gleichem Hashwert immer die gleiche Ausweichsequenz c1, c2 Konstanten
28 Uniformes Sondieren Motivation: Funktion g (s, j) berücksichtigt beim linearen und quadratischen Sondieren lediglich den Schritt j. Die Sondierungsreihenfolge ist vom Schlüssel unabhängig. Uniformes Sondieren berechnet die Folge g (s, j ) von Permutationen aller möglichen Hashwerte in Abhängigkeit vom Schlüssel s Vorteil: Häufung wird vermieden, da unterschiedliche Schlüssel mit gleichem Hashwert zu unterschiedlichen Sondierungsreihenfolgen führen Nachteil: schwierige praktische Realisierung
29 Double Hashing Motivation: Berücksichtung des Schlüssels s in der Sondierungsreihenfolge Verwendung zweier unabhängiger Hashfunktionen h 1, h 2 h (s, j) = ( h 1 (s) + j h 2 (s) ) mod m funktioniert praktisch sehr gut Approximation des uniformen Sondierens
30 Beispiel h 1 (s) = s mod 7 h 2 (s) = 1 + (s mod 5) h(s, j) = ( h 1 (s) + j h 2 (s) ) mod 7 s h 1 (s) h 2 (s) Effizienz beruht auf h1 (s)!= h2 (s) Sondierungsreihenfolge abhängig von s
31 Verbesserung des Double Hashing nach Brent Motivation: Da unterschiedliche Schlüssel unterschiedliche Sondierungsreihenfolgen haben, hat die Reihenfolge des Einfügens der Schlüssel Einfluss auf die Effizienz der erfolgreichen Suche Beispiel: s1 wird an Position p1 = h (s1, 0) eingefügt. s2 liefert ebenfalls p1 = h (s2, 0). h (s2, 1..n) sind ebenfalls belegt. s2 wird an Position h (s2, n+1) eingetragen, was bei der Suche recht ineffizient ist. Brents Idee: Teste, ob h (s1, 1) frei ist. Falls ja, wird s1 von Position h (s1,0) nach Position h (s1,1) verschoben und s2 an Position h (s1, 0) eingetragen.
32 Ordered Hashing Motivation: Kollidierende Elemente werden in sortierter Reihenfolge in der Hashtabelle abgelegt. Dadurch kann bei erfolgloser Suche von Elementen in Kombination mit lin. Sondierung oder bei double hashing früher abgebrochen werden, da hier einzelne Sondierungsschritte feste Länge haben. Realisierung: Bei einer Kollision werden beide Schlüssel verglichen. Der kleinere Schlüssel wird abgelegt. Für den größeren Schlüssel wird eine neue Position gemäß Sondierungsreihenfolge gesucht. Beispiel: 12 ist an Position p1 = h (12, 0) gespeichert. 5 liefert p1 = h (5, 0). 5<12 5 wird an Position p1 eingetragen. Für 12 werden die Positionen h (12, 1 ) weiter getestet.
33 Robin-Hood-Hashing Motivation: Angleichung der Länge der Sondierungsfolgen für alle Elemente. Gesamtkosten bleiben gleich, aber gerecht verteilt. Führt zu annähernd gleichen Suchzeiten für alle Elemente. Realisierung: Bei einer Kollision zweier Schlüssel s1 und s2 mit p1 = h (s1, j1) = h (s2, j2) werden j1 und j2 verglichen. Schlüssel mit größerer Länge der Sondierungsfolge wird an Position p1 gespeichert. Der andere Schlüssel erhält neue Position. Beispiel: 12 ist an Position p1 = h (12, 7) gespeichert. 5 liefert p1 = h (5, 0). 0<7 12 bleibt an Position p1. Für 5 werden die Positionen h (5, 1 ) weiter getestet.
34 Implementierung Einfügen / Entfernen Entfernen von Elementen kann problematisch sein. Schlüssel s1 wird an Position p1 eingefügt. Schlüssel s2 liefert den gleichen Hashwert, wird aber durch das Sondieren an Position p2 eingefügt. Wird Schlüssel s1 entfernt, kann s2 nicht wiedergefunden werden. Lösung. Entfernen: Elemente werden nicht entfernt, sondern als gelöscht markiert. Einfügen: Als gelöscht markierte Einträge werden überschrieben.
35 Zusammenfassung Kollisionsbehandlung Verkettung (dynamisch, Zahl der Elemente variabel) kollidierende Schlüssel werden in Liste gespeichert Offene Hashverfahren (statisch, Zahl der Elemente fest) Bestimmung einer Ausweichsequenz (Sondierungsreihenfolge), Permutation aller Hashwerte (Indizes der Hashtabelle) lineares, quadratisches Sondieren: einfach, führt zu Häufungen, da Sondierungsreihenfolge vom Schlüssel unabhängig uniformes Sondieren, double hashing: unterschiedliche Sondierungsreihenfolgen für unterschiedliche Schlüssel, vermeidet Häufungen von Elementen Effizienzsteigerung der Suche durch Umsortieren von Elementen beim Einfügen (Brent, Ordered Hashing)
36 Zusammenfassung Hashverfahren effiziente Wörterbuchoperationen: Einfügen, Suchen, Entfernen direkter Zugriff auf Elemente einer Hashtabelle Berechnung der Position in der Hashtabelle durch Hashfunktion (Hashwert) gleiche Hashwerte für unterschiedliche Schlüssel führen zu Hashkollisionen Hashfunktion, Größe der Hashtabelle und Strategie zur Vermeidung von Hashkollisionen beeinflussen die Effizienz der Datenstruktur.
37 Überblick Prinzip Details Anwendungen Kollisionsdetektion Nachbarschaft eines Punktes
38 Kollisionsdetektion Objekte sind durch Dreiecke (2D) bzw. Tetraeder (3D) beschrieben Kollision liegt vor, wenn Punkt (x, y) eines Dreiecks innerhalb eines Dreiecks eines anderen Objektes liegt naive Lösung teste alle Dreiecke gegeneinander n Dreiecke O( n 2 ) Tests Kollision
39 Beschleunigung durch Raumunterteilung Raum wird in kleine Zellen unterteilt Dreiecke werden den Zellen zugeordnet Dreiecke in der gleichen Zelle werden auf Kollision getestet Paare von Dreiecken, die nicht die gleiche Raumzelle teilen, werden nicht getestet (trivial reject)
40 Zuordnung von Dreiecken zu Raumzellen erfolgt implizit Raumzelle eines Dreiecks wird als Schlüssel betrachtet Repräsentation der Dreiecke in einer Hashtabelle Motivation: gleiche Raumzelle gleicher Hashwert Alle Dreiecke einer Raumzelle werden der gleichen Position in der Hashtabelle zugeordnet. Kollisionstest nur für Dreiecke innerhalb der gleichen Raumzelle Dreieckspaare mit unterschiedlichen Hashwerten können nicht kollidieren.
41 Realisierung unbegrenzt großes räumliches Gitter Hashfunktion: H (Raumzelle) Hashwert H (x, y) bzw. H (x, y, z) Schlüssel besteht aus zwei (2D) oder drei (3D) reelwertigen Zahlen Hashtabelle... (räumliche Datenstruktur) (Repräsentation)
42 Implementierung Schritt 1 Punkte werden Raumzellen zugeordnet und entsprechend ihrem Hashwert in die Hashtabelle eingetragen Zellgröße h... Punkt p: (Px, Py) ( x Px < x+h ) && ( y Py < y+h ) t [ h (x, y) ] = p Hashtabelle t Behandlung von Hashkollisionen durch Listen
43 Implementierung Schritt 2 Begrenzungsbox für jedes Dreieck Dreieck wird allen Raumzellen zugeordnet, die von der Begrenzungsbox überlagert sind...
44 Implementierung Schritt 3 Punkte und Dreiecke in der gleichen Hashtabellen-Position werden paarweise auf Kollision getestet A) keine Kollision B) Kollision... C) Selbstkollision
45 Implementierung trage Punkte in Hashtabelle ein berechne Hashwerte für Begrenzungbox eines Dreiecks speichere die Dreiecke nicht in der Hashtabelle, sondern teste, ob einer der dort gespeicherten Punkte im Dreieck liegt Parameter Größe einer Gitterzelle Größe der Hashtabelle Hashfunktion
46 Parameter unbegrenztes räumliches Gitter Hashfunktion H(Raumzelle) Hashwert Hashtabelle... Zellgröß öße Größ öße der Hashtabelle
47 Effizienz Größe einer Gitterzelle Größe einer Zelle sollte mit der Größe eines Dreiecks übereinstimmen [Bentley 1977] [Teschner, Heidelberger et al. 2003] Testszene (3D, Tetraeder statt Dreiecke)
48 Effizienz Größe der Hashtabelle Hashkollisionen verringern die Effizienz größere Hashtabellen verringern eventuell die Zahl der Hashkollisionen Testszene (3D, Tetraeder statt Dreiecke)
49 Hashfunktion sollte Wahrscheinlichkeit von Hashkollisionen minimieren solle einfach zu berechnen sein (muss für alle Elemente berechnet werden) H(x,y,z)=(p 1 x xor p 2 y xor p 3 z) mod n Koordinaten einer Raumzelle (3D): große Primzahlen: Größe der Hashtabelle x,y,z p 1,p 2,p 3 n
50 Laufzeit - Kollisionsdetektion Laufzeit linear in der Zahl der Dreiecke unabhängig von der Zahl der Objekte Objekte Dreiecke Punkte Zeit [ms] Testszenen Pentium 4, 1.8GHz
51 Überblick Prinzip Details Anwendungen Kollisionsdetektion Nachbarschaft eines Punktes
52 Nachbarschaft eines Punktes Problem Finde alle Punkte in der Umgebung eines Punkte z. B. zur Berechnung von Kräften in Fluid-Animationen
53 Nachbarschaft eines Punktes Lösungsansatz Raumunterteilung Partikel werden Raumzellen zugeordnet und entsprechend einer Hashfunktion in Hashtabelle gespeichert Gesuchte Partikel können nur in der gleichen oder in angrenzenden Raumzellen liegen
54 Anwendung
55 Anwendung
56 Nächstes Thema Algorithmen / Datenstrukturen Bäume
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
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....................................
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
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:
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
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
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,
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
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
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
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
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
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
Algorithmen & Datenstrukturen Lösungen zu Blatt 9 HS 16
Eidgenössische Technische Hochschule Zürich Ecole polytechnique fédérale de Zurich Politecnico federale di Zurigo Federal Institute of Technology at Zurich Departement Informatik 24. November 2016 Markus
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
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
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
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
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
17. Hashing. Motivation. Naive Ideen. Bessere Idee? k(s) = s i b i
Motivation 17. Hashing Hash Tabellen, Geburtstagsparadoxon, Hashfunktionen, Kollisionsauflösung durch Verketten, offenes Hashing, Sondieren Ziel: Tabelle aller n Studenten dieser Vorlesung Anforderung:
5.8.2 Erweiterungen Dynamische Hash-Funktionen (mit variabler Tabellengröße)?
5.8.2 Erweiterungen Dynamische Hash-Funktionen (mit variabler Tabellengröße)? Ladefaktor: α, n aktuelle Anzahl gespeicherter Werte m Tabellengröße. Einfacher Ansatz: rehash() a z c h s r b s h a z Wenn
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
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.
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
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.
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
Algorithmen und Datenstrukturen 1 VL Übungstest WS Januar 2011
Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen 186.172 Algorithmen und Datenstrukturen 1 VL 4.0 2. Übungstest WS 2010 14. Januar
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
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
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
Ü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
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
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
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
Übung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 2017 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda: Kürzeste Wege, Heaps, Hashing Heute: Kürzeste Wege: Dijkstra Heaps: Binäre Min-Heaps Hashing:
8. Hashing Lernziele. 8. Hashing
8. Hashing Lernziele 8. Hashing Lernziele: Hashverfahren verstehen und einsetzen können, Vor- und Nachteile von Hashing gegenüber Suchbäumen benennen können, verschiedene Verfahren zur Auflösung von Kollisionen
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:
Algorithmen und Datenstrukturen 1 VL Übungstest SS Juni 2011
Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen 86.72 Algorithmen und Datenstrukturen VL 4.0 2. Übungstest SS 20 0. Juni 20 Machen
Bäume, Suchbäume und Hash-Tabellen
Im folgenden Fokus auf Datenstrukturen, welche den assoziativen Zugriff (über einen bestimmten Wert als Suchkriterium) optimieren Bäume: Abbildung bzw. Vorberechnung von Entscheidungen während der Suche
Suchen in Listen und Hashtabellen
Kapitel 12: Suchen in Listen und Hashtabellen Einführung in die Informatik Wintersemester 2007/08 Prof. Bernhard Jung Übersicht Einleitung Lineare Suche Binäre Suche (in sortierten Listen) Hashverfahren
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
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
Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1
Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1 Aufgabe 1. / 16 P Instruktionen: 1) In dieser Aufgabe sollen Sie nur die Ergebnisse angeben. Diese können Sie direkt bei den Aufgaben notieren. 2) Sofern
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
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
Hash-Verfahren. Einführung
Hash-Verfahren Prof. Dr. T. Kudraß 1 Einführung Drei Alternativen, wie Dateneinträge k* im Index aussehen können: 1. Datensatz mit Schlüsselwert k.
Hash-Verfahren. Prof. Dr. T. Kudraß 1
Hash-Verfahren Prof. Dr. T. Kudraß 1 Einführung Drei Alternativen, wie Dateneinträge k* im Index aussehen können: 1. Datensatz mit Schlüsselwert k.
Organisationsformen der Speicherstrukturen
Organisationsformen der Speicherstrukturen Bäume und Hashing 1 Motivation Ablage von Daten soll einfachen, schnellen und inhaltsbezogenen Zugriff ermöglichen (z.b. Zeige alle Schüler des Lehrers X am heutigen
Datenstrukturen und Algorithmen. 7. Suchen in linearen Feldern
Datenstrukturen und Algorithmen 7. Suchen in linearen Feldern VO 708.031 Suchen in linearen Feldern [email protected] 1 Inhalt der Vorlesung 1. Motivation, Einführung, Grundlagen 2. Algorithmische
13. C++ vertieft (III): Funktoren und Lambda
13. C++ vertieft (III): Funktoren und Lambda 342 Funktoren: Motivierung 343 Ein simpler Ausgabefilter template void filter(const T& collection, Function f){ for (const auto&
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
Ü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
Was ist ein assoziativer Speicher?
Überblick 17. Datenstrukturen 17.1 Einleitung 17.2 Listen 17.3 Assoziative Speicher 17.4 Bäume 17.5 Mengen 17.6 Das Collections-Framework in Java 17.7 Zusammenfassung 17 Datenstrukturen 3 Assoziative Speicher
Kapitel 6 HASHING. Algorithmen & Datenstrukturen Prof. Dr. Wolfgang Schramm
Kapitel 6 HASHING Algorithmen & Datenstrukturen Prof. Dr. Wolfgang Schramm Übersicht 1 1. Einführung 2. Algorithmen 3. Eigenscha?en von Programmiersprachen 4. Algorithmenparadigmen 5. Suchen & SorGeren
Informatik II Prüfungsvorbereitungskurs
Informatik II Prüfungsvorbereitungskurs Tag 4, 23.6.2016 Giuseppe Accaputo [email protected] 1 Programm für heute Repetition Datenstrukturen Unter anderem Fragen von gestern Point-in-Polygon Algorithmus Shortest
Datenbanken. Interne Datenorganisation:
Interne Datenorganisation: Bisher: Konzeptionelle Betrachtungen einer Datenbank aus Sicht der Anwendung: Modellierung, Normalisieren, Sprache zum Einfügen, Ändern, Löschen, Lesen Jetzt: Betrachtung der
Kapitel 3. Symboltabelle. Symboltabelle Wintersemester 2008/09 1 / 10
Kapitel 3 Symboltabelle Symboltabelle Wintersemester 2008/09 1 / 10 Symboltabelle: Ziele und Kriterien Ziele: Die Merkmale bzw. Schlüssel aller Symbole festlegen, die nicht durch Endzustände des Automaten
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
13. C++ vertieft (III): Funktoren und Lambda
Funktoren: Motivierung 13. C++ vertieft (III): Funktoren und Lambda Ein simpler Ausgabefilter template void filter(const T& collection, Function f){ for (const auto& x:
Inhaltsverzeichnis. Einführende Bemerkungen 11. Das Fach Informatik 11 Zielsetzung der Vorlesung Grundbegriffe
Inhaltsverzeichnis Einführende Bemerkungen 11 Das Fach Informatik 11 Zielsetzung der Vorlesung 12 1. Grundbegriffe 1 3 1.1 1.2 1.3 1.4 1.5 1.6 1.7 Information und Nachricht 1.1.1 Information 1.1.2 Nachricht
4.4.2 Virtuelles Hashing Erweiterbares Hashing Das Gridfile Implementation von Hashverfahren in Java
Inhaltsverzeichnis 1 Grundlagen 1 1.1 Algorithmen und ihre formalen Eigenschaften 1 1.2 Beispiele arithmetischer Algorithmen 5 1.2.1 Ein Multiplikationsverfahren 5 1.2.2 Polynomprodukt 8 1.2.3 Schnelle
11. Elementare Datenstrukturen
11. Elementare Datenstrukturen Definition 11.1: Eine dynamische Menge ist gegeben durch eine oder mehrer Mengen von Objekten sowie Operationen auf diesen Mengen und den Objekten der Mengen. Dynamische
Algorithmen und Datenstrukturen Suchbaum
Algorithmen und Datenstrukturen Suchbaum Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12 Motivation Datenstruktur zur Repräsentation dynamischer Mengen
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... ˆΦ =
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
Kapitel 9. Hashverfahren. 9.1 Einführung
Kapitel 9 Hashverfahren 9.1 Einführung Uns sind bereits Verfahren bekannt, mit denen Datensätze mit einem eindeutigen Schlüssel gespeichert werden (z.b. B*-Bäume). Statt bei der Suche nach einem Schlüssel
Algorithmen und Datenstrukturen 2
Algorithmen und Datenstrukturen 2 Sommersemester 2009 1. Vorlesung Uwe Quasthoff Universität Leipzig Institut für Informatik [email protected] Zur Vorlesung allgemein Vorlesungsumfang:
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
4. Übung zu Algorithmen I 17. Mai 2017
4. Übung zu Algorithmen I 17. Mai 2017 Björn Kaidel [email protected] (mit Folien von Julian Arz, Timo Bingmann, Lisa Kohl, Christian Schulz, Sebastian Schlag und Christoph Striecks) Organisatorisches
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.
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
Freispeicherverwaltung
Freispeicherverwaltung Allgemeine Techniken und Anwendung unter Linux Martin Wahl, 17.11.03 Freispeicherverwaltung 1 Überblick Allgemeines Suchstrategien Verwaltungsstrategien externer / interner Verschnitt
Algorithmen und Datenstrukturen 11
5. Juli 2012 1 Besprechung Blatt 10 Fragen 2 Hashing Allgemein, Hashtablestruktur Sondierungsverfahren 3 Anonyme und innere Klassen Anonyme Klassen Innere Klassen 4 Zirkuläre Arrays 5 Vorbereitung Blatt
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
Algorithmen und Datenstrukturen VO 3.0 Vorlesungsprüfung 19. Oktober 2007
Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen 1 186.089 VO 3.0 Vorlesungsprüfung 19. Oktober
Grundlagen der Informatik
Jörn Fischer [email protected] Willkommen zur Vorlesung Grundlagen der Informatik ADS-Teil Page 2 Überblick Inhalt 1 Eigenschaften von Algorithmen Algorithmenbegriff O-Notation Entwurfstechniken
{0,1} rekursive Aufteilung des Datenraums in die Quadranten NW, NE, SW und SE feste Auflösung des Datenraums in 2 p 2 p Gitterzellen
4.4 MX-Quadtrees (I) MatriX Quadtree Verwaltung 2-dimensionaler Punkte Punkte als 1-Elemente in einer quadratischen Matrix mit Wertebereich {0,1} rekursive Aufteilung des Datenraums in die Quadranten NW,
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
Klausur Informatik B April Teil I: Informatik 3
Informatik 3 Seite 1 von 8 Klausur Informatik B April 1998 Teil I: Informatik 3 Informatik 3 Seite 2 von 8 Aufgabe 1: Fragekatalog (gesamt 5 ) Beantworten Sie folgende Fragen kurz in ein oder zwei Sätzen.
In C und Java müssen Variablen und Methodenergebnisse durch Typangaben erläutert werden. Welche der folgenden Aussagen sind korrekt und welche nicht:
Typprüfung (Compiler / Laufzeit) In C und Java müssen Variablen und Methodenergebnisse durch Typangaben erläutert werden. Welche der folgenden Aussagen sind korrekt und welche nicht: 1) Der Compiler prüft
Lernmodul 7 Algorithmus von Dijkstra
Folie 1 von 30 Lernmodul 7 Algorithmus von Dijkstra Quelle: http://www.map24.de Folie 2 von 30 Algorithmus von Dijkstra Übersicht Kürzester Weg von A nach B in einem Graphen Problemstellung: Suche einer
Algorithmen und Datenstrukturen Bereichsbäume
Algorithmen und Datenstrukturen Bereichsbäume Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12 Überblick Einführung k-d Baum BSP Baum R Baum Motivation
