Kapitel 4. Streuen. (h K injektiv) k 1 k 2 K = h(k 1 ) h(k 2 )

Ähnliche Dokumente
Algorithmen und Datenstrukturen

Suchen in Listen und Hashtabellen

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

Vorlesung : Binäre Entscheidungsdiagramme (BDDs) Dr. Carsten Sinz

6-1 A. Schwill Grundlagen der Programmierung II SS 2005

Suchen und Sortieren Sortieren. Heaps

! DBMS organisiert die Daten so, dass minimal viele Plattenzugriffe nötig sind.

Einführung in die Informatik Hashtables

Kapitel 9. Hashverfahren. 9.1 Einführung

Programmiertechnik II

In vergleichsbasierten Suchbäumen wird nicht in Schlüssel hineingeschaut.

Randomisierte Algorithmen

Algorithmen & Datenstrukturen 1. Klausur

8. Quadratische Reste. Reziprozitätsgesetz

Faktorisierung ganzer Zahlen mittels Pollards ρ-methode (1975)

AVL-Bäume Analyse. Theorem Ein AVL-Baum der Höhe h besitzt zwischen F h und 2 h 1 viele Knoten. Definition Wir definieren die nte Fibonaccizahl:

Definition. Gnutella. Gnutella. Kriterien für P2P-Netzwerke. Gnutella = +

Kap. 4.2: Binäre Suchbäume

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Literatur. Dominating Set (DS) Dominating Sets in Sensornetzen. Problem Minimum Dominating Set (MDS)

9.4 Binäre Suchbäume. Xiaoyi Jiang Informatik II Datenstrukturen und Algorithmen

Mitschrift Vorlesung Einführung in die Kryptographie vom 18. Januar 2011

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

3. Übung Algorithmen I

Suchbäume. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Datenstrukturen in Java

8: Zufallsorakel. Wir suchen: Einfache mathematische Abstraktion für Hashfunktionen

Der linke Teilbaum von v enthält nur Schlüssel < key(v) und der rechte Teilbaum enthält nur Schlüssel > key(v)

5.2 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G =(V, E, c)

1 Ordnung muß sein. 1.1 Angeordnete Körper. 1.2 Folgerungen aus den Anordnungsaxiomen. ( c) (b a) > 0. Somit a c b c > 0.

Sortierte Folgen 250

Erinnerung/Zusammenfassung zu Abbildungsmatrizen

Datenstrukturen & Algorithmen

Digitale Magazine ohne eigenen Speicher

WS 2008/09. Diskrete Strukturen

1. Grundlagen Sortieren Vertauschen Selektion Einfügen Quicksort Suchen...

Kapitel 8: Physischer Datenbankentwurf

Urbild Angriff auf Inkrementelle Hashfunktionen

1. Woche Einführung in die Codierungstheorie, Definition Codes, Präfixcode, kompakte Codes

Name:... Vorname:... Matrikel-Nr.:... Unterschrift:...

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen?

Beispiel vor dem Beweis:

PageRank-Algorithmus

AquaZIS. Zeitreihenkorrektur

Lösungsvorschläge. zu den Aufgaben im Kapitel 4

Theoretische Informatik SS 04 Übung 1

9.2. DER SATZ ÜBER IMPLIZITE FUNKTIONEN 83

Der Zwei-Quadrate-Satz von Fermat

1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen

RSA Full Domain Hash (RSA-FDH) Signaturen

DATENSTRUKTUREN UND ZAHLENSYSTEME

Programmieren in Haskell

2. Universelle Algebra

s zuordnen. Änderungen, Irrtümer und Druckfehler vorbehalten. Bearbeitet von Harald Borges. Stand April

Einführung in die Informatik 1

1. Musterlösung. Problem 1: Average-case-Laufzeit vs. Worst-case-Laufzeit

Dateiorganisation und Zugriffsstrukturen

IT-Sicherheit - Sicherheit vernetzter Systeme -

Suchen und Sortieren

Alignment-Verfahren zum Vergleich biologischer Sequenzen

Leitfaden Lineare Algebra: Determinanten

- k Maximalwerte aus Menge mit n >> k Elementen (Rangfolgebestimmung von Suchmaschinen!) Die typische Operationen:

