Mire el algoritmo Q-Digest: q-digest: un algoritmo para calcular cuantiles aproximados en una colección de enteros. Le permite estimar cuantiles arbitrarios (la mediana sería el percentil 50).
Tenga en cuenta que este es un algoritmo con pérdida, diseñado para manejar grandes flujos de datos que no se ajustan a la memoria disponible.
Otra propiedad interesante de este algoritmo es que se pueden fusionar dos instancias. Esto permite el cálculo distribuido de los cuantiles. Un caso de uso imaginario es un trabajo Map-Reduce:
- Cómo crear un algoritmo
- Cómo resolver un problema de programación difícil por mi cuenta
- ¿En qué situaciones alguien usaría Dijkstra sin un montón sobre Dijkstra con un montón?
- Cómo resolver SPOJ.com - Problema GERGOVIA en SPOJ
- ¿Cuál es el algoritmo utilizado por la búsqueda de imagen inversa de Google (es decir, la búsqueda por imagen)? ¿Qué algoritmos necesitaría entender para crear una funcionalidad similar a pequeña escala?
- Varias máquinas calculan una estructura de datos de resumen q independientemente uno del otro
- estas estructuras de datos se envían a un agregador para que puedan fusionarse en una sola instancia de q-digest
- esta instancia agregada representa todo el conjunto de datos y se puede consultar por percentiles
Hay material más interesante y relevante como p-square (El algoritmo de P-Square para el cálculo dinámico de percentiles e histogramas sin almacenar observaciones / Guía del usuario – 1.55.0) o el documento de Munro-Paterson (Selección y clasificación con almacenamiento limitado)