Algoritmos de flujo de datos "dividir y conquistar"


12

¿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)


Me resulta mucho más difícil pensar en un algoritmo de transmisión que no sea "divide y vencerás" / asociativo. Tal vez algún tipo de función de hash rodante ... ¿Tiene algún ejemplo natural de tal algoritmo de flujo?
Thomas Ahle

Respuestas:


9

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.


7

εεith(i1)th-secuencia de nivel, y el nivel 0 es la secuencia original). Esto es esencialmente una representación ascendente de una estrategia de divide y vencerás. con actualizaciones a lo largo del "borde" del árbol de recursión. En estructura, es muy similar al documento de Guha et al mencionado por Lev.


6

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 ...


No creo que el documento de Ganguly implique que una estrategia de divide y vencerás puede funcionar para la transmisión. Ese modelo parece reducirse al modelo Mapreduce / MUD, en el que podría haber múltiples pases sobre los datos.
Suresh Venkat

Después de leer, me parece que no usa múltiples pases después de todo.
jkff

4

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.


4

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.


Top-k se pueden combinar trivialmente: para fusionar dos listas de k elementos, se combinan y se toman k últimos elementos del resultado :) Sin embargo, tal vez se refería a "top k más frecuente", pero me refería a este (que también es un problema útil, por ejemplo, para el cálculo distribuido de algo así como un muro de Facebook)
jkff

3

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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.