• Keine Ergebnisse gefunden

Satz 23

N/A
N/A
Protected

Academic year: 2021

Aktie "Satz 23"

Copied!
20
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Satz 23

In einer Hashtabelle der Gr¨ oße n mit m Objekten tritt mit Wahrscheinlichkeit

≥ 1 − e

−m(m−1)

2n

≈ 1 − e

−m

2 2n

mindestens eine Kollision auf, wenn f¨ ur jeden Schl¨ ussel jede Hashposition gleich wahrscheinlich ist.

EADS 4.1 Grundlagen 99/530

ľErnst W. Mayr

(2)

Beweis:

Sei A

m

das Ereignis, dass unter m Schl¨ usseln keine Kollision auftritt. Dann gilt

Pr[A

m

] =

m−1

Y

j=0

n − j

n =

m−1

Y

j=0

1 − j

n

m−1

Y

j=0

e

jn

= e

Pm−1

j=0 j

n

= e

m(m−1)2n

.

Es folgt die Behauptung.

EADS 4.1 Grundlagen 100/530

ľErnst W. Mayr

(3)

Korollar 24

Hat eine Hashtabelle der Gr¨ oße n mindestens ω( √

n) Eintr¨ age und ist f¨ ur jeden Schl¨ ussel jede Hashposition gleich wahrscheinlich, so tritt mit Wahrscheinlichkeit 1 − o(1) mindestens eine Kollision auf.

Um die Kollisionszahl m¨ oglichst gering zu halten, m¨ ussen Hashfunktionen gut streuen.

EADS 4.1 Grundlagen 101/530

ľErnst W. Mayr

(4)

Definition 25

1

Eine Hashfunktion

h : U → {0, 1, . . . , n − 1}

heißt perfekt f¨ ur S ⊆ U , wenn f¨ ur alle j, k ∈ S, j 6= k gilt h(j) 6= h(k) .

2

Eine Klasse H von Hashfunktionen h : U → {0, 1, . . . , n − 1}

heißt perfekt, falls H f¨ ur jedes S ⊆ U mit |S| = n eine f¨ ur S perfekte Hashfunktion enth¨ alt.

EADS 4.1 Grundlagen 102/530

ľErnst W. Mayr

(5)

Grunds¨ atzliche Fragestellungen:

1

Wie schwierig ist es, perfekte Hashfunktionen darzustellen (also: was ist ihre Programmgr¨ oße)?

2

Wie schwierig ist es, gegeben S, eine f¨ ur S perfekte Hashfunktion zu finden?

3

Wie schwierig ist es, gegeben k ∈ S, h(k) f¨ ur eine f¨ ur S perfekte Hashfunktion auszuwerten?

EADS 4.1 Grundlagen 103/530

ľErnst W. Mayr

(6)

Typische

” praktische“ Hashfunktionen:

h(k) = k mod n (Teilermethode)

h(k) = bn(ak − bakc)c f¨ ur a < 1 (Multiplikationsmethode)

Wir betrachten zun¨ achst Methoden der Kollisionsbehandlung.

EADS 4.1 Grundlagen 104/530

ľErnst W. Mayr

(7)

4.2 Methoden zur Kollisionsaufl¨ osung Wir unterscheiden grunds¨ atzlich

geschlossene und offene Hashverfahren.

Bei geschlossenen Hashverfahren werden Kollisionen nicht wirklich aufgel¨ ost.

EADS 4.2 Methoden zur Kollisionsaufl¨osung 105/530

ľErnst W. Mayr

(8)

4.2.1 Geschlossene Hashverfahren (Chaining)

Die Hashtabelle ist ein Array von n linearen Listen, wobei die i-te Liste alle Schl¨ ussel k beinhaltet, f¨ ur die gilt:

h(k) = i .

Zugriff: Berechne h(k) und durchsuche die Liste T [h(k)].

Einf¨ ugen: Setze neues Element an den Anfang der Liste.

EADS 4.2 Methoden zur Kollisionsaufl¨osung 106/530

ľErnst W. Mayr

(9)

Sei

δ

h

(k

1

, k

2

) =

1 falls h(k

1

) = h(k

2

) und k

1

6= k

2

0 sonst

und

δ

h

(k, S) = X

j∈S

δ

h

(j, k), Anzahl Kollisionen von k mit S .

Die Zugriffskosten sind:

O(1 + δ

h

(k, S))

EADS 4.2 Methoden zur Kollisionsaufl¨osung 107/530

ľErnst W. Mayr

(10)

Sei A eine Strategie zur Kollisionsaufl¨ osung. Wir bezeichnen im Folgenden mit

A

+

den mittleren Zeitbedarf f¨ ur eine erfolgreiche Suche unter Verwendung von A;

A

den mittleren Zeitbedarf f¨ ur eine erfolglose Suche unter Verwendung von A;

α :=

mn

