8. Februar 2017: Randomisierte Algorithmen II

Werbung
Effiziente Algorithmen
Randomisierte Algorithmen
Bloom-Filter
Wir wollen einmal ein Wörterbuch erstellen.
Dann schlagen wir sehr oft darin nach, ob es gegebene Wörter
enthält.
Das Wörterbuch enthalte w1 , . . . , wn .
Wieviel Platz benötigen wir dafür?
371
Effiziente Algorithmen
Randomisierte Algorithmen
Universelles Hashing
Definition
Es sei H eine nicht-leere Menge von Funktionen U → {1, . . . , m}.
Wir sagen, daß H eine universelle Familie von Hashfunktionen ist,
wenn für jedes x, y ∈ U , x 6= y folgendes gilt:
1
|{ h ∈ H | h(x) = h(y) }|
≤
|H|
m
372
Effiziente Algorithmen
Randomisierte Algorithmen
Theorem
Es sei H eine universelle Familie von Hashfunktionen
U → {1, . . . , m} für das Universum U und S ⊆ U eine beliebige
Untermenge.
Wenn x ∈ U , x ∈
/ S und h ∈ H eine zufällig gewählte Hashfunktion
ist, dann gilt
|S|
E |{ y ∈ S | h(x) = h(y) }| ≤
.
m
Beweis
E |{ y ∈ S | h(x) = h(y) }| =
X
y∈S
X |{ h ∈ H | h(x) = h(y) }|
|S|
≤
Pr[h(x) = h(y)] =
|H|
m
y∈S
373
Effiziente Algorithmen
Randomisierte Algorithmen
Satz
Sei x ∈ U beliebig, H eine universelle Familie von Hashfunktionen
U → {1, . . . , m} und k eine beliebige Zahl aus {1, . . . , m}.
Dann gilt Pr[h(x) = k] = 1/m, falls h zufällig aus H.
Beweis
Nehmen wir an, es gibt ein y mit h(y) = k. Dann setze S = {y}
und wende das letzte Theorem an:
|S|
E |{ y ∈ S | h(x) = h(y) }| ≤
.
m
Hier folgt daraus Pr[h(x) = k] ≤ 1/m.
Wenn es kein y mit h(y) = k gäbe, dann wäre Pr[h(x) = k] = 0.
Das geht aber nicht, denn
m
X
k=1
Pr[h(x) = k] = 1.
374
Effiziente Algorithmen
Randomisierte Algorithmen
Eine universelle Hashfamilie
Sei U = {0, . . . , p − 1}, wobei p eine Primzahl ist.
Es sei ha,b (x) = ((ax + b) mod p) mod m.
Wir definieren
H = { ha,b | 1 ≤ a < p, 0 ≤ b < p}
Theorem
H ist eine universelle Familie von Hashfunktionen.
375
Effiziente Algorithmen
Randomisierte Algorithmen
Es seien x, y ∈ {0, . . . , p − 1}, x 6= y.
Wir wollen zunächst zeigen, daß die Funktion
f : (a, b) 7→ (ax + b mod p, ay + b mod p)
für a, b ∈ {0, . . . , p − 1} injektiv und somit auch bijektiv ist.
(ax + b mod p, ay + b mod p) = (a′ x + b′ mod p, a′ y + b′ mod p)
⇔(ax + b − b′ mod p, ay + b − b′ mod p) = (a′ x mod p, a′ y mod p)
⇔(b − b′ mod p, b − b′ mod p) = ((a′ − a)x mod p, (a′ − a)y mod p)
⇔(a′ − a)x mod p = (a′ − a)y mod p ⇔ a′ = a ∧ b′ = b
376
Effiziente Algorithmen
Randomisierte Algorithmen
Nach wie vor gelte x, y ∈ {0, . . . , p − 1}, x 6= y.
Für wieviele Paare (a, b) haben cx := ax + b mod p und
cy := ay + b mod p den gleichen Rest modulo m?
Wir haben auf der letzten Folie bewiesen, daß sich für jedes Paar
(a, b) ein eindeutiges Paar (cx , cy ) ergibt. Für ein festes cx gibt es
nur
p+m−1
p−1
⌈p/m⌉ − 1 =
−1≤
m
m
viele mögliche Werte von cy mit cx ≡ cy mod m und cx 6= cy .
Weil p verschiedene Werte für cx existieren, gibt es insgesamt
höchstens p(p − 1)/m Paare der gesuchten Art.
|{ h ∈ H | h(x) = h(y) }|
p(p − 1)/m
1
≤
≤
|H|
p(p − 1)
m
377
Effiziente Algorithmen
Randomisierte Algorithmen
Min-Cut
Einfacher Algorithmus:
Kontrahiere zufällige Kanten, bis nur zwei Knoten übrig.
Mit Wahrscheinlichkeit Ω(n−2 ) ein Min-Cut.
Verwende Amplifizierung.
√
Verbesserung: Zwei Kontraktionssequenzen bis etwa n/ 2 Knoten
bleiben, dann rekursiv.
378
Effiziente Algorithmen
Randomisierte Algorithmen
379
Treaps
4
313
3
13
1847
317
2
10
22
4588
1748
332
1
5
11
16
8985
4254
6569
1234
7
12
14
18
4434
8473
1263
1262
6
8
15
17
20
4904
6606
5562
5592
2189
9
19
21
9978
8596
5376
Effiziente Algorithmen
Randomisierte Algorithmen
380
Skip-Lists
head 1
3
5
6
7
9
11
13
15
17
19
tail
Effiziente Algorithmen
Randomisierte Algorithmen
ENDE
381
Herunterladen