Algorithmen und Datenstrukturen 9. Vorlesung

Ähnliche Dokumente
Übersicht. Einführung Universelles Hashing Perfektes Hashing

SS17 Algorithmen und Datenstrukturen 5. Kapitel Hashverfahren

Algorithmen und Datenstrukturen 8. Vorlesung

Algorithmen und Datenstrukturen SS09. Foliensatz 12. Michael Brinkmeier. Technische Universität Ilmenau Institut für Theoretische Informatik

Hashing II. Übersicht. 1 Hashing und Verkettung. 2 Offene Adressierung

Hashing II. Übersicht. 1 Hashing und Verkettung. 2 Offene Adressierung

Vorlesung Datenstrukturen

Eine universelle Klasse von Hash-Funktionen

SS10 Algorithmen und Datenstrukturen 2. Kapitel Fundamentale Datentypen und Datenstrukturen

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.

6/23/06. Universelles Hashing. Nutzen des Universellen Hashing. Problem: h fest gewählt es gibt ein S U mit vielen Kollisionen

12. Hashing. Hashing einfache Methode um Wörtebücher zu implementieren, d.h. Hashing unterstützt die Operationen Search, Insert, Delete.

Mathematik für Chemiker I

Algo rithm en und D atenstruk turen 9. V o rlesung

RWTH Aachen, Lehrstuhl für Informatik IX Kapitel 3: Suchen in Mengen - Datenstrukturen und Algorithmen - 51

Hashing. Überblick Aufgabe Realisierung

Klausur Algorithmen und Datenstrukturen SS August Arbeitszeit 90 min

Algorithmen und Datenstrukturen

Informatik II, SS 2016

Vorlesung für Schüler

Anwendungen der Potenzreihenentwicklung: Approximation, Grenzwerte; Wachstum

Grundlagen: Algorithmen und Datenstrukturen

13. Hashing. AVL-Bäume: Frage: Suche, Minimum, Maximum, Nachfolger in O(log n) Einfügen, Löschen in O(log n)

Satz 23 In einer Hashtabelle der Größe n mit m Objekten tritt mit Wahrscheinlichkeit

Aufgaben und Lösungen Ausarbeitung der Übungsstunde zur Vorlesung Analysis I

Unterlagen zu endlichen Körpern. Erhard Aichinger

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

NAME, VORNAME: Studiennummer: Matrikel:

Hashing Hashfunktionen Kollisionen Ausblick. Hashverfahren. Dank an: Beate Bollig, TU Dortmund! 1/42. Hashverfahren

Datenstrukturen und Algorithmen. Vorlesung 10

Anleitung zur Berechnung von Ableitungsfunktionen

6. Binäre Suchbäume. Binäre Suchbäume

Algorithmen und Datenstrukturen 3. Vorlesung

Numerisches Programmieren, Übungen

Beispiel: (Strukturerhaltung) Begriffsklärung: (AVL-Baum) Rotationen auf Suchbäumen: Gestaltsanalyse: Lemma: Beweis: siehe Vorlesung

EADS 3.3 Gewichtsbalancierte Bäume 95/598 ľernst W. Mayr

Humboldt-Universität zu Berlin Berlin, den Institut für Informatik

1 Komposition von Chiffren

P ( Mindestens zwei Personen haben am gleichen Tag Geb. ) (1) = 1 P ( Alle Personen haben an verschiedenen Tagen Geb. ) (2)

Numerische Differenziation

Mathematik 1 für Studierende der Biologie Teil II: Limes & Konvergenz

Algorithmen und Datenstrukturen Hashverfahren

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

Repetitorium Analysis I für Physiker

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

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

Informatik II, SS 2014

3. Übung Algorithmen I

Algorithmen I. Tutorium 1-4. Sitzung. Dennis Felsing

Algorithmen und Datenstrukturen 13. Vorlesung

Hashing. Überblick Aufgabe Realisierung

Orientierungsaufgaben für die BESONDERE LEISTUNGSFESTSTELLUNG ab 2015 MATHEMATIK

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Informatik II, SS 2018

Algorithmen & Datenstrukturen Lösungen zu Blatt 9 HS 16

Hashing I. 1 Direkte Adressierung. 2 Grundlagen des Hashings. 3 Kollisionsauflösung durch Verkettung. 4 Hashfunktionen. 5 Offene Adressierung

