¿Qué algoritmos útiles existen que funcionan en grandes flujos de datos y también sus resultados son bastante pequeños y uno puede calcular el resultado para una mezcla de dos flujos fusionando de alguna manera sus resultados?
Puedo nombrar algunos:
- Las cosas obvias como sum, min, max, count, top-K, etc.
- Aproximadamente los llamados algoritmos de flujo "basados en bocetos" para histogramas, contando elementos distintos o cuantiles informáticos
¿Qué otros hay?
(Estoy interesado porque estoy escribiendo un proyecto de pasatiempo para monitorear sistemas distribuidos cuya utilidad está directamente determinada por la utilidad de tales algoritmos)
Respuestas:
Guha y col. '03 da un algoritmo de aproximación para la agrupación de k-mediana en el modelo de transmisión. Su algoritmo divide los datos en piezas disjuntas, encuentra centros O (k) para cada pieza disjunta y luego combina los resultados para obtener los k centros. Este parece ser el tipo de algoritmo que estás buscando.
fuente
fuente
Encontré un documento ( "Distribución de cálculos de flujo de datos dependientes de la frecuencia" ) que dice que cada función de la distribución de frecuencia del flujo es fusionable (aunque no proporciona una construcción explícita y eficiente para la operación de fusión). Y la prueba parece ser muy interesante, involucrando algo de teoría del anillo. Es necesario leer el documento anterior del mismo autor ( "Límites inferiores en la estimación de frecuencia de flujos de datos" ) cuyo resultado principal se utiliza como base para este.
Esto me recuerda el Tercer Teorema del Homomorfismo ...
fuente
La investigación sobre lenguajes de consulta de flujo continuo podría proporcionar alguna información. Uno de esos lenguajes es CQL , que creo que Oracle está adoptando. Los idiomas permiten que las funciones se calculen sobre ventanas deslizantes de la secuencia (incluidas las ventanas de tamaño 1). Esta tesis de licenciatura proporciona una visión general reciente del lenguaje, incluidos algunos ejemplos. Este documento ofrece una visión general de algunos lenguajes de procesamiento de flujo, que deberían ser útiles para encontrar enlaces a otras investigaciones relacionadas.
Sé que esto no responde a su pregunta directamente, pero debería ponerlo en contacto con la investigación realizada por personas que parten del mismo punto de partida.
fuente
Esta pregunta me parece un poco circular. Si el problema tiene la propiedad que desea, entonces hay un algoritmo basado en boceto y fusión para ello. Como se mencionó anteriormente, hay trabajo en agrupación, aproximaciones y conjuntos de núcleos que le proporcionan eso. Además, la mayoría de los algoritmos de transmisión permiten fusionar secuencias simplemente concatenando (conceptualmente) una secuencia a la otra.
Además, no estoy seguro de que los algoritmos de transmisión de top-k sean fusionables, pero podría estar equivocado.
fuente
Perdón por estar necromando en esto, pero pensé que querrías ver algún trabajo sobre monitoreo continuo distribuido en flujos, donde se te dan varios flujos y el objetivo es monitorear algunas estadísticas agregadas en un sitio de monitoreo central mientras minimizas la comunicación. El modelo me parece muy relacionado con tu motivación. Mira las referencias en el libro de Muthu . Un artículo es este .
El artículo de Ganguly también es muy interesante.
fuente