26 Kapitel 2. DatenanalyseDie Menge H(s, ϑ) heißtHot-List von s bezüglich ϑ.Proposition 2.20 Es gibt einen Ein-Pass-Algorithmus, der die Hot-List H(s, ϑ) für einenDatenstrom s der Länge N mit O(n · log N) Speicherplatz berechnet.Beweis: Für jedes a ∈ Σzähle Vorkommen in s in einem Binärzähler.Im Folgenden wollen wir zeigen: Mit einem Pass geht es nicht wesentlich besser als inProposition 2.20 angegeben.Theorem 2.21 Jeder Online-Algorithmus zur Bestimmung der Menge H(s, ϑ) für einenDatenstrom s benötigt im schlechtesten Fall Ω(n log N n ) Speicherplatz.Beweis: Es sei N>4n > 16 ϑ.EsseiA ein Ein-Pass-Algorithmus, der die Hot-List H(s, ϑ)bestimmt. Wir betrachten den Zustand von A in dem Moment, wenn das Element s M mitM = ⌊ N 2⌋ gelesen wird. Da A nicht mehr die Möglichkeit hat, auf die Datenstromelementes i mit i ≤ M zuzugreifen, muss der Algorithmus A alle Datenstrompräfixe mitverschiedenen Elementhäufigkeiten unterscheiden können, d.h. alle s ′ =(s ′ 1 ,...,s′ M ) unds ′′ =(s ′′1 ,...,s′′ M )mit|s′ | a ≠ |s ′′ | a für irgendein a ∈ Σ. Anderenfalls könnten die zweitenHälften der Datenströme mit u =(u M+1 ,...,u N )ergänzt werden, so dass a ∈ H(s ′ u, ϑ)und a /∈ H(s ′′ u, ϑ) gilt, aber A für beide Datenströme entweder a ausgibt oder a nichtausgibt. In beiden Fällen wäre A nicht korrekt. Dieses Argument funktioniert jedoch nur,wenn |s ′ | a ≤ ϑ·N und |s ′′ | a ≤ ϑ·N für alle a ∈ Σ gilt. Die Menge dieser Datenstrompräfixelässt sich durch die folgende Menge K N repräsentieren:K N = def {(k 1 ,...,k n ) ∈ IN n | k i ≤ ϑ · N, ∑ nj=1 k j = ⌊ N 2 ⌋}.Der Algorithmus A benötigt deshalb mindestens log ‖K N ‖ Bits als Speicherplatz. Wirmüssen nun also ‖K N ‖ nach unten abschätzen.Wenn wir ⌊ N 2⌋ wie folgt auffassen⌊ ⌋ N=1+···+12 } {{ }+1+···+1} {{ }+ ···+1+···+1} {{ }k 1 k 2k n,so lässt sich jedes Tupel aus K N interpretieren als ein Tupel (b 0 ,b 1 ,...,b n ) mit den Eigenschaften0 = b 0 ≤ b 1 ≤ ··· ≤ b n = ⌊ N 2 ⌋ + n und k i = b i − b i−1 − 1für alle 1 ≤ i ≤ n. DieWerte b i sind nichts anderes als die Nummer der +-Zeichen zwischen den zu k i−1 und k igehörenden Blöcken, d.h. die Positionen der Grenzen zwischen den Blöcken i − 1 und i.Wir betrachten nun die MengeK ′ N = def { (k 1 ,...,k n ) ∈ IN n ) | für alle i gilt k i = ⌊ N 2n ⌋ oder k i = ⌈ N 2n ⌉}Skriptum zu Internet-Algorithmik WS 2006/2007
2.2. Datenströme 27Es sei (k 1 ,...,k r ) ∈ K N .Für dieses Tupel können wir jedoch für jedes i ∈{1,...,n−1} diezugehörigen Grenzen zu den Blöcken i − 1bzw.i + 1 unabhängig um bis zu ⌊ N 4n ⌋≤ 1 2 ⌊ N 2n ⌋nach links und rechts verschieben und es gilt⌈ N2n⌉+⌊ N4n⌋≤ 3N4n +1≤ 3 · ϑ · N +116 ist. Mithin gilt( ⌊ N n−1‖K N ‖≥ 2 +1).4n⌋Folglich erhalten wir log ‖K N ‖ =Ω(n log N n) als untere Schranke für den Speicherplatzvon A.2.2.3 Hot-List-Analyse mit zwei PässenWir gehen zur Betrachtung von Zwei-Pass-<strong>Algorithmen</strong> über. Der hier vorgestellte Algorithmusbasiert auf einer Idee von Richard M. Karp, Christos H. Papadimitriou und ScottJ. Shenker.Zunächst halten wir folgende einfache Abschätzung der Kardinalität von Hot-List-Mengenfest.Proposition 2.22 Für jedes s ∈ Σ ∗ und ϑ ∈ (0, 1) gilt ‖H(s, ϑ)‖ < 1 ϑ .Beweis: Es gilt für alle s ∈ Σ ∗ , ϑ ∈ (0, 1):N = |s| ≥∑|s| a >ϑ· N ·‖H(s, ϑ)‖.a∈H(s,ϑ)Damit folgt sofort nach Umstellung: ‖H(s, ϑ)‖ < 1 ϑ .Wir verwenden folgende Idee:Wenn alle Elemente im Datenstrom so angeordnet werden können, dass immerBlöcke der Größe ⌊ 1 ϑ⌋ mit paarweise verschiedenen Elementen entstehen, sokann ein Element höchstens ⌊ϑ · N⌋-mal im Datenstrom vorkommen.Für einen Datenstrom s und ein festes ϑ ∈ (0, 1) berechnen wir mit Hilfe dieser Ideezunächst in einem Pass eine Kandidatenmenge K mit ‖K‖ ≤⌊ 1 ϑ⌋ und H(s, ϑ) ⊆ K. Dieserfolgt mit dem Algorithmus ComputeCandidates wie in Abbildung 2.10 beschrieben.Proposition 2.23 Der Algorithmus ComputeCandidates ist korrekt.Version 0.6 Fassung vom 16. Februar 2007