Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. Datenstromalgorithmus – Wikipedia
Datenstromalgorithmus – Wikipedia 👆 Click Here!
aus Wikipedia, der freien Enzyklopädie

In der Informatik ist ein Datenstromalgorithmus ein Algorithmus, der die Daten eines oder mehrerer Datenströme sequenziell liest und dabei direkt („online“) verarbeitet.

Anwendung

[Bearbeiten | Quelltext bearbeiten]

Viele heutige Anwendungen in der Informatik machen auf Grund der extrem großen, kontinuierlich angelieferten Datenmenge, die Verarbeitung eines Datenstroms erforderlich. Dies ist beispielsweise bei der Erfassung von Routingdaten in Netzwerken, bei Aufzeichnungen von Telekommunikationsdaten, bei Banktransaktionen oder bei Börsentickern der Fall.

Mathematische Sichtweise und Effizienzanforderungen

[Bearbeiten | Quelltext bearbeiten]

Man modelliert die kontinuierlich anfallenden Daten als Strom – eine Folge von Eingabezeichen, deren Länge häufig unbekannt ist, aber als sehr groß angenommen wird.

Ein den Strom verarbeitender Algorithmus darf nur Zeichen für Zeichen des Stromes lesen, wahlfreier Zugriff (random access), d. h. ein „Springen“ auf den Eingabezeichen, ist nicht erlaubt.

Im Datenstromszenario werden wegen der Menge der anfallenden Daten im Wesentlichen zwei Effizienzforderungen gestellt: Die Speicherplatzkomplexität des Datenstromalgorithmus soll sublinear, idealerweise logarithmisch oder polylogarithmisch sein, ebenso wie die Rechenzeit pro Eingabezeichen.

Gewisse Probleme lassen sich also mit Datenstromalgorithmen exakt lösen, da die gesamte Eingabe gelesen werden darf. Trotzdem sind sublinearer Speicherplatz und sublineare Rechenzeit pro Eingabezeichen Effizienzanforderungen, die häufig dazu führen, dass dies eben nicht möglich ist und nur approximative Lösungen gegeben werden können und Randomisierung eingesetzt werden muss.

Denn ein Datenstromalgorithmus darf wegen des nur sublinearen Speicherplatzes nicht die gesamte Eingabe speichern, sondern nur eine Zusammenfassung des bisher Gesehenen. Man sagt, der Algorithmus speichert eine Skizze (Sketch) der bisher gesehenen Eingabe.

Im folgenden Beispiel wird ein Algorithmus vorgestellt, der das gegebene Problem exakt lösen kann.

Beispiele

[Bearbeiten | Quelltext bearbeiten]

Anzahl der Elemente

[Bearbeiten | Quelltext bearbeiten]

Die Anzahl der Elemente in einem Datenstrom kann einfach mit einem Zähler ermittelt werden. Mit randomisierten Algorithmen lässt sich der Speicherbedarf dabei weiter verringern.

Fehlende Zahl

[Bearbeiten | Quelltext bearbeiten]

Sei π {\displaystyle \pi } {\displaystyle \pi } eine Permutation der Zahlenmenge { 1 , … , n } {\displaystyle \{1,\dots ,n\}} {\displaystyle \{1,\dots ,n\}} mit einem fehlenden Element s {\displaystyle s} {\displaystyle s}.

Eine einfache Methode zur Bestimmung der fehlenden Zahl wäre, alle Zahlen zu sammeln, zu sortieren und diese geordnete Menge dann der Reihe nach auf das fehlende Element zu durchsuchen. Dazu müssten aber wie beschrieben alle Zahlen gespeichert werden. Der Speicherverbrauch dieses Algorithmus beträgt dann n ⋅ 4 {\displaystyle n\cdot 4} {\displaystyle n\cdot 4} Bytes, wenn angenommen wird, dass jede Zahl als 32-Bit Integer gespeichert wird. So müsste man bspw. für n = 1.000.000.000 {\displaystyle n=1.000.000.000} {\displaystyle n=1.000.000.000} ca. 3,7 GB speichern. Um eine angemessene Performanz zu erreichen, müssten dabei diese Daten im Arbeitsspeicher abgelegt werden, doch dies ist aufgrund des großen Datenvolumens bei den meisten PCs nicht möglich. Somit müsste auf die Festplatte zurückgegriffen werden, was jedoch diesen Algorithmus extrem verlangsamt.

Wären alle Zahlen 1 , … , n {\displaystyle 1,\dots ,n} {\displaystyle 1,\dots ,n} im Datenstrom enthalten, so wäre die Summe der Elemente des Stromes gemäß der Gaußschen Summenformel

∑ i = 1 n i = n ( n + 1 ) 2 {\displaystyle \sum _{i=1}^{n}i={\frac {n(n+1)}{2}}} {\displaystyle \sum _{i=1}^{n}i={\frac {n(n+1)}{2}}}.

Bildet man daher die Summe der im Strom enthaltenen n − 1 {\displaystyle n-1} {\displaystyle n-1} Elemente in π {\displaystyle \pi } {\displaystyle \pi }, so kann man nach Lesen der gesamten Eingabe die gesuchte Zahl s {\displaystyle s} {\displaystyle s} mit

s = n ( n + 1 ) 2 − ∑ π {\displaystyle s={\frac {n(n+1)}{2}}-\sum {\pi }} {\displaystyle s={\frac {n(n+1)}{2}}-\sum {\pi }}

bestimmen. Dieser Algorithmus muss zur Berechnung der Summe und zur anschließenden Bestimmung von s {\displaystyle s} {\displaystyle s} nur eine Zahl speichern und der Speicherplatz beträgt damit nur O ( log ⁡ ( n ) ) {\displaystyle {\mathcal {O}}(\log(n))} {\displaystyle {\mathcal {O}}(\log(n))}. Er ist damit ganz offensichtlich effizienter.

Siehe auch

[Bearbeiten | Quelltext bearbeiten]
  • Platzkomplexität

Weblinks

[Bearbeiten | Quelltext bearbeiten]
  • "Data Streams: Algorithms and Applications" von S. Muthukrishnan (Postscript)
Abgerufen von „https://de.teknopedia.teknokrat.ac.id/w/index.php?title=Datenstromalgorithmus&oldid=224610142“
Kategorie:
  • Algorithmus

  • indonesia
  • Polski
  • العربية
  • Deutsch
  • English
  • Español
  • Français
  • Italiano
  • مصرى
  • Nederlands
  • 日本語
  • Português
  • Sinugboanong Binisaya
  • Svenska
  • Українська
  • Tiếng Việt
  • Winaray
  • 中文
  • Русский
Sunting pranala
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022
Email: pmb@teknokrat.ac.id