/ / Finde das letzte Element, aber N in einem Stream, ohne n Objekte zu speichern - stream

finde den letzten Gegenstand, aber N in einem Strom, ohne n Gegenstände zu speichern - stream

Angenommen, ein Datenstrom kommt an, D (0),D (1), D (2), .... Wenn D (i) kommt, möchte ich D (i - N) wissen. Der einfachste Weg besteht darin, die neuesten N-Einträge zu speichern und sie beim Eintreffen neuer Daten zu aktualisieren. Aber das Problem ist, N kann groß sein, so dass es nicht genug Speicher gibt, um sie zu speichern. Gibt es trotzdem, um dies zu erreichen, indem Sie viel weniger Gegenstände als N speichern? Eine Konstante von M << N von Räumen ist bevorzugt? Danke im Voraus.

Antworten:

1 für die Antwort № 1

Nicht so weit ich sehen kann, außer es gibt welcheRegelmäßigkeit in den Daten, die Sie ausnutzen können. Wenn die Daten vollständig zufällig sind (so dass kein Element von den anderen abgeleitet werden kann), dann kann das Element nicht gespeichert werden k macht es unmöglich, dieses Element in Iteration zu reproduzieren k + N.

Betrachten Sie stattdessen:

  • Kannst du reduzieren? N?
  • Können Sie Informationen auf einer Festplatte oder (wenn Sie in einer eingebetteten Umgebung sind) auf einer langsameren, billigeren Speicherform speichern?
  • Gibt es ein Muster in den Daten? Wenn es e.G. ein sich wiederholendes Muster, das Sie verwenden können, oder wenn es eine mathematische Beziehung zwischen den Zahlen gibt, kann vielleicht eine Formel dazu beitragen, eine Zahl von anderen zu rekonstruieren. Selbst wenn es kein wahrnehmbares Muster gibt, könnten Sie vielleicht einen Komprimierungsalgorithmus verwenden, um die Datengröße zu reduzieren?
  • Gibt es eine Beschränkung der Daten, z.B. Jede Zahl ist zwischen 0 und 255? Wenn ja, könnten Sie möglicherweise die Speicheranforderungen reduzieren.

(Was ist die Anwendung davon übrigens?)