www.wikidata.de-de.nina.az
In der Informatik ist ein Datenstromalgorithmus ein Algorithmus der die Daten eines oder mehrerer Datenstrome sequenziell liest und dabei direkt online verarbeitet Inhaltsverzeichnis 1 Anwendung 2 Mathematische Sichtweise und Effizienzanforderungen 3 Beispiele 3 1 Anzahl der Elemente 3 2 Fehlende Zahl 4 Siehe auch 5 WeblinksAnwendung BearbeitenViele heutige Anwendungen in der Informatik machen auf Grund der extrem grossen 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 Borsentickern der Fall Mathematische Sichtweise und Effizienzanforderungen BearbeitenMan modelliert die kontinuierlich anfallenden Daten als Strom eine Folge von Eingabezeichen deren Lange haufig unbekannt ist aber als sehr gross angenommen wird Ein den Strom verarbeitender Algorithmus darf nur Zeichen fur 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 Speicherplatzkomplexitat des Datenstromalgorithmus soll sublinear idealerweise logarithmisch oder polylogarithmisch sein ebenso wie die Rechenzeit pro Eingabezeichen Gewisse Probleme lassen sich also mit Datenstromalgorithmen exakt losen da die gesamte Eingabe gelesen werden darf Trotzdem sind sublinearer Speicherplatz und sublineare Rechenzeit pro Eingabezeichen Effizienzanforderungen die haufig dazu fuhren dass dies eben nicht moglich ist und nur approximative Losungen gegeben werden konnen 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 losen kann Beispiele BearbeitenAnzahl der Elemente Bearbeiten Die Anzahl der Elemente in einem Datenstrom kann einfach mit einem Zahler ermittelt werden Mit randomisierten Algorithmen lasst sich der Speicherbedarf dabei weiter verringern Fehlende Zahl Bearbeiten Sei p displaystyle pi nbsp eine Permutation der Zahlenmenge 1 n displaystyle 1 dots n nbsp mit einem fehlenden Element s displaystyle s nbsp Eine einfache Methode zur Bestimmung der fehlenden Zahl ware alle Zahlen zu sammeln zu sortieren und diese geordnete Menge dann der Reihe nach auf das fehlende Element zu durchsuchen Dazu mussten aber wie beschrieben alle Zahlen gespeichert werden Der Speicherverbrauch dieses Algorithmus betragt dann n 4 displaystyle n cdot 4 nbsp Bytes wenn angenommen wird dass jede Zahl als 32 Bit Integer gespeichert wird So musste man bspw fur n 1 000 000 000 displaystyle n 1 000 000 000 nbsp ca 3 7 GB speichern Um eine angemessene Performanz zu erreichen mussten dabei diese Daten im Arbeitsspeicher abgelegt werden doch dies ist aufgrund des grossen Datenvolumens bei den meisten PCs nicht moglich Somit musste auf die Festplatte zuruckgegriffen werden was jedoch diesen Algorithmus extrem verlangsamt Waren alle Zahlen 1 n displaystyle 1 dots n nbsp im Datenstrom enthalten so ware die Summe der Elemente des Stromes gemass der Gaussschen Summenformel i 1 n i n n 1 2 displaystyle sum i 1 n i frac n n 1 2 nbsp Bildet man daher die Summe der im Strom enthaltenen n 1 displaystyle n 1 nbsp Elemente in p displaystyle pi nbsp so kann man nach Lesen der gesamten Eingabe die gesuchte Zahl s displaystyle s nbsp mit s n n 1 2 p displaystyle s frac n n 1 2 sum pi nbsp bestimmen Dieser Algorithmus muss zur Berechnung der Summe und zur anschliessenden Bestimmung von s displaystyle s nbsp nur eine Zahl speichern und der Speicherplatz betragt damit nur O log n displaystyle mathcal O log n nbsp Er ist damit ganz offensichtlich effizienter Siehe auch BearbeitenPlatzkomplexitatWeblinks Bearbeiten Data Streams Algorithms and Applications von S Muthukrishnan Postscript Abgerufen von https de wikipedia org w index php title Datenstromalgorithmus amp oldid 224610142