Teil VII. Hashverfahren

Kap. 5 Hashing. 15./16. VO DAP2 SS /18. Juni 2009

Der Hauptsatz der Differential und Integralrechnung

Realschulabschluss/Sekundarabschluss I 2013 Mathematik

8. Differentiation. f(x) f(x 0 ) =: f,x0 (x) lim

Rudolphs Schlitten. Aufgabe. Autor: Jochen Ricker

Algorithmen und Datenstrukturen SoSe 2008 in Trier. Henning Fernau Universität Trier

Numerische Simulation von Differential-Gleichungen der Himmelsmechanik

Informatik II, SS 2016

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?

Explizite, eingebettete und implizite RK-Verfahren

6. Die Exponentialfunktionen (und Logarithmen).

Datenstrukturen & Algorithmen Lösungen zu Blatt 5 FS 14

15 / 16 I GK EF Übung 2 Dez.15

Algorithmen und Datenstrukturen 7. Vorlesung

Differentialrechnung. Kapitel 7. Differenzenquotient. Graphische Interpretation des Differentialquotienten. Differentialquotient

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Such-Algorithmen für Wörterbücher. Wörterbuch. Sommersemester Dr.

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

Lösung - Serie 3. D-MAVT/D-MATL Analysis I HS 2017 Dr. Andreas Steiger. 1. MC-Aufgaben (Online-Abgabe)

Funktionentheorie A. K. Hulek

14. Hashing. Motivation. Naive Ideen. Bessere Idee? k(s) = s i b i

Algorithmen und Datenstrukturen 3. Vorlesung

Algorithmen und Datenstrukturen (für ET/IT)

3.2 Polarkoordinaten und exponentielle Darstellung

Algorithmen und Datenstrukturen (für ET/IT) Programm heute. Sommersemester Dr. Tobias Lasser

r 11 r 12 r 13 0 r 22 r r 33 l ik r kj die Gleichungen: k= (II) 2 (I) = 3 2 1

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

Informatik II, SS 2018

Teil 1: Suchen. M.O.Franz, Oktober 2007 Algorithmen und Datenstrukturen - Suchen 1-1

TU Dresden Fakultät Mathematik Institut für Numerische Mathematik 1

Das Mehrgitterverfahren

Skulptur. 0,25 m. 1,65 m 1,7 m Sockel. 0,6 m 0,6 m 10 m. Aufgabe 1: Die Skulptur

Informatik II, SS 2014

7. Natürliche Exponential- und Logarithmusfunktion 7.1 Die natürliche Exponentialfunktion

4.3.2 Ableitungsregeln

Hashing. Übersicht. 5 Hashing

Mathematik GK 11 m3, AB 06 Klausurvorbereitung Differentialq. Lsg x 3 9x 4 2x 2 x 4. 4x 3 9x 4 : 2x 2 x 4 =2x 1 x 3 2x 2 8x

AN2 - Praktikumsaufgaben 3

Binäre Suchbäume. 6. Binäre Suchbäume. Einfügen in binären Suchbäumen

Dictionary Definition

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.

Implementierung von Mengen (und Wörterbücher): Alternative zu Suchbäumen

Grundlagen der Algorithmen und Datenstrukturen Kapitel 4

Transkript:

T Algoritmen und Datenstrukturen Vorlesung Martin Dietzfelbinger Juni S : U [m] U : Universum der Sclüssel [m] ={,,m } : Indebereic für Tabelle T S U, S = n U m FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Problem: Kollisionen (unvermeidlic!) Auswege: Verkettung Gesclossenes Hasing b v r u n d a b n v d r u a Analysiere erwartete Kosten für lookup, insert, delete Hierfür genügt: Analysiere erwartete Anzal der Sclüsselvergleice Vorausgesetzt: Irgendeine Quelle für Zufall Pr(A): Warsceinlickeit für Ereignis A E(X): Erwartungswert der Zufallsvariablen X Hatten: Analyse von Hasing mit verketteten Listen unter der abgescwäcten Uniformitätsanname (UF ) : Für je Sclüssel z in U gilt: Pr(() =(z)) m FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

