13.07.2015 Aufrufe

INSTITUTFÜRINFORMATIK - Lehrstuhl für Effiziente Algorithmen ...

INSTITUTFÜRINFORMATIK - Lehrstuhl für Effiziente Algorithmen ...

INSTITUTFÜRINFORMATIK - Lehrstuhl für Effiziente Algorithmen ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

28 Kapitel 2. DatenanalyseAlgorithmus: ComputeCandidatesEingabe: Datenstrom s =(s 1 ,...,s N ) über ΣAusgabe: K mit ‖K‖ ≤⌊ 1 ϑ⌋ und H(s, ϑ) ⊆ K1. K := ∅2. FOR i := 1 TO N3. IF s i ∈ K4. C[s i ]:=C[s i ]+15. ELSE6. Füge s i in K ein7. C[s i ]:=18. IF ‖K‖ > 1 ϑ9. FOR a ∈ K10. C[a] :=C[a] − 111. IF C[a] =012. Lösche a aus K13. Gebe K ausAbbildung 2.10: Berechnung der Kandidatenmenge für ϑ ∈ (0, 1)Beweis: Wir müssen zeigen, dass alle a ∈ H(s, ϑ) mitK ausgegeben werden. Es seia ∈ Σ ein Element, dass von ComputeCandidates nicht ausgegeben wird, d.h. a/∈ K.Jedes Vorkommen von a in s wird zusammen mit ⌈ 1 ϑ ⌉−1 ≥ 1 ϑ− 1 Vorkommen andererSymbole aus Σ gelöscht (Zeilen 8–12). Insgesamt werden also mehr als |s|aϑVorkommenvon Buchstaben entfernt. Mithin gilt |s|aϑ≤ N bzw. |s| a ≤ ϑ · N. Es folgt a/∈ H(s, ϑ).Für die Komplexität von ComputeCandidates ergibt sich zunächst bei Implementierungvon K mittels Hash-Tabelle und C als dynamischem Array:• O( 1 ϑ ) Speicherplatz• O(1) amortisierte Laufzeit pro Datenstromelement (ohne Hashing)Verfeinerte Datenstrukturen für K und C:1. Operationen für Objekt K:• insertItem(a): Füge neues Element a in K ein• incCounter(a): Inkrementiere Zähler von Element a ∈ K• decAllCounters(): Dekrementiere alle Zähler für Elemente a ∈ K (und entferneElemente mit Zählerstand 0)• size(), isElement(a) usw. usf.Skriptum zu Internet-Algorithmik WS 2006/2007

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!