Algorithmen. Consistent Hashing Bloom Filter MapReduce. Distributed Hash Tables. Einführung 1

Programmieren I. Kapitel 7. Sortieren und Suchen

4 Algorithmen und Datenstrukturen

Betriebsarten für Blockchiffren

Algorithmen und Datenstrukturen Suchbaum

Name: Seite 2. Beantworten Sie die Fragen in den Aufgaben 1 und 2 mit einer kurzen, prägnanten Antwort.

ABITURPRÜFUNG 2009 LEISTUNGSFACH INFORMATIK

In beiden Fällen auf Datenauthentizität und -integrität extra achten.

RSA Full Domain Hash (RSA-FDH) Signaturen

t r Lineare Codierung von Binärbbäumen (Wörter über dem Alphabet {, }) Beispiel code( ) = code(, t l, t r ) = code(t l ) code(t r )

Kademlia A Peer-to-peer Information System based on the XOR Metric

Coupon Collector's-Problem (Sammelbilderproblem) Name: Walter Wolf Matrikelnr.: Dozent: Dr. W. Kössler

Präfx Trie zur Stringverarbeitung. Cheng Ying Sabine Laubichler Vasker Pokhrel

PROGRAMMIEREN MIT C. }, wird kompiliert mit dem Befehl. (-o steht für output) und ausgeführt mit dem Befehl

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Divide-and-Conquer. Vorlesung 9: Quicksort (K7)

Codes und Codegitter. Katharina Distler. 27. April 2015

Algorithmik II. a) Fügen Sie in einen anfangs leeren binären Baum die Schlüsselfolge 20, 28, 35, 31, 9, 4, 13, 17, 37, 25 ein.

Software ubiquitärer Systeme

Bäume. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 10: Collections 4. Inhalt. Bäume. Einführung. Bäume.

Kryptographie und Komplexität

Teil II. Nichtlineare Optimierung

Allgemein. Einrichtung. PHOENIX Tool WinUser2PHOENIXUser. Version: Stand:

Datenstrukturen und Algorithmen

Abschnitt: Algorithmendesign und Laufzeitanalyse

Didaktik der Algebra Jürgen Roth Didaktik der Algebra 4.1

Vorkurs Informatik WiSe 15/16

Mathematik I Internationales Wirtschaftsingenieurwesen

Theoretische Grundlagen der Informatik

Modellierung und Programmierung 1

Modelle und Statistiken

Einführung. Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Vorlesungen zur Komplexitätstheorie. K-Vollständigkeit (1/5)

Lenstras Algorithmus für Faktorisierung

16. All Pairs Shortest Path (ASPS)

OPERATIONEN AUF EINER DATENBANK

Graphentheorie. Organisatorisches. Organisatorisches. Organisatorisches. Rainer Schrader. 23. Oktober 2007

1 Visual Basic for Application mit Excel (VBA)

Lineare Gleichungssysteme

Transkript:

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 den Schlüsseln u Zahlen handelt. Dies ist keine starke Voraussetzung, weil sich die Eleente anderer Schlüsseluniversen als Zahlen codieren lassen. Bezeichnungen: (Schlüssel-) Universu U N 0 Schlüsselenge K U, K = n Hashtabelle H[0,..., ] (Array von Zeigern auf Dateneleente) Durch eine Hashfunktion h : U {0,..., } wird jede zulässigen Schlüssel k U seine Speicherstelle H[h(k)] in der Hashtabelle H zugewiesen. I Idealfall gilt für die Menge K U der vorkoenden Schlüssel typisch in JAVA: Speicheradresse Object.hashCode hash (engl.): streuen k k 2 K = h(k ) h(k 2 ) (h K injektiv) weil Einfügen, Suchen und Löschen dann jeweils in Θ() realisiert werden können. 4. Beispiel (Hashfunktionen). h(k) = k od für Prizahl (Divisions- oder Kongruenzethode) 60