Einface Hasfunktionen Divisionsrestmetode Multiplikationsmetode Lineare Funktionen über Körper Z p Qualitätskriterien: Ansprucsvollere Hasfunktionen ) Zeit für Auswertung von () (klein!) ) Warsceinlickeit für Kollisionen one Annamen über die Sclüsselmenge S (änlic der zufälligen Situation!) ) Effizientes Generieren einer neuen Hasfunktion (benötigt z B bei der Verdoppelungsstrategie) ) Platzbedarf für die Speicerung von (Programm, Parameter) (gering gegenüber n!) FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Universelles Hasing Bei der Festlegung der Hasfunktion wird (kontrolliert) Zufall eingesetzt Randomisierter Algoritmus Analyse berut auf erzwungenen Zufallseigenscaften von nict auf Annamen über S Proposition Es sei U {,,s } r, und m s eine Primzal [Beispiel: U = ASCII = {,,}, s =, m = ] a,,a r seien zufällig gewält aus [m] ={,,,m } (In empty(m)) Definiere ( r ) ( c c r )= a i c i mod m }{{} i= Dann gilt für, z U mit z: Pr(() =(z)) = m Damit ist (UF ) erfüllt! FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

Beweis: Sei =(c,,c r ), z =(d,,d r ) Recne im Körper Z m = Z/mZ = [m] (also modulo m) Setze u = z =(c d,,c r d r ) Es gibt m r viele Möglickeiten für a =(a,,a r ) Wie viele davon erfüllen ( r i= a ic i )modm =( r ( i= a id i )modm, r ) d i= a i(c i d i ) mod m =? Dies sind genau die Elemente der Menge ( : Skalarprodukt) W u = {(a,,a r ) Z r m (a,,a r ) u =} Variante: U [p], p Primzal Tabellengröße m p beliebig Wäle a aus {,,p } zufällig Definiere () =((a ) modp) modm Proposition Nun gilt für, z U mit z: Pr(() =(z)) m (Beweis: Modifikation des letzten Beweises) W u ist ein (r )-dimensionaler Untervektorraum von Z r m! Kardinalität: m r, also Anteil an Z r m r m: m r = m FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Proposition Wenn man beim multiplikativen Hasing (wobei U =[ k ], m = l ) () =(a mod k ) div k l als a eine zufällige ungerade Zal in [ k ] wält, dann gilt für beliebige, z U, z: (Beweis: Originalliteratur) Pr(() =(z)) l = m Tabellenasing Lineare Funktionen über Z -Vektorraum {, } n : U =Σ r, mit Σ={,,s } m = l mit l w (w: Wortlänge, z B w =) [m] entsprict {, } l Repräsentation der Hasfunktion : Array A[ r, s ] mit Einträgen aus {, } w (c c r )= die ersten l Bits von A[,c ] A[r, c r ] Dabei: ist bitweises XOR, auf ganzes Wort angewendet (Mascinenoperation effizient!) FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

Beispiel: Σ={, } (Sclüssel sind Zalen in Oktalnotation), w =, r =, l = A: Bucstaben i = Nacteil: Array A[ r, s ] benötigt Platz r s (Wörter) Beispiel: r =ASCII-Zeicen pro Wort, Σ={, }, w = A[ r, s ] benötigt rs(w/)= = Bytes, d knapp kb Sinnvoll nur für große Hastabellen Platzsparend, etwas langsamer: Σ={, }, Tetraden Platz im Beispiel: rs(w/)= = Bytes ((,,,,, )) = (die ersten Bits von ) = (die ersten Bits von ) = FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Vorteile von Tabellenasing: Etrem scnelle Auswertung ( ebenso scnell wie +) Dasselbe A kann für m =,,,, w benutzt werden Ideal für die Kombination mit der Verdoppelungsstrategie: Verdopple Tabellengröße = eröe l um ; Einträge in A bleiben unverändert Beweisbar gutes Veralten, wenn Einträge von A zufällig Proposition Wenn die Einträge in Array A[ r, s ] zufällig gewält werden, dann gilt für, z U mit z: Pr(() =(z)) = m Beweis: Übung Leicte Modifikation von vorerigen Beweisen liefert: Proposition Wenn Pr(() =(z)) c m,für beliebige, z U, z, und wenn wir Hasing mit verketteten Listen benutzen, dann ist die erwartete Zal von Sclüsselvergleicen öcstens c α bei der erfolglosen Suce öcstens + c α (Mittelung über,, n ) bei der erfolgreicen Suce Wenn α α sicergestellt ist, α konstant ( Verdoppelungsstrategie): Erwartete Suczeit ist O() FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

Universelles Hasing Eine Menge H von Hasfunktionen, d H { : U [m]}, eißt c-universelle Klasse von Hasfunktionen, wenn für beliebige, z U mit z gilt: { H () =(z)} c H m In anderen Worten: wenn für für beliebige, z U mit z und für zufällig gewältes aus H gilt: Beispiele: Universelles Hasing U [p], p Primzal, Tabellengröße m p beliebig () =((a ) modm, für a {,p } Dann ist H p,m = { a a<p} eine -universelle Klasse Pr(() =(z)) c m FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Beispiele: Universelles Hasing U = ASCII r = {,,} r, m> Primzal ( r ) a,,a r (c c r )= a i c i mod m, für c c r U i= Dann ist H m,r = { a,,a r a,,a r [m]} eine -universelle Klasse Multiplikatives Hasing mit zufälligem Faktor fürt zu einer -universellen Klasse Tabellenasing fürt zu einer -universellen Klasse Universelles Hasing Die obige Proposition liest sic nun so: Wenn H c-universell ist und man (in empty(m)) ein aus H zufällig wält, dann gelten die oberen Scranken c α bzw + c α für die Anzal der Sclüsselvergleice bei erfolgloser bzw erfolgreicer Suce FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

Gesclossenes Hasing oder offene Adressierung Für jeden Sclüssel U gibt es eine Sondierungsfolge (, ), (, ), (, ), in [m] Beim Einfügen von und Sucen nac werden die Zellen von T in dieser Reienfolge untersuct, bis eine leere Zelle oder der Eintrag gefunden wird Beispiel: Lineares Sondieren (, k) =(()+k) modm, k =,,, ( ) Günstig: (, ), (, ), (, ),, (, m ) erreict jede Zelle, d : ((, ),(, ),(, ),,(, m )) ist eine Permutation von [m] Wenn ( ) gilt und mindestens eine Zelle in T leer ist, dann endet jede erfolglose Suce in einer leeren Zelle Bei linearem Sondieren: (, k) =(()+k) modm Andere Folgen sind möglic, zum Beispiel FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Quadratisces Sondieren : U [m] sei beliebige Hasfunktion (, ) = () (, ) = (()+)modm (, ) = (() ) mod m (, ) = (()+)modm (, ) = (() ) mod m (, ) = (()+)modm (, ) = (() ) mod m (, k) = ( ()+ k/ ( ) k+) mod m Fakt Ist m Primzal, m =l +für ein l N, dann ist {(, k) k<m} =[m], d( ) gilt (Beweis: Elementare Zalenteorie) Beispiel: m =, () =, liefert Sondierungsfolge,,,,,,,,,,,,,,,,,, Beobactung Quadratisces Sondieren verält sic der Erfarung nac ser gut (Vor: gut verteilend, Auslastungsfaktor,) FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

Doppel-Hasing Benutze zwei (unabängig berecnete) Hasfunktionen und setze, für k =,,,: : U [m] : U [m ] (, k) :=( ()+k ( + ())) mod m Beispiel: m =, () =, () =, liefert Sondierungsfolge,,,,,,,,,,,, Übung: Berecne die Folgenglieder inkrementell (Runden k =,,,) one Multiplikationen und Divisionen ( mod m ) (, k) :=( ()+k ( + ())) mod m Proposition Wenn m Primzal ist, dann gilt für Doppel-Hasing: ( ) {(, k) k<m} =[m] Beweis: Sei z =+ () Dann: z m Wenn (, k) =(, l), dann ist ( ()+k z) modm =( ()+l z) modm, also (l k) z (mod m), d m teilt (l k) z Da m Primzal ist und z<m, teilt m die Zal l k, also ist k = l, weil k, l < m FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Mitteilung Wenn m = l, : U [m], : U [m/], dann: { ()+k ( ()+) k<m} =[m] Beispiel: m =, () =, () =, liefert Sondierungsfolge,,,,,,,,,,,,,,, Ebenfalls für Doppel-Hasing geeignet, einfacste Berecnung der Folge! (Addition, Bitmaske) Man kann beweisen: Wenn (), (), S, rein zufällig sind, verält sic Doppel-Hasing ser gut, nämlic im wesentlicen wie Uniformes Sondieren Uniformes Sondieren / Ideales Hasing Keine Metode, sondern eine Warsceinlickeitsanname für Verfaren mit offener Adressierung: ((, ),(, ),,(, m )) ist eine rein zufällige Permutation von [m], unabängig für jedes U (Erinnerung: Es gibt m! versciedene Permutationen von [m]) FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

Effekt:,, n seien gespeicert; y kommt neu inzu Ganz egal was die Haswerte von,, n und was (y, ),,(y, k ) sind: (y, k) nimmt jeden Wert j [m] {(y, ),,(y, k )} mit derselben Warsceinlickeit /(m k) an n: Anzal der Sclüssel in T[ m ]; α = n m T m,n := Zal der untersucten Fäcer (Sondierungen) bei erfolgloser Suce C m,n := E(T m,n) T m,n := Zal der untersucten Fäcer bei erfolgreicer Suce, gemittelt über,, n C m,n := E(T m,n ) Satz Unter der Anname Uniformes Sondieren gilt: (i) C m,n = m+ m+ n = m+ n ( < n/m = α Wenn α fest und n, m, dann gilt C m,n α ) FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Beweis:,, n sind gespeicert, y/ {,, n } wird gesuct Es gibt zwei Fälle: Fall: T[(y, )] ist leer Warsceinlickeit: m n m Kosten: Fall: T[(y, )] ist nict leer Warsceinlickeit: n m Kosten: +C m,n (Suce in m Plätzen, von denen n besetzt sind) Rekursionsformel, für n<m: {, falls n = C m,n = m n m + n m ( + C m,n ), falls n C m, = ; C m, = m m + m C m, = m m + m C m, = m m + m und so weiter Dies liefert: + (+)=m m ; ( + m ) m ( + m ) m C m,n = m + m + n (Formaler Beweis durc vollständige Induktion) =+ m = m + m ; =+ m = m + m ; FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

Satz Unter der Anname Uniformes Sondieren gilt bei α = n/m: (i) C m,n = m+ m+ n = m+ n Dies ist < n/m = α Wenn α fest und n, m, dann gilt C m,n α (ii) Für T m,n = mittlere (über S) erwartete (mit (UF ) Anzal getesteter Tabellenplätze bei erfolgreicer Suce gilt: C m,n = E(T m,n ) < α ln( α ) Beweis: Sucaufwand für i = Einfügeaufwand für i Also Mittelung über C m,,c m,,,c m,n : C m,n = n i n = m + n m + m + (i ) ( m + + ) m + + m + (n ) Leict zu seen (Untersumme!): m+ + m + + m+ (n ) m+ ( = ln(m +) ln(m + n) =ln dt m+ n t = m+ m+ n ) FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Also: C m,n m + n ( ) ln n m+ (!) < m ( ) n ln n m Für α = n/m, α fest, n, m, ist C m,n α ln( α ) (!) Für < beweist man durc Kurvendiskussion: α α ln( α ) ist für <α< monoton wacsend Bemerkung: Für α get α ln( α ) etrem langsam gegen Uniformes Hasing Anzal Vergleice α erfolglos erfolgreic FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

Löscungen? Problem: Z B Quadratisces Sondieren Sucfolge Dezember mit (Dezember) =:,,, Lösce Juli! T : : : : : : : : : : : : : : April () August () Oktober () Mai () November () Juli () Juni () Januar () Februar () September () Dezember () Maerz () FG KTuEA, TU Ilmenau AuD Löscungen? Problem: Z B Quadratisces Sondieren Sucfolge Dezember mit (Dezember) =:,,, T : : : : : : : : : : : : : : April () August () Oktober () Mai () November ()!!! Juni () Januar () Februar () September () Dezember () Maerz () Lösce Juli! Dezember wird nict mer gefunden FG KTuEA, TU Ilmenau AuD Ausweg: Zelle at Statusvariable status (voll, leer, gelösct ) Löscen: Zelle nict auf leer, sondern auf gelösct setzen Sucen: Immer bis zur ersten leer en Zelle geen Zellen, die gelösct sind, dürfen mit einem neuen Sclüssel überscrieben werden Überlauf tritt spätestens ein, wenn die letzte leer e Zelle bescrieben werden würde Sinnvoller: Überlauf tritt ein, wenn die Anzal der voll en und gelösct en Zellen zusammen eine feste Scranke bound überscreitet ZB m oder α m, α passend zum Sondierungsverfaren Operationen bei offener Adressierung empty(m): Lege leeres Array T[ m ] an Initialisiere alle Zellen T[j] mit (,, leer) Initialisiere inuse mit (Zält nict-leere Zellen) Initialisiere load mit (Zält Einträge) Initialisiere bound (maimal m ) FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

Operationen bei offener Adressierung lookup(): Finde erstes l in der Folge (, ), (, ), (, ), mit T[l]status = leer oder (T[l]status = voll und T[l]key = ); Falls T[l]status = leer : return not found ; Sonst: return T[l]data Operationen bei offener Adressierung delete(): Finde erstes l in der Indefolge (, ), (, ), (, ), mit T[l]status = leer oder (T[l]status = voll und T[l]key = ); Falls T[l]status = leer : tue nicts; ( Warnung: not found ) Sonst: T[l]status gelösct; load-- FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Operationen bei offener Adressierung insert(, r): Finde erstes l in der Indefolge (, ), (, ), (, ), mit T[l]status = leer oder (T[l]status = voll und T[l]key = ); Merke dabei das erste l in dieser Folge, das T[l ]status {gelösct, leer} erfüllt; Fall : T[l]status = voll : T[l]data r; ( Update ) Fall : T[l ]status = gelösct: T[l ] (, r, voll ); load++; Fall : T[l ]status = leer : ( l = l, neue Zelle ) if inuse +> bound ten Überlaufbeandlung else inuse++; load++; T[l] (, r, voll ); Operationen bei offener Adressierung Überlaufbeandlung, Verdopplung: Sinnvoll: Überlauf tritt ein, wenn die Anzal der voll en und gelösct en Zellen zusammen (in inuse) eine Scranke α m (in bound) überscreitet (α passend zum Sondierungsverfaren festlegen) Anzal der voll en Zellen: load Falls load + >α m für (z B) α =α, verdopple Tabellengröße, und trage Sclüssel neu in die größere Tabelle ein Sonst: Trage alle Sclüssel neu in die alte Tabelle T ein, eliminiere alle gelösct -Markierungen, wie folgt FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

Operationen bei offener Adressierung Trick für Umorganisieren: (One zusätzlicen Platz) ) Für i =,,,m tue folgendes: Wenn T[i]status = voll, setze T[i]status alt Wenn T[i]status = gelösct, setze T[i]status leer ) Für i =,,,m tue folgendes ( cecke jeden Platz ): Wenn T[i]status = alt, dann setze (, r) (T[i]key, T[i]data), setze T[i]status = leer, und füre insert (, r) aus dabei weist insert (, r) folgende Besondereit auf: Wenn eine mit alt markierte Zelle gefunden wird, wird sie wie leer beandelt, der dort entaltene Eintrag (,r ) wird durc (, r, voll ) verdrängt; sofort anscließend wird insert (,r ) ausgefürt; dies setzt sic fort, bis eine Einfügung in eine mit leer markierte Zelle erfolgt (Erst dann färt man mit der Abarbeitung der i-scleife fort) FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD () m Cuckoo Hasing Kuckucks-Hasing [-] T y T y () m Implementierung eines dynamiscen Wörterbucs mit konstanter Suczeit im sclectesten Fall Tabellen T,T,Größe jeweils m; Eintrag/Platz Invariante: S ist in T [ ()] oder in T [ ()] gespeicert Konstante Suczeit garantiert Kuckucks-Hasing Grundansatz: Sondierungsfolge at nur Länge Auc Rückwärtsgeen in der Sondierungsfolge und Verdrängen von Sclüsseln möglic Kuckucks-Hasing wegen interessanter Einfügeprozedur: Sclüssel, der eingefügt werden soll, kann anderen Sclüssel y, der in T [ ()] oder T [ ()] sitzt, inauswerfen FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

Kuckucks-Hasing T T m m Füge ein Versuce T [ ()] Besetzt! FG KTuEA, TU Ilmenau AuD Kuckucks-Hasing T T m m Sclüssel aus T inauswerfen FG KTuEA, TU Ilmenau AuD Kuckucks-Hasing T T m m Sclüssel aus T inauswerfen FG KTuEA, TU Ilmenau AuD Kuckucks-Hasing T m m T Sclüssel aus T inauswerfen FG KTuEA, TU Ilmenau AuD

Kuckucks-Hasing T T Kuckucks-Hasing T T fertig! m m m m Sclüssel aus T inauswerfen Sclüssel in T einfügen Fertig! FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Kuckucks-Hasing Mitteilung Sei m ( + ε)n, für eine Konstante ε>: Wenn, vollständig zufällig sind (UF ), dann gilt: ) Die Warsceinlickeit, dass beim Einfügen von n Sclüsseln einmal eine Verklemmung (unendlice Scleife) auftritt, ist O(/n) (Im Algoritmus: abfangen!) Bei m ( ε)n: Hoe Warsceinlickeit für Verklemmung ) Die erwartete Einfügezeit ist O(/ε) Beweis: Originalliteratur, fortgescrittene Vorlesungen Praktisc ser effizient (auc mit Tabellenasing, jedoc lineare Hasfunktionen lieber nict benutzen!) Nacteil: Auslastung der Tabelle unter % d-äres Kuckucks-Hasing d Has-Funktionen,, d : U [m], eine Tabelle T [ m ] S muss in einer der Zellen T [ i ()] gespeicert sein, i =,,d Suce erfordert d Auswertungen von Hasfunktionen und Arrayzugriffe, Zeit O(d) FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