den F¨ ullfaktor der Hashtabelle.

EADS 4.2 Methoden zur Kollisionsaufl¨osung 108/530

ľErnst W. Mayr

(11)

Sondierungskomplexit¨ at f¨ ur Chaining

Falls auf alle Elemente in der Hashtabelle mit gleicher Wahrscheinlichkeit zugegriffen wird, ergibt sich

A

: mittlere L¨ ange der n Listen; da

mn

= α, folgt A

≤ 1 + α .

A

+

:

A

+

= 1 m

m

X

i=1

1 + i − 1 n

= 1 m

m−1

X

i=0

1 + i

n

= 1 + m(m − 1) 2nm

≤ 1 + m

2n = 1 + α 2

F¨ ur festen F¨ ullfaktor α ergibt sich also im Mittel Laufzeit Θ(1).

EADS 4.2 Methoden zur Kollisionsaufl¨osung 109/530

ľErnst W. Mayr

(12)

4.2.2 Hashing mit offener Adressierung Beispiele:

Lineares Sondieren (linear probing) Quadratisches Sondieren

Double Hashing Robin-Hood-Hashing . . .

Bei dieser Methode werden die Elemente nicht in der Liste, sondern direkt in der Hash-Tabelle gespeichert. Wird bei Insert oder

IsElement, angewendet auf Schl¨ ussel k, ein Element mit Schl¨ ussel 6= k an der Adresse h(k) gefunden, so wird auf deterministische Weise eine alternative Adresse berechnet. F¨ ur jeden Schl¨ ussel k ∈ U wird somit eine Reihenfolge (Sondierungsfolge) von Positionen in T [ ] betrachtet, um k zu speichern bzw. zu finden.

EADS 4.2 Methoden zur Kollisionsaufl¨osung 110/530

ľErnst W. Mayr

(13)

Sondieren:

Sei s(j, k) : [0..n − 1] × U → [0..n − 1];

Definiere h(j, k) = (h(k) − s(j, k)) mod n; (0 ≤ j ≤ n − 1) Starte mit h(0, k), dann, falls h(0, k) belegt, h(1, k), . . .

Grunds¨ atzliches Problem:

Sei h(k) = h(k

0

) f¨ ur zwei Schl¨ ussel k, k

0

∈ S. Werde zun¨ achst k eingef¨ ugt, dann k

0

, dann k gel¨ oscht. Wie findet man k

0

?

(Beachte: k

0

steht nicht unmittelbar an h(k

0

).)

L¨ osungsvorschlag: Markiere k als gel¨ oscht, entferne es aber nicht!

Wenn Speicher gebraucht wird, k uberschreiben. ¨

EADS 4.2 Methoden zur Kollisionsaufl¨osung 111/530

ľErnst W. Mayr

(14)

Beispiele f¨ ur Sondierungen

Lineares Sondieren:

Setze s(j, k) = j d.h. sondiere gem¨ aß h(k), h(k) − 1, . . . , 0, n − 1, .., h(k) + 1.

Es wird f¨ ur IsElement solange r¨ uckw¨ arts gesucht, bis entweder das Element mit Schl¨ ussel k oder eine freie Position gefunden ist. Im letzteren Fall ist das gesuchte Element nicht in der Hash-Tabelle enthalten.

Problem: Es entstehen prim¨ are H¨ aufungen (primary clustering) um diejenigen Schl¨ ussel herum, die beim Einf¨ ugen eine Kollision hervorgerufen haben.

EADS 4.2 Methoden zur Kollisionsaufl¨osung 112/530

ľErnst W. Mayr

(15)

Satz 26

Die durchschnittliche Anzahl der Schritte beim linearen Sondieren ist