Algorithen und Datenstrukturen (WS 2008/09) 6 2. h(k) = (kα kα ) z.b. für α = φ = 5 0, 6803 goldener 2 Schnitt (Multiplikationsethode) Die n+ Intervalle nach Einfügen von,..., n haben nur 3 verschiedene Gröÿen; bei α = φ a ähnlichsten. 4. Kollisionen 4. I Allgeeinen ist allerdings h(k ) = h(k 2 ) für einige h, h 2 bezeichnen wir it Kollisionen, k, k 2 heiÿen Synonye. K. Dies p,n := P (keine Kollisionen) = 2... n+, falls Schlüssel durch h gleichäÿig gestreut werden, d.h. alle Positionen gleichwahrscheinlich sind. 4.2 Beispiel (Geburtstagsparadoxon) p 365,22 > 0.5 > p 365,23 Anschauliche Deutung: bei 23 oder ehr Personen ist die Wahrscheinlichkeit, dass zwei a gleichen Tag Geburtstag haben, gröÿer als die Wahrscheinlichkeit, dass alle an verschiedenen Tagen Geburtstag haben. Herleitung: p,n = n i=0 i Für welches n ist p,n /2? = n i= ( i ) n i= e i/ = e P n i= i = e (n 2)/ e (n 2)/ = 2 ( ) n 2 / = ln 2 ( ) n = ln 2 2 n(n ) 2 n 2(ln 2) ( 22.49 für = 365)

