Teil VII. Hashverfahren

Ähnliche Dokumente
Suchen in Listen und Hashtabellen

Algorithmen und Datenstrukturen

Datenstrukturen in Java

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

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

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

Vorlesung 09: Mengen. Peter Thiemann SS 2010

Java Einführung Collections

Einführung in die Informatik Hashtables

Kapitel 9. Hashverfahren. 9.1 Einführung

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

Datenstrukturen. Mariano Zelke. Sommersemester 2012

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

Programmiertechnik II

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

Dateiorganisation und Zugriffsstrukturen

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

Kap. 4.4: B-Bäume Kap. 4.5: Dictionaries in der Praxis

Algorithmen & Datenstrukturen 1. Klausur

equals und hashcode SortedSet NavigableSet Assoziative Container Programmieren II Dr. Klaus Höppner Hochschule Darmstadt Sommersemester / 32

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

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

J.5 Die Java Virtual Machine

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

Java Schulung. Objektorientierte Programmierung in Java Teil V: Die Java Collection Klassen. Prof. Dr. Nikolaus Wulff

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

Datenstrukturen & Algorithmen

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

Inhalte Informatik. I1 Grundprinzip des objektorientierten Modellierens I3 Modellieren von Netzwerkanwendungen

Algorithmen und Datenstrukturen Balancierte Suchbäume

10. Kapitel (Teil1) BÄUME GRUNDLAGEN. Algorithmen & Datenstrukturen Prof. Dr. Wolfgang Schramm

3. Übung Algorithmen I

Sicherheit von PDF-Dateien

Java Generics & Collections

Beispielblatt VU Algorithmen und Datenstrukturen 1 VU 6.0

Schnittstellen implementieren am Beispiel Suchbaum

1 Polymorphie (Vielgestaltigkeit)

Kap. 4.2: Binäre Suchbäume

Grundlagen der Informatik Generische Klassen

Tutorium Algorithmen & Datenstrukturen

EndTermTest PROGALGO WS1516 A

Die Bedeutung abstrakter Datentypen in der objektorientierten Programmierung. Klaus Kusche, September 2014

Programmieren I. Kapitel 7. Sortieren und Suchen

OPERATIONEN AUF EINER DATENBANK

Übung Datenbanken in der Praxis. Datenmodifikation mit SQL

IT-Sicherheit - Sicherheit vernetzter Systeme -

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)

Kapitel 5: Dynamisches Programmieren Gliederung

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

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

13. Binäre Suchbäume

Variablen - %Hashes Was ist ein Hash? 'Assoziative Arrays'

Einführung in die STL anhand eines ausgewählten Beispiels

Suchen und Sortieren (Die klassischen Algorithmen)

Proseminar C-Programmierung. Strukturen. Von Marcel Lebek

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

Tutoren Simon Andermatt Lukas Beck. Alexis Peter Thomas Ritter

Über Arrays und verkettete Listen Listen in Delphi

Vererbung & Schnittstellen in C#

Tutoren Jan Ebbe Pat Mächler Valentino Rugolo Sascha Scherrer. Grundlagen der Programmierung (CS101) - Blatt 8 Theorie [4 Punkte] - Praxis [12 Punkte]

10.6 Authentizität. Geheimhaltung: nur der Empfänger kann die Nachricht lesen

Digital Rights Management (DRM) Verfahren, die helfen Rechte an virtuellen Waren durchzusetzen. Public-Key-Kryptographie (2 Termine)

Einführung in die Informatik 1

DATENSTRUKTUREN UND ZAHLENSYSTEME

Kodierungsalgorithmen

Übung 9. Quellcode Strukturieren Rekursive Datenstrukturen Uebung 9

Suchen und Sortieren Sortieren. Heaps

Sortierte Folgen 250

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.

Algorithmen und Datenstrukturen

Digitale Magazine ohne eigenen Speicher

Kapitel 11: Wiederholung und Zusammenfassung

Algorithmen und Datenstrukturen Suchbaum

Grundlagen der Programmierung

Programmieren in Haskell

Kapitel 6. Vererbung

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

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

Inhaltsverzeichnis. Web Hacking

Folge 19 - Bäume Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

Kapitel 6. Vererbung

Suchen und Sortieren

Tutorium 5 - Programmieren

Vergleich verschiedener Möglichkeiten des Table-Lookups für größere Tabellen

Aufgabe 1: Eigenschaften von Algorithmen I