Bei d Funktionen genügt Platz m =(+ε)n, mit ε>ε d Dabei: ε d log (e)e d für d Beispielwerte: d +ε d,,,, Beobactung: Erwartete Einfügezeit mit Kuckucks- Verfaren konstant (teoretisc noc nict voll analysiert) Hervorragendes Veralten in Eperimenten Kuckucks-Hasing mit Funktionen und Blöcken z y S n = ε= m= m Tabelle T [m ] at m Blöcke mit Kapazität jeweils d Günstig für Cace-Arcitekturen! FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Mitteilung Sei S U mit S = n Wenn die Funktionen, die Unabängigkeitsbedingung (UF ) erfüllen, dann gilt: Wenn m ( + ε)n/d, mit ε>(e/) d, dann passen und für S mit oer Warsceinlickeit, d man kann die n Sclüssel so auf die m Fäcer verteilen, dass in Fac () oder () sitzt und in keinem Fac mer als d Sclüssel untergebract sind Mitteilung Falls S zu Anfang gegeben ist ( statiscer Fall ): Es gibt ein ser effizientes Verfaren zur Verteilung der Sclüssel ( selfless algoritm ) Eperimente: Kumulative Laufzeiten für erfolgreice Suce Jeder von Sclüsseln wird einmal gesuct Jeweils: bestes d Beobactung: Kuckucksverfaren (sclectester Fall!) mit Linearem Sondieren (durcscnittlic!) konkurrenzfäig ε cuckoo-d-ary cuckoo-block Lin Sond time [s] d time [s] d time [s] FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

