Streaming Data: Das Modell

Werbung
Streaming Data: Das Modell
Berechnungen, bei fortlaufend einströmenden Daten
(xt | t > 0),
sind in Echtzeit zu erbringen. Beispiele sind:
- Verkehrsmessungen im Internet,
- Datenanalyse in der Abwehr einer Denial-of-Service Attacke,
- Verarbeitung von durch Satelliten erfassten Daten, oder
- fortlaufende Protokollierung von Telefonverbindungen durch
weltweit agierende Telefonunternehmen und die damit
verbundenen Reaktionen auf überlastete Leitungen.
Das Modell
1 / 74
Algorithmische Fragestellungen
(1/2)
Erstellung von Stichproben:
I
I
Stichproben reduzieren die Größe der Datenmenge und sind
deshalb ein wichtiges Hilfsmittel für viele einfache Probleme.
Beachte, dass sich Stichproben dynamisch mit dem Datenstrom
ändern müssen.
Häufigkeitsanalyse für Datenströme:
I
Wenn au = | {i | xi = u} | die Häufigkeit des Schlüssels u ist, dann
berechne das k te Häufigkeitsmoment
X
Hk =
aku .
I
H0 ist die Anzahl verschiedener Schlüssel, H1 die Anzahl der bisher
gesehenen Schlüssel.
H2 misst wie gleichmäßig n Daten (auf m verschiedene Schlüssel)
verteilt sind:
u∈U
I
F
F
Das Modell
2
2
Es ist m · mn = nm 6 H2 6 n2 .
Kleine Werte von H2 implizieren eine gleichmäßige Verteilung.
2 / 74
Algorithmische Fragestellungen
(2/2)
Zeitfenster:
Um das Verhalten eines Datenstroms in der jüngsten
Vergangenheit bestimmen zu können, wertet man Datenströme in
Zeitfenstern aus.
Entwickle Methoden, um die quantitative Analyse nach dem
Verschwinden veralteter und dem Erscheinen junger Schlüssel zu
aktualisieren.
Das Modell
3 / 74
Reservoir Sampling: Stichproben für Datenströme
Stichproben
Reservoir Sampling
4 / 74
Reservoir Sampling
Berechne eine ohne Ersetzung gleichverteilt gezogenen Stichprobe
S ⊆ { (i, xi ) | 1 6 i 6 n } des Datenstroms (xi | i).
(1) T sei eine obere Schranke für die Größe der Stichprobe. Der
Parameter t zählt die bisher gesehenen Schlüssel.
Setze t = 0 und STICHPROBE= ∅.
(2) Durchlaufe die Schlüssel nacheinander:
(2a) Setze t = t + 1.
(2b) t 6 T : Füge den Schlüssel in STICHPROBE ein.
(2c) t > T : Werfe eine Münze mit Erfolgswahrscheinlichkeit
F
F
T
t
.
Bei einem Erfolg entferne einen zufällig aus STICHPROBE
gewählten Schlüssel; der aktuelle Schlüssel wird eingefügt.
Bei einem Misserfolg wird nichts unternommen.
Kommentar: Die Stichprobengröße T bleibt unverändert.
Stichproben
Reservoir Sampling
5 / 74
Analyse
Für alle t > T : Jede T -elementige
Teilmenge X ⊆ {(i, xi ) | 1 6 i 6 t}
t
tritt mit Wahrscheinlichkeit 1/ T als Stichprobe auf.
Beweis durch Induktion nach t: Die Aussage ist für t = T richtig.
Wir nehmen an, dass die Aussage für t − 1 richtig ist.
I
I
I
(t, xt ) wird mit Wahrscheinlichkeit p = Tt aufgenommen.
p ist die Wahrscheinlichkeit, dass (t, xt ) in einer zufälligen T -elementigen Teilmenge X ⊆ {(i, xi ) | 1 6 i 6 t} enthalten ist, denn
t −1
t
T
/
= .
T −1
T
t
Wir erhalten eine T -elementige Stichprobe, wenn wir
- mit Erfolgswahrscheinlichkeit Tt entscheiden, ob (t, xt ) gewählt wird.
- Wenn (t, xt ) nicht gewählt wird, dann wähle eine zufällige,
T -elementige Stichprobe aus der Menge {(i, xi ) | 1 6 i 6 t − 1}:
Wende die Induktionshypothese an.
Und wenn (t, xt ) gewählt wird?
Stichproben
Reservoir Sampling
6 / 74
Wenn (t, xt ) gewählt wird:
Dann ist eine zufällige Stichprobe mit T − 1 Elementen aus der
Menge {(i, xi ) | 1 6 i 6 t − 1} zu wählen.
Was macht Reservoir Sampling?
I
I
I
Die alte Stichprobe X ist eine zufällige T -elementige Teilmenge von
{(i, xi ) | 1 6 i 6 t − 1}.
Reservoir Sampling entfernt ein zufälliges Element aus X und
erhält damit eine zufällige Stichprobe aus {(i, xi ) | 1 6 i 6 t − 1} mit
T − 1 Elementen.
Diese modifizierte Stichprobe wird um (t, xt ) vergrößert und wir
erhalten eine zufällige T -elementige Stichprobe X .
Reservoir Sampling funktioniert.
Stichproben
Reservoir Sampling
7 / 74
Approximative Berechnung des Medians
Stichproben
Median Berechnung
8 / 74
Berechnung des approximativen Medians
1
Benutze Reservoir Sampling, um eine Stichprobe S der Größe s
zu ziehen.
2
Bestimme den Median M von S und gib M als Approximation des
tatsächlichen Medians aus.
- δ, ε ∈ [0, 1] seien vorgegeben.
- Arbeite mit einer Stichprobe der Größe
1
1
s = c · 2 · ln
δ
ε
für ein hinreichend großes c.
Dann liegt der Rang des ausgegebenen Schlüssels mit
Wahrscheinlichkeit > 1 − δ in dem Intervall [ n2 − ε · n, n2 + ε · n].
Stichproben
Median Berechnung
9 / 74
Analyse
xunten (bzw. xoben ) sei der Schlüssel vom Rang ( 12 − ε) · n (bzw.
Rang ( 12 + ε) · n).
Wir haben nur Pech, wenn 50% aller Schlüssel der Stichprobe
unterhalb von xunten (bzw. oberhalb von xoben ) liegen.
I
I
I
I
Ein Schlüssel kleiner als xunten wird mit Wahrscheinlichkeit ( 12 − ε)
gezogen.
Die erwartete Anzahl dieser „kleinen” Schlüssel ist deshalb
höchstens ( 12 − ε) · s.
ε
Wir haben also nur Pech, wenn sogar 12 · s = ( 12 − ε) · s · (1 + 1/2−ε
)
kleine Schlüssel gezogen werden.
Mit der Chernoff-Schranke passiert dies mit Wahrscheinlichkeit
2
höchstens e−Ω(ε ·s) .
2
e−Ω(ε
·s)
6 δ gilt, falls ε2 · s = Ω(ln δ1 ).
Die Behauptung folgt, da die Anzahl der „großen” Schlüssel ein
analoges Verhalten zeigt.
Stichproben
Median Berechnung
10 / 74
Clustering
Stichproben
Clustering
11 / 74
Clustering: Das k -Zentren Problem
- Ein vollständiger ungerichteter Graph G = (V , E) und eine Metrik
d : V 2 → R>0 ist gegeben.
- Für ein fixiertes k bestimme eine Menge Z ⊆ V von k Knoten, so
dass der maximale Abstand zu einem Zentrum, also
max min d(v, w),
v∈V w∈Z
kleinstmöglich ist.
Minimiere den Radius, also den größten Abstand eines Punktes vom
nächstliegenden Cluster-Zentrum.
Die Sprachenversion des k -Zentren Problems ist NP-vollständig.
Bestimme eine approximative Lösung!
Stichproben
Clustering
12 / 74
Clustering für Datenströme
1
Die Zahl k der erlaubten Cluster-Zentren ist gegeben ebenso wie
die Metrik d.
Die Folge (xj | j) bezeichne den Datenstrom.
2
Benutze Reservoir Sampling, um eine Stichprobe S der Größe s
zu ziehen.
3
Setze Z = {xj } für einen beliebigen Schlüssel xj ∈ S.
Wiederhole k − 1 mal:
I
I
4
Bestimme einen Schlüssel xi ∈ S, dessen minimaler Abstand zu
einem Schlüssel in Z größtmöglich ist.
Füge xi in die Menge Z ein.
Z wird als Menge der Cluster-Zentren ausgegeben.
Stichproben
Clustering
13 / 74
Analyse
Das Clustering ist 2-approximativ auf der Stichprobe.
Der optimale Radius sei opt.
Angenommen, es gibt einen Punkt p ∈ S mit einem Abstand von
größer als 2· opt zu allen Punkten in Z .
I
I
Nach Konstruktion von Z haben je zwei Punkte in Z ∪ {p} einen
Abstand von größer als 2 · opt.
Die Punkte aus Z ∪ {p} gehören zu verschiedenen Clustern der
optimalen Lösung:
F
I
Wenn ein Clusterpunkt y der optimalen Lösung nächstliegender
Punkt für zwei Elemente u, v ∈ Z ∪ {p} ist, dann ist
d(u, v ) 6 d(u, y ) + d(y , v ) 6 2·opt.
Die optimale Lösung hat nur k Clusterpunkte: Widerspruch.
Stichproben
Clustering
14 / 74
Der Algorithmus funktioniert für die Stichprobe,
aber wie gut ist die Stichprobe?
Stichproben
Clustering
15 / 74
Das Resultat
Ein Datenstrom der Länge n sei gegeben.
- Wähle eine Stichprobe der Größe s =
k ·ln n+ln( δ1 )
.
ε
- Dann ist unser Clustering mit Wahrscheinlichkeit mindestens 1 − δ
auf einer Teilmenge der Größe (1 − ε) · n 2-approximativ.
Warum müssen wir eine kleine Menge von Punkten ausschließen?
I
Einige wenige Ausreißer gehören hochwahrscheinlich nicht zur
Stichprobe.
Stichproben
Clustering
16 / 74
Die Wahrscheinlichkeit schlechter Zentren
- Sei opt der optimale Radius.
- Sei Z eine „schlechte“ Zentrenmenge:
Die Menge Weitweg(Z ) = {xi | d(xi , Z ) > 2 · opt}, also die Menge
aller Punkte mit einem Abstand von mehr als 2· opt von ihrem
nächstliegenden Zentrum in Z , habe mehr als ε · n Elemente.
Mit welcher Wahrscheinlichkeit verfehlt die Stichprobe S die
Menge Weitweg(Z )?
(1 − ε)n s
) = (1 − ε)s
n
1
6 e−ε·s = e−(k ·ln n+ln( δ )) = δ · n−k
n
6 δ/
.
k
prob[ S ∩ Weitweg(Z ) = ∅ ] 6 (
Und wenn Weitweg(Z ) getroffen wird?
Stichproben
Clustering
17 / 74
Wenn die Stichprobe S die Menge Weitweg(Z ) trifft:
- Dann gibt es s ∈ S mit d(s, z) > 2opt für alle z ∈ Z .
- Aber wir berechnen ein Clustering, das auf Stichprobe S
2-approximativ oder besser ist: Widerspruch zur Definition von opt.
Die Wahrscheinlichkeit irgendeine schlechte Zentrenmenge zu
wählen, ist somit höchstens
n
n
· δ/
= δ.
k
k
Unser Clustering wird mit Wahrscheinlichkeit mindestens 1 − δ
eine Zentrenmenge Z mit |Weitweg(Z )| 6 ε · n bestimmen und
das war zu zeigen.
Stichproben
Clustering
18 / 74
Was können Stichproben nicht?
Stichproben
Die Grenzen
19 / 74
Die Grenzen der Stichproben-Methode
Bestimme die Anzahl verschiedener Schlüssel approximativ.
Betrachte alle (deterministischen oder probabilistischen)
Algorithmen zur Stichproben-Erstellung, die nur r << n Schlüssel
inspizieren.
Reservoir Sampling wird erfasst.
Können diese Algorithmen die beiden folgenden Szenarien
voneinander unterscheiden?
I
I
Szenario 1 besteht aus der nur mit Einsen besetzten Folge.
Szenario 2 besteht aus allen Folgen, für die jedes i ∈ {2, . . . , k }
genau einmal auftritt. Alle restlichen Folgenelemente haben den
Wert 1.
Für eine approximative Bestimmung der Anzahl verschiedener
Schlüssel muss ein Algorithmus beide Szenarien voneinander
unterscheiden.
Stichproben
Die Grenzen
20 / 74
Unterscheidung der beiden Szenarien
Sei A ein Algorithmus und sei Xi die Zufallsvariable, die den iten von A
ausgewählten Schlüssel als Wert besitzt. Dann gilt
n−i −k +1
prob[ Xi = 1 | X1 = X2 = · · · = Xi−1 = 1 ] =
,
n−i +1
wenn nur Eingaben des Szenarios 2 auftreten.
Wir betrachten Szenario 2.
Angenommen, die ersten i − 1 inspizierten Schlüssel besitzen
sämtlich den Wert 1:
I
I
Von den n − k Schlüsseln mit Wert 1 verbleiben somit
n − k − (i − 1) noch nicht inspizierte Schlüssel mit Wert 1.
Aber insgesamt n − (i − 1) Schlüssel wurden noch nicht inspiziert
und die Behauptung folgt.
Stichproben
Die Grenzen
21 / 74
Wie wahrscheinlich sind Stichproben nur mit Einsen?
Sei I das Ereignis, dass alle r inspizierten Schlüssel den Wert 1
besitzen.
prob[ I ] = Πri=1 prob[ Xi = 1 | X1 = X2 = · · · = Xi−1 = 1 ]
n−i −k +1
= Πri=1
n−i +1
n−r −k +1 r
n−r −k r
>
>
n−r +1
n−r
r
2·k ·r
k
k
falls n−r
=
1−
> e− n−r ,
6 12 ,
n−r
denn 1 − z > e−2·z für 0 6 z 6 21 .
Stichproben
Die Grenzen
22 / 74
Wie wahrscheinlich sind Stichproben nur aus Einsen?
2·k ·r
Es ist prob[ I ] > e− n−r , falls
Wir setzen k =
Es ist
k
n−r
6
- Es gelte k =
1
2
n−r
2·r
k
n−r
6 12 .
· ln(2) und prob[ I ] >
1
2
folgt.
für r > 2.
n−r
2·r
· ln(2) sowie r > 2.
- Wenn Algorithmus A nur r Schlüssel inspiziert, dann bestimmt A
mit Wahrscheinlichkeit > 1/2 eine Stichprobe nur aus Einsen,
obwohl der Datenstrom k verschiedene Schlüssel besitzt.
Stichproben
Die Grenzen
23 / 74
Kommunikation
Das 2-Parteien Kommunikationsmodell:
- Zwei Parteien, Alice und Bob, besitzen Eingaben x bzw. y , wobei
weder Alice noch Bob die Eingabe des Partners kennt.
- Alice schickt eine Nachricht message(x) an Bob.
Bob muss das Ergebnis nur in Abhängigkeit von seiner Eingabe y
und der von Alice geschickten Nachricht berechnen.
- Alice und Bob besitzen, im Rahmen der ihnen zur Verfügung
stehenden Informationen, eine unbeschränkte Rechenkraft.
Deterministische oder probabilistische Protokolle bestimmen die
Nachricht von Alice und die von Bob berechnete Antwort.
Das Ziel:
I
I
Berechne einen Funktionswert f(x, y) zumindest approximativ.
Minimiere die Länge der längsten von Alice geschickten Nachricht.
Häufigkeitsmomente
Kommunikation
24 / 74
Kommunikation: Ein Beispiel
- Alice erhält x ∈ {0, 1}n , Bob erhält y ∈ {0, 1}n .
- Entscheide, ob x = y gilt.
Deterministische Kommunikation:
I
I
I
Angenommen, Alice schickt für die beiden Zeichenketten
x1 , x2 ∈ {0, 1}n dieselbe Nachricht m.
Bob weiss nicht, ob Alice die Eingabe x1 oder x2 besitzt und kann
nicht fehlerfrei arbeiten.
Alice wird Nachrichten mit mindestens n Bits verschicken müssen.
Probabilistische Kommunikation:
I
I
Alice und Bob interpretieren ihre Eingaben als Zahlen
0 6 x, y 6 2n − 1.
Alice würfelt eine Primzahl p 6 n2 aus und verschickt
das Paar (x mod p, p) mit O(log2 n) Bits.
F
F
Bob entscheidet auf x =
6 y , wenn x mod p =
6 y mod p: Kein Fehler.
Bob entscheidet auf x = y , wenn x mod p = y mod p: Kleiner
Fehler.
Häufigkeitsmomente
Kommunikation
25 / 74
Kommunikation und Streaming Data
Warum interessiert uns das Kommunikationsmodell?
Sei A ein Streaming Data Algorithmus, der auf Eingaben x1 x2 mit
x1 , x2 ∈ {0, 1}n/2 höchstens Speicherplatz s(n) benutzt.
I
Simuliere die Berechnung von A durch ein
Kommunikationsprotokoll: Alice erhält x1 , Bob erhält x2 .
I
Wenn A die Eingabe x1 abgearbeitet hat, sei w ∈ {0, 1}s(n) der
Inhalt des Speichers.
F
F
F
Alice kennt w, verschickt w und den gegenwärtigen Zustand an Bob.
Bob kann die Berechnung von A erfolgreich zu Ende führen.
Nachrichten mit s(n) + O(1) Bits reichen aus.
Häufigkeitsmomente
Kommunikation
26 / 74
Kommunikation: Ein erstes Fazit
Die Funktion fn : {0, 1}n → X sei zu berechnen.
- Jeder Algorithmus, der f
deterministisch oder probabilistisch
mit Speichergröße s(n) berechnet, kann durch ein
deterministisches oder probabilistisches
Kommunikationsprotokoll simuliert werden, das Nachrichten mit
höchstens s(n) + O(1) Bits verschickt.
- Wenn Kommunikationsprotokolle mindestens ω(s) Bits benötigen,
dann kann es keine Streaming Data Algorithmen mit
Speichergröße O(s) geben!
Probabilistische Kommunikation kann sehr viel effizienter als
deterministische Kommunikation sein.
Häufigkeitsmomente
Kommunikation
27 / 74
ε-approximative Berechnungen
Für Mengen A und B ist f : A × B → R zu berechnen.
(a) Ein deterministisches Protokoll heißt genau dann ε-approximativ,
wenn Bob für jedes Eingabepaar (x, y ) ein Ergebnis a(x, y ) mit
(1 − ε) · f (x, y ) 6 a(x, y ) 6 (1 + ε) · f (x, y ) berechnet.
(b) C ε (f ) ist die Länge der längsten Nachricht eines besten
ε-approximativen deterministischen Protokolls für f .
(c) Ein probabilistisches Protokoll ist ε-approximativ mit Fehler δ,
wenn Bob für alle Eingaben (x, y ) mit Wahrscheinlichkeit
mindestens 1 − δ ein Ergebnis a(x, y ) mit
(1 − ε) · f (x, y ) 6 a(x, y ) 6 (1 + ε) · f (x, y ) berechnet.
(d) Cδε (f ) ist die Länge der längsten Nachricht eines besten
ε-approximativen probabilistischen Protokolls, das f mit Fehler δ
berechnet.
Häufigkeitsmomente
Kommunikation
28 / 74
Das Disjunktheitsproblem
- Im Disjunktheitsproblem der Größe n erhalten Alice und Bob
Inzidenzvektoren der Teilmengen x, y ⊆ {1, . . . , n}.
- Es ist zu entscheiden, ob x ∩ y 6= ∅ gilt.
Definiere die Funktion Dn durch
1 x ∩y =∅
Dn (x, y ) =
0 sonst.
Man kann zeigen: Cδε (Dn ) = Ω(n) für alle ε, δ < 12 :
Eine randomisierte Lösung des Disjunktheitsproblems ist selbst
dann schwierig, wenn die Fehlerwahrscheinlichkeit δ eine beliebige
Konstante kleiner als 12 ist.
Hat diese negative Aussage zum Beispiel Konsequenzen für die
Berechnung der größten Häufigkeit?
Häufigkeitsmomente
Kommunikation
29 / 74
Bestimmung der größten Häufigkeit
- ε, δ < 12 seinen beliebig. A sei ein probabilistischer Algorithmus,
der die größte Häufigkeit ε-approximativ mit Fehlerwahrscheinlichkeit höchstens δ im Streaming-Data Modell berechnet.
- Dann benötigt A die Speichergröße Ω(m), wenn m die Anzahl
verschiedener Schlüssel ist.
Der probabilistische Algorithmus A berechne die Häufigkeit des
häufigsten Schlüssels approximativ.
Wir lösen das Disjunkheitsproblem mit Hilfe von A:
I
I
I
Alice und Bob erhalten die Teilmengen x, y ⊆ {1, . . . , m}.
Für die Funktion Dm des Disjunkheitsproblems gilt:
1 1 = größte Häufigkeit für (x, y ),
Dm (x, y ) =
0 2 6 größte Häufigkeit für (x, y )
Aber es ist Cδε (Dm ) = Ω(m) und die Behauptung folgt.
Häufigkeitsmomente
Kommunikation
30 / 74
Häufigkeitsmomente
- Sei δ < 12 beliebig und sei A ein probabilistischer Algorithmus, der
Hk (für k 6= 1) exakt mit Fehlerwahrscheinlichkeit höchstens δ
im Streaming-Data Modell berechnet.
- Dann benötigt A Speicherkomplexität mindestens Ω(m), wenn m
die Anzahl verschiedener Schlüssel ist.
Wir lösen das Disjunktionsproblem mit Hilfe von A.
Setze m∗ = |x| + |y | und beachte für k = 0
1 H0 = m∗
Dm (x, y ) =
0 H0 < m∗ ,
beziehungsweise für k > 1
Dm (x, y ) =
Häufigkeitsmomente
1 Hk = m ∗
0 Hk > m ∗ .
Kommunikation
31 / 74
Das zweite Häufigkeitsmoment
X
H2 =
au2
u∈U
Häufigkeitsmomente
H2
32 / 74
Berechnung von H2
Das Ziel: Bestimme
H2 =
X
au2 ,
u∈U
wobei au = | {i | xi = u} | die Häufigkeit des Schlüssels u ist.
Warum ist die Bestimmung des zweiten Häufigkeitsmoments H2
interessant?
I
I
Je größer H2 , umso unregelmäßiger sind die Schlüssel verteilt.
H2 misst die Regelmäßigkeit der Schlüsselverteilung.
Eine exakte Berechnung von H2 gelingt nur, wenn die Menge aller
ankommenden Schlüssel klein ist:
I
Vermerke die individuellen Häufigkeiten in einer Hashtabelle.
Was tun, wenn zu viele Schlüssel „im Spiel sind“?
Häufigkeitsmomente
H2
33 / 74
Sketching H2
1
Bestimme eine zufällige Hashfunktion
h : U → {−1, 1}
2
und setze SUMME = 0.
Wiederhole für alle Daten xi
Setze SUMME = SUMME +h(xi ).
SUMME2 ist eine Approximation von H2 . Warum?
Häufigkeitsmomente
H2
34 / 74
Der Erwartungswert von SUMME2
E[ SUMME2 ] = H2 .
E[ SUMME2 ] = E[ (
m
X
au · h(u))2 ]
u=1
= E[
= E[
m
X
u=1
m
X
au2 · h(u)2 ] + E[
X
au · av · h(u) · h(v ) ]
u6=v
au2 ] =
u=1
m
X
au2 = H2 ,
u=1
denn
h(u)2 = 1 für jedes u und
E[ h(u) · h(v ) ] = 0 für u 6= v .
Häufigkeitsmomente
H2
35 / 74
Wie genau ist die Schätzung?
- Die Ungleichung von Tschebyscheff: Große Abweichungen vom
Erwartungswert sind unwahrscheinlich, wenn die Varianz klein ist.
- Wir müssen die Varianz von SUMME2 bestimmen!
V [ SUMME2 ] = E[ SUMME4 ] − E[ SUMME2 ]2 .
P
4
Es ist E[ SUMME4 ] = E[ ( m
u=1 au · h(u)) ]:
I
I
Beim Ausmultiplizieren treten Terme der Form
E[ h(u1 ) · h(u2 ) · h(u3 ) · h(u4 ) ] auf.
Wir nehmen vierfache Unabhängigkeit an!
E[ SUMME4 ] = E[
=
Häufigkeitsmomente
m
X
au4 · h(u)4 ] +
u=1
m
X
au4 +
u=1
X
4
· E[
au2 av2 · h(u)2 h(v )2 ]
2
u6=v
6·
X
au2 · av2
u6=v
H2
36 / 74
Wie genau ist die Schätzung?
E[SUMME4 ] =
Pm
4
u=1 au
+6·
P
u6=v
au2 · av2 .
und wir erhalten die Varianz
2
V [ SUMME ] =
m
X
au4
+6·
= 4·
au2
·
av2
−
u6=v
u=1
X
X
au2
·
av2
62·
m
X
!2
au2
u=1
H22 .
u6=v
Als Konsequenz der Tschebyscheff Ungleichung folgt
prob[ |SUMME2 − H2 | > λ · H2 ] 6
2 · H22
2
= 2
2
2
λ .
λ · H2
Große Abweichungen haben eine zu hohe Wahrscheinlichkeit!
Häufigkeitsmomente
H2
37 / 74
Boosting
Wähle k Hashfunktionen h1 , . . . , hk .
Pk
2
SUMMEi
Gib SCHÄTZUNGk = i=1 k
aus.
I
I
I
Der Erwartungswert bleibt stabil, aber die Varianz fällt um Faktor k .
2
Es ist deshalb prob[ |SCHÄTZUNGk − H2 | > λ · H2 ] 6 k ·λ
2.
8
1
Für k = λ2 ist die Fehlerwahrscheinlichkeit höchstens 4 .
Wiederhole den „Sketching Algorithmus“ k ∗ = k · s mal.
I
I
Teile die Summenergebnisse in s Klassen von je k Wiederholungen
auf und berechne das Mittel für jede Klasse.
Bestimme den Median M der s Schätzungen.
Es ist |M − H2 | > λ · H2 mit Wahrscheinlichkeit höchstens 2−Ω(s) .
- Wenn |M − H2 | > λ · H2 , dann liegt mindestens die Hälfte aller
Einzelschätzungen außerhalb.
- Mindestens doppelt so viele Einzelschätzungen wie erwartet
liegen außerhalb: Wende die Chernoff-Schranke an.
Häufigkeitsmomente
H2
38 / 74
Das Ergebnis
- Eine bis auf den Faktor 1 + λ exakte Schätzung von H2 wird mit
Wahrscheinlichkeit mindestens 1 − δ erreicht.
- Die Speicherplatzkomplexität und die Laufzeit pro Schlüssel ist
durch O( λ12 · log2 ( 1δ )) beschränkt.
Es ist |M − H2 | > λ · H2 mit Wahrscheinlichkeit höchstens 2−Ω(s) .
Setze s = log2 ( 1δ ) und die Fehlerwahrscheinlichkeit ist durch O(δ)
beschränkt.
Es ist k = λ82 : Pro Schlüssel müssen O(
ausgewertet werden.
log2 ( δ1 )
)
λ2
Hashfunktionen
H2 lässt sich schnell und speichereffizient approximieren, solange
keine zu scharfe Approximation verlangt wird.
Häufigkeitsmomente
H2
39 / 74
Das nullte Häufigkeitsmoment
|{ u ∈ U | au > 1 }|
Häufigkeitsmomente
H0
40 / 74
Die Bestimmung von H0
Wenn die Hauptspeichergröße mindestens Ω(n) beträgt:
I
Benutze Hashing.
Wenn die Daten in den Sekundärspeicher passen:
I
Lege die Daten im Sekundärspeicher ab und sortiere zum Beispiel
mit Mergesort.
Wenn selbst der Sekundärspeicher überfordert ist:
I
I
Wir müssen eine approximative Berechnung von H0 erlauben
und benutzen randomisierte Algorithmen.
Häufigkeitsmomente
H0
41 / 74
Hashing für die Berechnung von H0
1
Die Vorbereitungsphase:
I
I
I
2
Durchlaufe die Eingabe (x1 , . . . , xn ):
I
3
Wähle eine natürliche Zahl T > 1 und
eine zufällige Hashfunktion h : U → {1, . . . , T }.
Setze die boolesche Variable GROSS auf falsch.
Wenn h(xi ) = T für ein i, dann setze GROSS auf wahr.
Gib die Antwort GROSS aus.
Häufigkeitsmomente
H0
42 / 74
Eine Diskussion
Die Intuition:
I
I
I
Die Wahrscheinlichkeit, dass h(x) = T gilt, ist T1 .
Wenn der Hashwert T in t Versuchen nicht erreicht wird, dann
geschieht dies mit Wahrscheinlichkeit
1
T −1 t
(
) = (1 − )t ≈ exp−t/T ,
T
T
vorausgesetzt, alle t Zahlen sind paarweise verschieden.
Für t 6 T verschiedene Schlüssel wird die Wahrscheinlichkeit eines
„Treffers“ beobachtbar kleiner als für t > (1 + ε) · T Schlüssel sein.
Schätzungen mit Hilfe dieses Verfahrens sind ungenau und
besitzen substantielle Fehlerwahrscheinlichkeiten.
I
I
Arbeite mit mehreren, unabhängig von einander ausgewürfelten
Hashfunktionen
und variiere den Schwellenwert T in Potenzen von 1 + ε.
Häufigkeitsmomente
H0
43 / 74
Stichproben verschiedener Schlüssel
Häufigkeitsmomente
H0
44 / 74
H0 und Stichproben
Eine Stichprobe gleichverteilt gezogener Schlüssel ist ungeeignet.
Berechne stattdessen eine Stichprobe verschiedener
Schlüssel.
Und wenn die Stichprobe überläuft?
I
I
Weise jedem Schlüssel eine Priorität zu.
Wenn die Stichprobe S alle Schlüssel der Mindestpriorität P enthält
und wenn S überläuft, dann setze die Mindestpriorität auf P + 1:
Entferne alle Schlüssel der Priorität P aus der Stichprobe.
- Wie sollten wir Prioritäten berechnen?
- Von der Anzahl verschiedener Schlüssel der Priorität mindestens
P müssen wir auf die Anzahl der verschiedenen Schlüssel
rückschließen können.
∗ Prioritäten müssen randomisiert berechnet werden.
Häufigkeitsmomente
H0
45 / 74
Berechnung der Prioritäten
Die Zweierpotenz m sei mindestens so groß wie die Anzahl aller
möglichen verschiedenen Schlüssel.
- Wähle Parameter A ∈ {1, . . . , m − 1} und B ∈ {0, . . . , m − 1}
zufällig.
- Arbeite mit der Hashfunktion hA,B (u) = (A · u + B) mod m.
- Die Prioritätszuweisung:
p(u) = die Anzahl der führenden Nullen in der
Binärdarstellung von hA,B (u).
Die Binärdarstellung von hA,B (u) werde durch führende Nullen auf
die exakte Länge log2 m aufgefüllt.
Der relative Anteil der Schlüssel u mit p(u) > k beträgt 2−k .
Häufigkeitsmomente
H0
46 / 74
Der Algorithmus
1
Würfle eine Hashfunktion hA,B aus.
2
Setze PRIORITÄT= 0 und STICHPROBE= ∅.
S sei die Maximalgröße einer Stichprobe.
3
Wiederhole für i = 1, . . . ,:
I
I
4
Füge xi zur Menge STICHPROBE hinzu, falls p(xi ) > PRIORITÄT.
Solange STICHPROBE mehr als S Schlüssel besitzt, entferne alle
Schlüssel x mit p(x) = PRIORITÄT und erhöhe PRIORITÄT um 1.
Setze p = PRIORITÄT und gib die Schätzung
2p · |STICHPROBE|
aus.
Häufigkeitsmomente
H0
47 / 74
Analyse
Es ist prob[ p(x) > p ] = 2−p .
Wenn p die Priorität am Ende der Berechnung ist, gilt
E[ |STICHPROBE| ] = E[ |{x | p(x) > p, es gibt i mit x = xi }| ]
X
=
prob[ p(x) > p ]
x ein Schluessel
−p
= 2
· Anzahl verschiedener Schlüssel.
Also folgt
E[ 2p · |STICHPROBE| ] = Anzahl verschiedener Schlüssel.
Die Schätzung ist gut, wenn große Abweichungen vom
Erwartungswert E[ |STICHPROBE| ] unwahrscheinlich sind.
Häufigkeitsmomente
H0
48 / 74
Die Tschebyscheff Ungleichung
V sei die Varianz der Zufallsvariablen X . Dann gilt
prob[ |X − E[X ]| > t ] 6
V
.
t2
Übungsaufgabe: var|STICHPROBE| 6 E[ |STICHPROBE| ].
Für E = E[ |STICHPROBE| ] ist
prob[ | E − |STICHPROBE| | > ε · E ] = O(
1
E
).
) = O( 2
ε ·E
ε2 · E 2
A = 2p · E gilt für die Anzahl A verschiedener Schlüssel:
prob[ | A − 2p · |STICHPROBE| | > ε · A ]
= prob[ 2p · | E − |STICHPROBE| | > ε · 2p · E ]
= prob[ | E − |STICHPROBE| | > ε · E ] = O(
Häufigkeitsmomente
H0
1
).
ε2 · E
49 / 74
Zusammenfassung
Mit Wahrscheinlichkeit höchstens O( ε21·E ) weicht die Schätzung um
mehr als ε · A von der Anzahl A verschiedener Schlüssel ab.
Wie lässt sich die Schätzung verbessern?
Arbeite mit mehreren, unabhängig voneinander ausgewürfelten
Hashfunktionen.
Gib den Median der Schätzungen als endgültige Schätzung aus.
I
I
Warum den Median?
Der Einfluss von Ausreissern auf den Median ist nur schwach.
Wir benutzen dasselbe Verfahren wie für die Bestimmung von H2 .
Häufigkeitsmomente
H0
50 / 74
Heavy Hitter
Heavy Hitter: Schlüssel mit großer Häufigkeit
51 / 74
Heavy Hitter: Was geht und was nicht?
- Wir wissen: Die Bestimmung eines Schlüssels mit großer
Häufigkeit verlangt einen zu großen Speicher.
- Übungsaufgabe: Deterministische Algorithmen benötigen
Speichergröße Ω(m) bei m verschiedenen Schlüsseln, wenn der
Schlüssel mit Häufigkeit größer als 50% zu bestimmen ist.
Verlange nur, dass eine Menge K von höchstens p1 Schlüsseln
berechnet wird, unter denen sich alle Schlüssel mit Häufigkeit
größer als p% befinden.
Wie bestimmt man einen Schlüssel mit Häufigkeit > 50%?
I
I
Entferne Paare verschiedener Schlüssel.
Der Mehrheitschlüssel verliert nie seine Mehrheitseigenschaft und
wird bis zuletzt überleben.
Heavy Hitter: Schlüssel mit großer Häufigkeit
Zähleralgorithmus
52 / 74
Der Zähleralgorithmus
1
Der Datenstrom bestehe aus dem Vektor x = (x1 , x2 , . . . , xn ) mit
xi ∈ {1, . . . , m}.
2
Die Menge K ist anfänglich leer und das Array “Zähler” ist auf Null
initialisiert.
For i = 1 to n do
3
(a) Wenn xi ∈ K , dann erhöhe den Zähler von xi um Eins.
(b) Wenn xi 6∈ K , dann füge xi zu K hinzu und setze den Zähler von xi
auf Eins.
F
Wenn K jetzt mehr als p1 Elemente besitzt, dann erniedrige alle
Zähler um Eins und entferne alle Schlüssel mit Zählerstand Null.
Übungsaufgabe:
Alle Schlüssel mit Häufigkeit größer als p% liegen in K .
Der Algorithmus rechnet in Linearzeit und die Menge K besteht
aus höchstens 1/p Schlüsseln.
Heavy Hitter: Schlüssel mit großer Häufigkeit
Zähleralgorithmus
53 / 74
Eine verallgemeinerte Häufigkeitsanfrage
- Der Datenstrom habe die Form ((xi , ci ) | i) mit ci > 0.
P
- H(x) = xk =x ck ist die verallgemeinerte Häufigkeit von x.
Wir erhalten die konventionelle Häufigkeit für ci = 1.
- Wir möchten H(x) mit einer „Ungenauigkeit“ von höchstens ε und
einer Wahrscheinlichkeit von mindestens 1 − δ berechnen.
Wir arbeiten mit k = dln( 1δ )e Hashfunktionen
h1 , . . . , hk : U → {1, . . . , w} für
e
w=
ε
Zellen.
Wir verwenden zählende Bloom-Filter, die den einzelnen
Hashfunktionen disjunkte Teilarrays Z1 , . . . , Zk des Arrays
Z = (Z1 , . . . , Zk ) zuweisen.
I
Jedes Zi besteht aus w Zellen.
Heavy Hitter: Schlüssel mit großer Häufigkeit
Bloom Filter Sketches
54 / 74
Der Bloom Filter Sketch
1
Die Arrays Z1 , . . . , Zk sind alle zu Null initialisiert.
2
Wiederhole: Wenn das Paar (xi , ci ) empfangen wird, dann setze
für jedes j 6 k
Zj [hj (xi )] = Zj [hj (xi )] + ci .
3
Eine verallgemeinerte Häufigkeitsfrage für Schlüssel x wird mit
H 0 (x) = min16j6k Zj [hj (x)]
beantwortet.
Heavy Hitter: Schlüssel mit großer Häufigkeit
Bloom Filter Sketches
55 / 74
Analyse
(1/3)
- Es ist stets H(x) 6 Zj [hj (x)] und H(x) 6 H 0 (x) folgt.
- Mit welcher Wahrscheinlichkeit wird H 0 (x) zu groß?
P
Definiere die Zufallsvariable Kjx = y ∈U mit x6=y und hj (x)=hj (y ) H(y ).
P
Es ist prob[ H 0 (x) > H(x) + ε · y ∈U H(y ) ]
X
= prob[ ∀j 6 k : Zj [hj (x)] > H(x) + ε ·
H(y ) ]
y ∈U
= prob[ ∀j 6 k : H(x) +
Kjx
> H(x) + ε ·
X
H(y ) ]
y ∈U
= prob[ ∀j 6 k :
Kjx
>ε·
X
H(y ) ]
y ∈U
= (prob[ Kjx > ε ·
X
H(y ) ])k .
y ∈U
Heavy Hitter: Schlüssel mit großer Häufigkeit
Bloom Filter Sketches
56 / 74
Analyse
(2/3)
prob[ H 0 (x) > H(x) + ε ·
P
y ∈U
H(y ) ] = (prob[ Kjx > ε ·
P
y ∈U
H(y ) ])k .
Wie groß kann Kjx werden?
Die Null-Eins Zufallsvariable Kjx (y ) nehme genau dann den Wert
Eins an, wenn hj (x) = hj (y ).
I
Es ist E[Kjx (y )] 6 1/w für x 6= y .
Wir schätzen den Erwartungswert von Kjx ab:
X
= E[
H(y ) ] =
6
y ∈U mit x6=y
H(y ) · E[ Kjx (y ) ]
y ∈U mit x6=y
y ∈U: x6=y ,hj (x)=hj (y )
X
X
E[ Kjx ]
H(y )
ε X
e
6 ·
H(y ), denn w = .
w
e
ε
Heavy Hitter: Schlüssel mit großer Häufigkeit
y ∈U
Bloom Filter Sketches
57 / 74
Analyse
(3/3)
Wende die Markoff-Ungleichung pr[ |X | > a ] 6 E[|X |]/a an:
prob[ H 0 (x) > H(x) + ε ·
X
H(y ) ]
y ∈U
= (prob[ Kjx > ε ·
X
H(y ) ])k
y ∈U
X
ε X
6 ( ·
H(y ) / ε ·
H(y ))k = e−k 6 δ.
e
y ∈U
Für k = dln( 1δ )e und w =
e
ε
y ∈U
gilt
H(x) 6 H 0 (x) 6 H(x) + ε ·
X
H(y )
y ∈U
mit Wahrscheinlichkeit mindestens 1 − δ.
Heavy Hitter: Schlüssel mit großer Häufigkeit
Bloom Filter Sketches
58 / 74
Heavy Hitter: Zusammenfassung
Der Zähleralgorithmus: Alle Schlüssel mit Häufigkeit größer als p%
werden bestimmt; allerdings werden noch weitere, höchstens aber p1
Schlüssel ausgegeben.
Der Algorithmus rechnet in Linearzeit.
Der Bloom Filter Sketch: Für k = dln( 1δ )e und w =
X
H 0 (x) 6 H(x) + ε ·
H(y )
e
ε
gilt
y ∈U
mit Wahrscheinlichkeit mindestens 1 − δ. Höchstens O( 1ε · ln( 1δ )) Zellen
werden benutzt und die Laufzeit pro Anfrage ist höchstens O(ln( 1δ )).
In Anwendungen muss ε SEHR klein gewählt werden!
Heavy Hitter: Schlüssel mit großer Häufigkeit
Bloom Filter Sketches
59 / 74
Häufigkeitseigenschaften
Eigenschaften
60 / 74
Eigenschaften von Häufigkeiten
- Wir interpretieren Teilmengen En ⊆ {1, . . . , n} als Eigenschaften
von Häufigkeiten:
I
Schlüssel x hat Eigenschaft En , falls die Häufigkeit von x
–unter den ersten n Schlüsseln– in En liegt.
Beispiel: En = {1, . . . , K } formalisiert die Eigenschaft „höchstens
K -mal aufzutreten“.
- En∗ = {xj | j 6 n und xj hat Eigenschaft En } ist die Menge der
Schlüssel mit Eigenschaft En . Wenn Vn die Menge der
verschiedenen Schlüssel (unter den ersten n) ist, dann ist
|E ∗ |
p[En ] = n
|Vn |
die Wahrscheinlichkeit von En .
Wie scharf kann p[En ] approximiert werden?
Eigenschaften
61 / 74
Der Jaccard Koeffizient
Wir erinnern an den Jaccard Koeffizienten
J(A, B) =
|A ∩ B|
.
|A ∪ B|
Es ist minπ (A) = minπ (B) mit Wahrscheinlichkeit J(A, B), wobei
min(X ) = min{π(x) | x ∈ X }.
π
Es ist J(En∗ , Vn ) =
|En∗ ∩Vn |
|En∗ ∪Vn |
=
|En∗ |
|Vn |
= p[En ].
Als Konsequenz:
prob[min(En∗ ) = min(Vn )] = p[En ].
π
Eigenschaften
π
62 / 74
Berechnung von p[En ]
1
Wähle zufällig k Permutationen π1 , . . . , πk .
Setze minj (0) = ∞ sowie Zählerj = 0 für alle j 6 k .
2
Wenn xi+1 zu verarbeiten ist, dann wiederhole für jedes j 6 k
(a) Berechne πj (xi+1 ).
(b) Wenn πj (xi+1 ) < minj (i), dann setze
minj (i + 1) = πj (xi+1 ) und Zählerj = 1.
/* Der Schlüssel xi+1 tritt zum ersten Mal auf und sein Zähler wird
deshalb auf Eins gesetzt.
*/
(c) Wenn πj (xi+1 ) = minj (i), dann setze Zählerj = Z-ahlerj + 1.
/* Ein weiteres Vorkommen des minimalen Schlüssels xi+1 für πj :
Sein Zähler wird inkrementiert.
*/
3
k ∗ sei die Anzahl der Schlüssel minj (n) mit Eigenschaft En :
I
Gib k ∗ /k als Schätzung für p[En ] aus.
Eigenschaften
63 / 74
Analyse
(1/2)
Definiere die Zufallsvariablen
1 minj (n) ∈ En∗ ,
Xj =
0 sonst.
E[
Pk
j=1 Xj ]
=
Pk
j=1 E[Xj ]
= k · p[En ].
X1 , . . . , Xk sind unabhängig: Die Chernoff-Schranke liefert
prob[ |
k
X
Xj − k · p[En ]| > ε · k · p[En ] ] 6 2 · e−k ·p[En ]·ε
2 /3
.
j=1
Also folgt prob[ |k ∗ /k − p[En ]| > ε · p[En ] ]
= prob[ |k ∗ − k · p[En ]| > ε · k · p[En ] ]
2 /3
6 2 · e−k ·p[En ]·ε
Eigenschaften
.
64 / 74
Analyse
(2/2)
prob[ |k ∗ /k − p[En ]| > ε · p[En ] ] 6 2 · e−k ·p[En ]·ε
2 /3
.
Für eine ε-Approximation mit Fehlerwahrscheinlichkeit höchstens
δ fordere
2 /3
2 · e−k ·p[En ]·ε
6 δ.
Äquivalent dazu −k · p[En ] · ε2 /3 6 ln( 2δ ),
bzw. k >
3
ε2 ·p[En ]
· ln( 2δ ).
1
- Für k = O( ε2 ·p[E
· ln( 1δ )) erreichen wir eine (1 + ε)-Approximation
n]
von p[En ] mit Wahrscheinlichkeit mindestens 1 − δ.
- Die Laufzeit pro Schlüssel ist durch O(k ) und die
Speicherplatzkomplexität durch O(k · log2 n) beschränkt.
Eigenschaften
65 / 74
Wahrscheinlichkeit von Eigenschaften
- Wir erreichen eine (1 + ε)-Approximation von p[En ] mit
1
Wahrscheinlichkeit mindestens 1 − δ für k = O( ε2 ·p[E
· ln( 1δ )).
n]
- Die Laufzeit pro Schlüssel ist durch O(k ) und die
Speicherplatzkomplexität durch O(k · log2 n) beschränkt.
+ Eine gute Approximation gelingt mit Min-Hashing relativ schnell
und mit kleinem Speicher.
- Allerdings darf die Eigenschaft nicht zu unwahrscheinlich sein:
Die Laufzeit und die Speichergröße wächst mit p[E1 n ] .
- Ein weiterer Wermutstropfen: Wir können nicht alle Schlüssel mit
Eigenschaft En liefern, sondern nur eine kleine Auswahl.
Eigenschaften
66 / 74
Zeitfenster
Zeitfenster
67 / 74
Zeitfenster
Die Fenstergröße N sei gegeben.
- Wir betrachten einen Datenstrom und möchten die Anzahl
„auffälliger“ Daten in einem Zeitfenster der Länge N zählen.
- Wir modellieren dieses Problem als das Zählen der Einsen unter
den letzten N Bits in einem Datenstrom von Nullen und Einsen.
- Jeder deterministische Algorithmus, der die Anzahl der Einsen im
Zeitfenster der Größe N mit relativem Fehler ε bestimmt,
benötigt mindestens Speicherplatz Ω( 1ε log22 εN).
- Wir zeigen, dass Speicherplatz O( 1ε log22 N) ausreicht.
Zeitfenster
68 / 74
Die Datenstruktur der Körbe
Wir arbeiten mit Körben K1 , . . . Km . Der Korb Ki speichert die Anzahl
der Einsen in einem sich dynamisch ändernden Zeitintervall Zi .
Die Zeitintervalle Z1 , . . . , Zm bilden eine disjunkte Zerlegung eines
{1, . . . , N} umfassenden Zeitraums.
Die Zeitintervalle sind zeitlich geordnet Z1 < · · · < Zm , wobei
I
I
Z1 den gegenwärtigen Zeitpunkt und
Zm den letzten interessanten Zeitpunkt N der Vergangenheit
enthält.
Korb Ki speichert
I
I
den Zeitstempel des Korb, nämlich das Alter der jüngsten erfassten
Eins im Zeitintervall Zi und
und die Korbgröße Gi , also die Anzahl der Einsen im Zeitintervall Zi .
Die Korbgrößen Gi sind stets Zweierpotenzen und die Körbe
K1 . . . , Km besitzen aufsteigende Korbgrößen.
Zeitfenster
69 / 74
Zeitstempel
Der Zeitstempel verrät, ob ein Korb noch aktuell ist:
Wenn der Zeitstempel des letzten Korbs größer als N ist, dann
kann der Korb entleert und wiederverwandt werden.
Für alle Körbe kennen wir die exakte Anzahl der Einsen ihres
Zeitintervalls, nicht aber das Ende des Zeitintervalls.
I
Wenn der letzte Korb Km noch aktuell ist, dann folgt nur
m−1
X
i=1
I
I
Gi + 1 6 Exakt 6
m−1
X
Gi + Gm .
i=1
Gm
2 ab.
Pm−1
Wir geben die Schätzung i=1 Gi +
Um den relativen Fehler durch 2ε zu beschränken, genügt die
Forderung
Gm /2
(Gm − 1)/2
6 2 · ε, bzw. stärker Pm−1
6 ε.
Pm−1
i=1 Gi + 1
i=1 Gi + 1
Zeitfenster
70 / 74
Die Größe des letzten Korbs
(1) Die Forderung
(Gm −1)/2
Pm−1
i=1 Gi +1
6 ε soll stets erfüllt sein!
(2) Fordere für k = d 1ε e: Wenn 2h die Korbgröße des letzten Korbs Km
ist, dann gibt es zu jedem h0 < h mindestens k2 und höchstens
k
h0
2 + 1 Körbe der Größe 2 .
(1) folgt aus (2):
Wenn Korb Km die Korbgröße 2r besitzt, dann gibt es mindestens
k
r −1 .
2 Körbe der Größen 1, 2, 4, . . . , 2
Also gilt
m−1
X
i=1
Zeitfenster
r −1
k X i
k
1 Gm − 1
Gi + 1 > ·
2 = · (2r − 1) > ·
.
2
2
ε
2
i=0
71 / 74
Der Algorithmus
1
Zwei Variablen „TOTAL” und „LETZTER” speichern die
Gesamtgröße aller Körbe, bzw. den Index des letzten Korbs.
2
Wenn der letzte Korb nicht aktuell ist, dann entferne ihn und
aktualisiere TOTAL und LETZTER.
Wenn das neue Bit eine Null ist, dann wird es ignoriert. Sonst:
3
I
I
4
erzeuge einen neuen Korb mit Korbgröße 1,
halte den Zeitpunkt fest und erhöhe TOTAL um eins.
Gibt es jetzt k2 + 2 Körbe der Korbgröße 1, dann vereinige die
beiden ältesten Körbe zu einem Korb der Größe 2 und bestimme
den Zeitstempel des neuen Korbs.
I
I
I
Nach Verschmelzung gibt es möglicherweise zu viele Körbe der
Größe 2.
Also setze die Überprüfung für Korbgröße 2 fort....
und aktualisiere gegebenenfalls die Variable LETZTER.
Zeitfenster
72 / 74
Ein Beispiel
Es sei k = 2.
Die Korbgrößen seien (1, 1, 2, 4, 4, 8, 8, 16, 32).
Wenn eine neue Eins eintrifft, dann
I
fasse Körbe zusammen, um (1, 2, 2, 4, 4, 8, 8, 16, 32) zu erhalten.
Nach zwei weiteren Einsen und der entsprechenden
Korbzusammenfassung ergibt sich dann der Vektor
(1, 2, 4, 8, 16, 16, 32).
Jedes neue Bit verursacht im worst-case O(log2 N) Operationen,
während die durchschnittliche Laufzeit sogar nur konstant ist.
Zeitfenster
73 / 74
Das Ergebnis
- Für jedes N wird die Anzahl der Einsen unter den letzten N Bits
mit relativem Fehler höchstens 2ε bestimmt.
- Die worst-case Laufzeit pro Bit ist O(log2 N) und die amortisierte
Laufzeit ist konstant.
- Die Speicherplatzkomplexität ist durch O( 1ε · log22 N) beschränkt.
Die Speichergröße:
Es gibt bis zu O(k · log2 N) Körbe mit k = d 1ε e.
Jeder Korb speichert sein Alter mit bis zu O(log2 N) Bits.
Zeitfenster
74 / 74
Herunterladen