Algorithen und Datenstrukturen (WS 2008/09) 62 Erwartete Anzahl Kollisionen Sei { falls h(ki ) = h(k X ij = j ) (Kollision von k i, k j ) 0 sonst Bei gleichäÿiger Streuung ist E(X ij ) = / für i j. ( ) E(X) = E X ij = E(X ij ) = / = i<j i<j i<j I Beispiel war = 365, soit gilt hier { < für n < 27 E(X) = für n 27 I Allgeeinen gilt also etwa bei n 2. E(X) n(n ) 2, 4.3 Def inition (Belegungsfaktor) Wir denieren den Belegungsfaktor (load factor) als β = n. ( ) n / 2 entscheidend für Nutzen? Erwartete Anzahl leerer Felder? Eleent k K steht nicht an Position i {0,..., } it Wahrscheinlichkeit =. Die Wahrscheinlichkeit, dass Position i nicht belegt ist, ist dait [ ] β P (i / {h(k ),..., h(k n )}) = ( )n = ( ) e β }{{} e / { 0 H[i] belegt = E(X i ) für X i = H[i] frei E(X) = E( X i ) = E(X i ) = e β = e β. Die erwartete Anzahl belegter Einträge ist e β = ( e β ). β = /2 : e /2 0.39 Belegung 39% β = : e 0.63 Belegung 63%

Algorithen und Datenstrukturen (WS 2008/09) 63 4.2 Kollisionsbehandlung 4.2. Verkettung Idee Die Hashtabelle wird als Array von Zeigern auf Listen ipleentiert, wobei die Listen alle Schlüssel it gleiche Hashfunktionswert enthalten. 4.4 Beispiel (h(k) = k od p) 0 p H : 4.5 Def inition (Sondieren) Wenn die Hashtabelle über Verkettung realisiert wird, nden bei find eventuell ehrere Zugrie auf Zeiger statt (Sondieren). U die Anzahl der Sondierschritte zu analysieren, denieren wir A(, n) := ittlere Anzahl bei erfolgreicher Suche. A (, n) := ittlere Anzahl, falls Schlüssel nicht in der Hashtabelle ist. Wir gehen wieder davon aus, dass für das verwendete Modell P (h(k) = i) = k U, i {0,..., } gilt.

Algorithen und Datenstrukturen (WS 2008/09) 64 Die ittlere Länge der Listen ist gerade der Belegungsfaktor β = n [0, ). Also ist A (, n) = + β = + n. Zu A(, n): Die Suche nach k i ergibt genau die Sondierungen wie bei Einfügen von k i, wenn vorher k,..., k i eingefügt wurden. I Mittel ist dait A(, n) = n n i=0 A (, i) = n n i=0 ( + i ) = + n n i=0 i = + (n ) n = + β + β 2n 2 2 2 Statistische Eigenschaften Sei β = (n = ). Dann sind 63% der Hashtabelle T besetzt, 37% sind frei (s.o.). Wie groÿ uss n i Mittel sein, dait alle Plätze in T belegt sind? Coupon Collector Proble Sei (k i ) i=,2,3,..., k i U die Folge in T einzufügender Schlüssel. Sei (i) die Anzahl belegter Plätze nach Einfügen von k,..., k i und sei i k := in{i (i) = k}, d.h. Einfügen von k ik belegt erstals den k-ten Platz in T. Index k Wir betrachten eine Zufallsvariable X it X k = X = i k i k k= X k Dann ist die gesuchte Zahl für n gerade E[X]. i : 2 3 4 5 k k 2 k 3 k 4 k 5 k k (i) 2 3 4 i i 2 i 3 i 4 i 5 i i X X 2 X 3 X 4 X 5 X X etwas unglücklich bei k für key Sei i k i < i k. Dann ist p k := E[X k ] = p k E[X] = P (i + = i k ) = k+ E[ X k] = = k= E[X k] = = H k ln k+

Algorithen und Datenstrukturen (WS 2008/09) 65 I Mittel sind also n = ln Einfügeoperationen notwendig, u alle Positionen in der Hashtabelle zu füllen. Dann ist β = ln = ln >. 4.2.2 Open Hashing Idee In jede Feld der Hashtabelle H wird nur ein Eleent gespeichert (daher β ). Füge Schlüssel k ein: h(k ) = i, H[i] = k. Füge Schlüssel k 2 ein (Kollision): h(k 2 ) = i, H[i] besetzt. Finde freien Platz in H. Wähle eine Folge (d i ) i=,2,..., d i Z und teste H[(h(k) + d i ) od ], i =, 2, 3,... Für die Folge (d i ) i gibt es verschiedene Wahlen: lineares Sondieren: d i = i quadratisches Sondieren: d i = i 2 double Hashing: d i = i h (k), wobei h : U {,..., } eine zweite Hashfunktion ist it h (k) 0 k U. Hier sollte pri sein! Waru? 4.6 Proble Einfügen und Suchen ist dait klar, Löschen ist aber ein Proble. Index h? bei 4.7 Beispiel Sei h(k) = h(k ) = i und füge k, k ein: H : k k i i + Lösche dann k. Anschlieÿend versagt die Suche nach k! Lösung: arkiere gelöschte Schlüssel als gelöscht

Algorithen und Datenstrukturen (WS 2008/09) 66 bei Suche werden sie behandelt wie belegte Felder bei Einfügen wie freie Felder ungünstig, wenn oft Eleente gelöscht werden, da die Suche verteuert. 4.8 Proble Clusterbildung 4.9 Beispiel (lineares Sondieren) H : i i + Nächster einzufügender Schlüssel: k U P (h(k) = i + ) = P (h(k) = i) = 5 } Cluster wachsen tendentiell Analyse lineares Sondieren double Hashing A ( + ) A ln( 2 β β A ( + ) A 2 ( β) 2 β β ) Beweis. lineares Sondieren: schwer, s. Schöning S.40-4. Referenz double Hashing: (idealisierende) Annahe: Sondierungen h (k), h 2 (k),... zur erfolglosen Suche von k it P (H[h i (k)] ist frei) = n = β E[Anzahl Sondierungen bis freies Feld gefunden] = β

Algorithen und Datenstrukturen (WS 2008/09) 67 Also A (n, ) = β. A(n, ) = n n i=0 A (, i) = n n i=0 = i n = β ( n+ + + ) = β (H H n ) β (ln ln( n)) = β ln n = β ln β n i=0 i 4.3 Kollisionsvereidung 4.3. Streufunktionen Ziel gleichäÿige Streuung durch Hashfunktion, wie in der Berechnung der Kollisionswahrscheinlichkeiten unterstellt. Proble Wir wissen nicht, welche Schlüssel K U gespeichert werden. Schlistenfalls ist h(k ) = H(k 2 ) k, k 2 K Sondieren bei Suche entspricht linearer Suche O(n). Schlüsselengen K U führen zu sehr verschiedenen Laufzeiten. Versuche daher, die Wahrscheinlichkeit für schlechtes Laufzeitverhalten besser auf diese zu verteilen. Idee Wähle aus einer Menge von Hashfunktionen zufällig eine aus. H {h : U {0,..., }} 4.3.2 Universelles Streuen 4.0 Def inition (universelles Streuen) Eine Failie von Streufunktionen H {h : U {0,..., }} heiÿt universell, falls H {h H : h(k ) = h(k 2 )} k, k 2 U.

Algorithen und Datenstrukturen (WS 2008/09) 68 Bei zufälliger Wahl h H sind wir dann berechtigt, P (h(k ) = h(k 2 )) = anzunehen. 4. Satz Ist H universell, dann ist für k {k,..., k n } = K U bei zufällig gewählte h H die erwartete Anzahl Kollisionen gerade n = β. Beweis. Sei C ij eine Zufallsvariable it { h(ki ) = h(k C ij = j ) 0 sonst Da H universell ist, ist P (C ij = ) = E k j K\{k i } C ij = k j K\{k i }, und es folgt für k = k i E(C ij ) K = β. Die erwartete Anzahl Kollisionen entspricht dann also wie erhot de Belegungsfaktor β. 4.2 Satz Die Failie von Streufunktionen H p = {(ak + b od p) od : 0 < a < p, 0 b < p}, p pri, p > ist universell. Beweis. Sei h a,b H p it h a,b (k) = (ak + b od p) od. Betrachte zunächst für k, k {0,..., p } r = (ak + b) s = (ak + b) od p od p Dann ist r s }{{} a (k k ) od p, also r s falls k k, weil p pri ist. 0 Es gibt also zunächst keine Kollisionen der Zahlen {0,..., p }, sondern diese werden nur perutiert.

Algorithen und Datenstrukturen (WS 2008/09) 69 Auÿerde liefert jede der (p ) p Wahlen für (a, b) ein anderes Paar r s, denn gegeben r s können wir nach a = (r s) (k k ) }{{} Inverses bzgl. Z p b = (r ak) od p od p auösen. Weil es aber auch nur p(p ) Paare (r, s) it r s gibt, liegt eine Bijektion vor. Werden a, b zufällig gewählt, dann erhalten wir also auch jedes Paar r s {0,..., p } it gleicher Wahrscheinlichkeit. Die Kollisionswahrscheinlichkeit von k k U entspricht dait der Wahrscheinlichkeit, dass r s od für zufällig gewählte r s {0,..., p }. Für festes r ist die Anzahl der s it r s und r s od höchstens p p + = p und wegen der zufälligen Wahl aus den p öglichen s r ist die Kollisionswahrscheinlichkeit für k k U höchstens. Also ist H p universell. Wir wollen nun noch eine andere universelle Failie von Streufunktionen betrachten. Annahe U besteht aus Bitstrings fester Länge, ist pri. Zerlege K U in Blöcke der Länge log k : k r k k 0 0 k i <, i = 0,..., r Wir denieren die Menge von Hashfunktionen H B = {h a : U {0,..., }} durch ( r ) h a (k) = a i k i od i=0 wobei a = (a r,..., a 0 ) {0,..., } r+. Dait gilt H B = r+.

Algorithen und Datenstrukturen (WS 2008/09) 70 4.3 Satz H B ist universell. Beweis. Seien k k U, dann k i k i für ein i {0,..., r}. OBdA. sei i = 0. Für ein h a H B gilt dann h a (k) = h a (k ) r a i k i i=0 r a i k i i=0 a 0 (k 0 k 0) od r a i (k i k i ) i= a 0 (k 0 k 0) }{{} ult. Inv. in (Z,+, ) od r a i (k i k i ) i= od Für alle Wahlen von (a r,..., a ) {0,..., } r a 0 {0,..., } it h a (k) = h a (k ). Also gilt existiert genau ein P (Kollision k k ) = {a : h a(k) = h a (k )} H B = r r+ =. 4.4 Ausblick viele andere Techniken zur Kollisionsbehandlung, z.b. Cuckoo-Hashing. viele andere Techniken zur Konstruktion von Hashfunktionen, z.b. perfektes Hashing (für statische Schlüsselengen). viele andere Anwendungen, z.b. Bloo-Filter.. s. Übung