im Sekundärspeicher (magnetische und optische Platte (, Band)) gespeichert langsam (Blockzugriff), reichlich, billig, permanent

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

Physische Datenorganisation

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

Übungen zu. Grundlagen der Kryptologie SS Hochschule Konstanz. Dr.-Ing. Harald Vater. Giesecke & Devrient GmbH Prinzregentenstraße 159

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik

3.5 Balancierung gemäß Zugriffshäufigkeit

Modul 122 VBA Scribt.docx

Einführung in die Programmierung Konstanten, dynamische Datenstrukturen. Arvid Terzibaschian

Datenstruktur, die viele Operationen dynamischer Mengen unterstützt

Unterrichtsvorhaben Q2- I:

Relationale Datenbanken in der Praxis

2. Aufgabenblatt mit Lösungen

Digitale Unterschriften Grundlagen der digitalen Unterschriften Hash-Then-Sign Unterschriften Public-Key Infrastrukturen (PKI) Digitale Signaturen

Kapitel 9 Suchalgorithmen

Transkript:

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: Prinzip Hashverfahren: Prinzip Ziel: Dictionary mit Kosten O(1) Speicherung in Feld 0 bis m 1, einzelne Positionen oft als Buckets bezeichnet Hashfunktion h(e) bestimmt für Element e die Position im Feld h sorgt für gute, kollisionsfreie bzw. kollisionsarme Verteilung der Elemente letzteres kann nur annäherungsweise durch Gleichverteilung erreicht werden, da Elemente vorher unbekannt! Prof. G. Stumme Algorithmen & Datenstrukturen Sommersemester 2009 7 2

Hashverfahren: Prinzip Beispiel für Hashen Beispiel: Array von 0 bis 9, h(i) = i mod 10 Array nach Einfügen von 42 und 119: Index Eintrag 0 1 2 42 3 4 5 6 7 8 9 119 Möglichkeit der Kollision: Versuch des Eintragens von 69 Prof. G. Stumme Algorithmen & Datenstrukturen Sommersemester 2009 7 3

Hashverfahren: Prinzip Kollisionsstrategie: Verkettung der Überläufer Idee: alle Einträge einer Array-Position werden in einer verketteten Liste verwaltet 0 1 2 3 4 5 6 7 8 9 100 42 333 5 666 19 202 2 36 Prof. G. Stumme Algorithmen & Datenstrukturen Sommersemester 2009 7 4

Hashfunktionen Grundbegriffe Hashing U = Universum = Menge aller zulässigen Schlüssel n = Anzahl der aktuell gespeicherten Datensätze, meist n U m = Größe der Hashtabelle, häufig m n h : U {0,..., m 1} h(key) heißt Hashwert in Hashtabelle werden Datensätze oder Verweise darauf gespeichert Annahme: keine Duplikate Prof. G. Stumme Algorithmen & Datenstrukturen Sommersemester 2009 7 5

Hashfunktionen Grundlagen: Hashfunktionen hängen vom Datentyp der Elemente und konkreter Anwendung ab für Integer oft h(i) = i mod m (funktioniert gut, wenn m eine Primzahl ist) für andere Datentypen: Rückführung auf Integer Fließpunkt-Zahlen: Addiere Mantisse und Exponent Strings: Addiere ASCII/Unicode-Werte der/einiger Buchstaben, evtl. jeweils mit Faktor gewichtet h(s) = (a 0 s[0] + a 1 s[1] + + a l 1 s[l 1]) mod m Sonstige: Bitdarstellungals Zahl interpretieren. (Es sollte m 2 i gelten, sonst Abhängigkeit von nur wenigen Bits.) Prof. G. Stumme Algorithmen & Datenstrukturen Sommersemester 2009 7 6

Hashfunktionen Hashfunktionen: Anforderungen sollen die Werte gut streuen : gleichmäßige Verteilung der real vorkommenden Schlüssel auf {0,..., m 1} eventuell von Besonderheiten der Eingabewerte abhängig (Buchstaben des Alphabets in Namen tauchen unterschiedlich häufig auf!) sind effizient berechenbar (konstanter Zeitbedarf, auf keinen Fall abhängig von der Anzahl der gespeicherten Werte!) Prof. G. Stumme Algorithmen & Datenstrukturen Sommersemester 2009 7 7