E [# Sondierungsschritte] =

1 2

1 +

(1−α)1

erfolgreich

1 2

1 +

(1−α)1 2

erfolglos

Einige Werte:

α erfolgreich erfolglos

0.5 1.5 2.5

0.9 5.5 50.5

0.95 10.5 200.5

EADS 4.2 Methoden zur Kollisionsaufl¨osung 113/530

ľErnst W. Mayr

(16)

Beispiele f¨ ur Sondierungen

Quadratisches Sondieren:

Setze s(j, k) = (−1)

j

d

j2

e

2

, d.h. sondiere nach h(k), h(k) + 1, h(k) − 1, h(k) + 4, h(k) − 4, . . . .

Frage: Ist das ¨ uberhaupt eine Permutation von [0..n − 1]? Ist s(j, k) geeignet, alle Positionen zu erreichen?

Man kann zeigen, dass f¨ ur Primzahlen n von der Form 4i + 3 die Sondierungsgr¨ oße (h(k) − s(j, k)) mod n eine Permutation von [0..n − 1] liefert.

EADS 4.2 Methoden zur Kollisionsaufl¨osung 114/530

ľErnst W. Mayr

(17)

Satz 27

Die durchschnittliche Anzahl der Schritte bei quadratischem Sondieren ist

E [# Sondierungsschritte] =

 1 + ln

1 1−α

α2

erfolgreich

1

1−α

− α + ln

1 1−α

erfolglos

Einige Werte:

α erfolgreich erfolglos

0.5 1.44 2.19

0.9 2.85 11.4

0.95 3.52 22.05

EADS 4.2 Methoden zur Kollisionsaufl¨osung 115/530

ľErnst W. Mayr

(18)

Beispiele f¨ ur Sondierungen

Double Hashing:

Setze s(j, k) = jh

0

(k), wobei h

0

eine zweite Hashfunktion ist. h

0

(k) muss relativ prim zu n gew¨ ahlt werden, damit

(h(k) − s(j, k)) mod n eine Permutation der Hashadressen wird.

Satz 28

Die durchschnittliche Anzahl der Sondierungen bei Double Hashing ist

E [# Sondierungsschritte] = (

1

α

ln

1−α1

erfolgreich

1

1−α

erfolglos

EADS 4.2 Methoden zur Kollisionsaufl¨osung 116/530

ľErnst W. Mayr

(19)

Einige Werte:

α erfolgreich erfolglos

0.5 1.39 2

0.9 2.55 10

0.95 3.15 20

Zum Beispiel: h

0

(k) = 1 + k mod (n − 2) (mit n > 2 prim).

EADS 4.2 Methoden zur Kollisionsaufl¨osung 117/530

ľErnst W. Mayr

(20)

Beispiele f¨ ur Sondierungen

A

+

f ¨ur Open Hashing: Erfolgreiche Suche nach k im (i+1) -ten Schritt bedeutet erfolglose Suche nach k bis zum i-ten Schritt i d.h im Mittel

1−1i

n

=

n−in

Damit:

A

+

=

m1

P

m−1 i=0

n n−i

=

mn

P

m−1 i=0

1 n−i

=

mn

P

n i=n−m+1

1 i

≤ n

m Z

n

n−m

1 x dx

= n

m (ln n − ln n − m)

= n

m

ln n

n − m

= 1

α ln 1 1 − α Beispiel

• Lineares Sondieren

A

+

≈ 1

2 (1 + 1 1 − α A

≈ 1

2 (1 + 1 (1 − α)

2

• Double Hashing

A

+

≈ 1 α ln 1

1 − α A

1

≈ 1

1 − α

A -

(double) A +

(double)

A - (linear)

A + (linear)

1

Abbildung 2.13: Lustige Kurven deren Sinn ich nicht mehr weiß

Universelles Hashing

Idee: Zuf¨allige Wahl der Hashfunktion zur Laufzeit aus einer Menge von Hashfunktionen (Carter, Wegman, 1970)

26

Sondierungskomplexit¨ at

EADS 4.2 Methoden zur Kollisionsaufl¨osung 118/530

ľErnst W. Mayr

Abbildung

Abbildung 2.13: Lustige Kurven deren Sinn ich nicht mehr weiß

Referenzen

ÄHNLICHE DOKUMENTE

In einem AVL-Baum mit n Schl¨ usseln kann in Zeit O(log n) festgestellt werden, ob sich ein gegebener Schl¨ ussel in der Schl¨ usselmenge befindet oder

der zugeh¨ origen Schl¨ ussel organisiert werden, damit jedes Element anhand seines Schl¨ ussels m¨ oglich schnell lokalisiert werden kann.. Gesucht ist also eine Abbildung h : K

Andernfalls kann der Gegenspieler einen oder beide Schl¨ ussel so festlegen, dass immer noch mindestens r/2 Sortierungen m¨ oglich sind (wir verwenden hier, dass die Schl¨ ussel

2 In jedem von H’s Binomialb¨ aumen ist ein kleinster Schl¨ ussel an der Wurzel gespeichert; verlinkt man daher die Wurzeln aller Binomialb¨ aume von H in einer zirkul¨ aren Liste,

(a) Bestimmen Sie die Struktur der elliptischen Kurven (als Gruppen), die durch die Glei- chungen y 2 = x 3 + ax f¨ ur a = 1, 2, 3 ¨ uber F 17 gegeben sind (dazu ist die Software

Testen Sie mithilfe des Miller-Rabin-Tests, ob die Zahl 577 mit 75% Wahrscheinlichkeit eine Primzahl ist oder nicht.. 3. RC4

Da sie Angst haben, dass ihre Nachrichten mitgelesen werden, kreieren sie dazu einen geheimen Schl ¨ussel mithilfe des Diffie-Hellman Schl ¨usselaustausches.. Sei G = (Z/77, +)

Kopplungseffizienz Falls die beobachtete Quelle kleiner ist als die Hauptkeule, muss ber¨ucksichtigt werden, dass nur ein Teil der von der Antenne empfangenen Strahlung von der