Ich habe eine große Sequenz von Tupeln auf der Platte in Form (t1, k1) (T2, K2) ... (tn, kn)Entdecken periodische Muster in einem großen Datensatz
ti ist ein monoton ansteigender Zeitstempel und ki ist ein Schlüssel (bei Bedarf eine Zeichenfolge fester Länge annehmen). Weder ti oder ki sind garantiert einzigartig. Die Anzahl der einzigartigen tis und kis ist jedoch riesig (Millionen). n selbst ist sehr groß (100 Millionen +) und die Größe von k (ca. 500 Byte) macht es unmöglich, alles im Speicher zu speichern.
Ich möchte periodische Vorkommen von Schlüsseln in dieser Reihenfolge herausfinden.
Zum Beispiel, wenn I die Sequenz (1, a) (2, b) (3, c) (4, b) (5, a) (6, b) (7, d) (8, b) (9, a) (10, b)
Der Algorithmus sollte emittieren (a, 4) und (b, 2). Das ist ein tritt mit einer Periode von 2 auf.
Wenn ich einen Hash aller Schlüssel aufstelle und den Durchschnitt der Differenz zwischen aufeinander folgenden Zeitstempeln jedes Schlüssels und einer Standardabweichung desselben speichern Ich könnte vielleicht einen Durchlauf machen und nur diejenigen melden, die eine akzeptable Standardabweichung haben (im Idealfall 0). Es erfordert jedoch einen Bucket pro eindeutigen Schlüssel, während in der Praxis sehr wenige wirklich periodische Muster vorliegen. Irgendwelche besseren Möglichkeiten?
Wenn ti's monoton ansteigend sind, werden sie nicht einzigartig sein? – mtrw
Monotone Zunehmende Funktionen nehmen nicht ab. In diesem Fall würde das bedeuten t (i) <= t (i + 1). – andand