Hashfunktionen Ungünstige Hashfunktionen Beispiel #1: N = 2 i und generierte Artikelnummern mit Kontrollziffer 1, 3 oder 7 am Ende Abbildung nur auf ungerade Adressen Beispiel #2: Matrikelnummern in Hashtabelle mit 100 Einträgen Variante a: erste beiden Stellen als Hashwert Abbildung auf wenige Buckets Variante b (besser): letzte beiden Stellen gleichmäßige Verteilung Prof. G. Stumme Algorithmen & Datenstrukturen Sommersemester 2009 7 8

Kollisionsstrategien Kollisionsstrategien Hashing mit Verkettung (engl.: chaining) Variante 1: erster Eintrag direkt in Hashtabelle, weitere in Liste Variante 2: Hashtabelle enthält nur Verweise auf Listen Spezialfallbehandlung entfällt in Hashtabelle muss kein Speicherplatz für Datensätze reserviert werden statt Listen sind auch andere Datenstrukturen (z.b. Baum) möglich Offene Adressierung/Sondierungsverfahren bei Kollision anderen Platz innerhalb der Hashtabelle suchen z.b. h(k) h(k) + 1 h(k) + 2... Problem: Delete erzeugt Lücke. Bei Search dort abbrechen? Prof. G. Stumme Algorithmen & Datenstrukturen Sommersemester 2009 7 9

Kollisionsstrategien Bsp.: Lineares Sondieren leer insert 89 insert 18 insert 49 insert 58 insert 69 0 49 49 49 1 58 58 2 69 3 4 5 6 7 8 18 18 18 18 9 89 89 89 89 89 Prof. G. Stumme Algorithmen & Datenstrukturen Sommersemester 2009 7 10

Aufwand Aufwand beim Hashen bei geringer Kollisionswahrscheinlichkeit: Suchen in O(1) Einfügen in O(1) Löschen bei Sondierverfahren: nur Markieren der Einträge als gelöscht O(1), oder Rehashen der gesamten Tabelle notwendig O(n) Füllgrad über 80 % : Einfüge- / Suchverhalten wird schnell dramatisch schlechter aufgrund von Kollisionen (bei Sondieren) Prof. G. Stumme Algorithmen & Datenstrukturen Sommersemester 2009 7 11

Aufwand Aufwand beim Hashen: Verkettete Überläufer Füllgrad/Belegungsgrad (load factor) α = n/m n Anzahl gespeicherter Elemente m Anzahl Buckets = durchschnittliche Länge der Überlauflisten erfolglose Suche (Hashing mit Überlaufliste): O(1 + α) erfolgreiche Suche ebenfalls in dieser Größenordnung (bei Annahme der Gleichverteilung) worst case: O(n) Prof. G. Stumme Algorithmen & Datenstrukturen Sommersemester 2009 7 12

Hashen in Java Anwendung in Java Collection Framework Object enthält int hashcode() liefert Adresse des Objekts kann in Unterklassen überschrieben werden Abstimmung mit Methode equals notwendig (gleich gleicher Hashwert) Interface Set wird implementiert durch HashSet<E> (Implementierung durch Hashing) und TreeSet<E> (Implementierung durch ausgeglichenen Suchbaum) Interface Map<K, V> (Schlüssel/Wert-Paare) wird implementiert durch HashMap<K, V> (Hashing wird auf Schlüssel angewandt) TreeMap<K, V> (Implementierung durch ausgeglichenen Suchbaum) Prof. G. Stumme Algorithmen & Datenstrukturen Sommersemester 2009 7 13

Hashen in Java Zusammenfassung Berechnung der Adresse eines Eintrags in einer Datenstruktur statt Suchen erfordert geeignete Hashfunktion Menge möglicher Elemente > Anzahl verfügbarer Positionen Kollisionsbehandlung Problem: feste Größe des Bildbereichs dynamische Hashverfahren Literatur: Saake/Sattler: Algorithmen und Datenstrukturen, Kap. 15 Prof. G. Stumme Algorithmen & Datenstrukturen Sommersemester 2009 7 14

Hashen in Java Zusammenfassung: ADT und Datenstrukturen ADT Stack Queue Datenstrukturen Feld un/sortiert (Hash-Tabelle) Liste un/sortiert einfach- verk. doppelt- verk. Dictionary Priority Queue natürlicher Suchbaum ausgeglichener Suchbaum Heap AVL ( 4,2) Prof. G. Stumme Algorithmen & Datenstrukturen Sommersemester 2009 7 15