tengo una gran secuencia de tuplas en el disco en forma (t1, k1) (t2, k2) ... (tn, kn)descubrir patrones periódicos en un gran conjunto de datos
ti es una marca de tiempo creciente monótonamente y ki es una clave (suponga una cadena de longitud fija si es necesario). Ni ti ni ki tienen la garantía de ser únicos. Sin embargo, la cantidad de tis y kis únicos es enorme (millones). n en sí es muy grande (100 millones +) y el tamaño de k (aproximadamente 500 bytes) hace que sea imposible almacenar todo en la memoria.
Me gustaría encontrar apariciones periódicas de claves en esta secuencia.
Por ejemplo, si tengo la secuencia (1, a) (2, b) (3, c) (4, b) (5, a) (6, b) (7, d) (8, b) (9, a) (10, b)
El algoritmo debe emitir (a, 4) y (b, 2). Esto ocurre con un período de 4 yb ocurre con un período de 2.
Si construyo un hash de todas las claves y almaceno el promedio de la diferencia entre marcas de tiempo consecutivas de cada tecla y una desviación estándar del mismo , Podría hacer un pase e informar solo aquellos que tienen una desviación estándar aceptable (idealmente, 0). Sin embargo, requiere un cubo por clave única, mientras que en la práctica, podría tener muy pocos patrones realmente periódicos. ¿Alguna mejor manera?
Si ti's son monótonamente crecientes, ¿no van a ser únicos? – mtrw
Las funciones de incremento monótono no disminuyen. En este caso, eso significaría t (i) <= t (i + 1). – andand