Eperimente: Kumulative Laufzeiten für erfolglose Suce Sclüssel gespeicert; andere werden gesuct Jeweils: bestes d Beobactung: Kuckucksverfaren sclägt Lineares Sondieren bei etrem voll gepackten Tabellen ε cuckoo-d-ary cuckoo-block Lin Sond time d time d time Einfügen mit der randomisierten Kuckucks-Prozedur Zu Sclüssel berecne () und () Falls in einem der beiden Fäcer Platz ist (Beladung <d): Füge an beliebiger Stelle ein Falls beide Fäcer voll: Wäle einen zufälligen der d Sclüssel in diesen Fäcern, genannt y, verdränge in, setze an seinen Platz Nun beginne mit der Einfügung von y FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Einfügen mit der randomisierten Kuckucks-Prozedur Einfügen mit der randomisierten Kuckucks-Prozedur m m FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

Einfügen mit der randomisierten Kuckucks-Prozedur Einfügen mit der randomisierten Kuckucks-Prozedur m m FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Einfügen mit der randomisierten Kuckucks-Prozedur Einfügen mit der randomisierten Kuckucks-Prozedur y m m FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

Einfügen mit der randomisierten Kuckucks-Prozedur y Einfügen mit der randomisierten Kuckucks-Prozedur m m FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Eperimente: Kumulative Laufzeiten für Einfügen Sclüssel Jeweils: bestes d Beobactung: Kuckucksverfaren nur um Faktor langsamer als Lineares Sondieren ε cuckoo-d-ary cuckoo-block Lin Sond time [s] d time [s] d time [s] FG KTuEA, TU Ilmenau AuD