Depende de lo que esté tratando de optimizar, y si quiere decir ‘poder averiguar el promedio hasta AHORA’ o si desea poder averiguar retrospectivamente cuál era el promedio en un momento dado.
Suponiendo que solo desea almacenar el “promedio móvil”, desea que sea correcto, pero desea minimizar el espacio de almacenamiento, vale la pena hacer lo siguiente:
- Almacene el promedio hasta ahora y la cantidad de artículos hasta ahora
- Cuando llega el siguiente elemento, incrementa el número de elementos hasta el momento y ajusta el promedio en (la diferencia entre el nuevo término y el promedio anterior) / (número de términos hasta el momento).
La desventaja, por supuesto, es que efectivamente está desechando el historial, por lo que lo ÚNICO que puede hacer con la transmisión es calcular el promedio actual.
- Quiero escribir un código que reproduzca 10 segundos de audio, luego pause durante 15 segundos y luego reproduzca los siguientes 10 segundos, etc. ¿Cómo lo haría?
- Un profesor me dijo que no me molestara en aprender muchos lenguajes de programación sino que me enfocara solo en C ++, estructuras de datos y algoritmos, ¿tiene razón?
- Cómo resolver la línea de problemas SPOJ usando DP con máscaras de bits
- ¿Usar un tipo de inserción de 50 elementos tendrá el mismo tiempo de ejecución que usar un tipo de inserción de 10 elementos 5 veces?
- Cómo elegir un elemento único de una lista dentro de un bucle en R
Si desea poder llegar rápidamente a cualquier promedio pasado, y el espacio de datos es ‘efectivamente ilimitado’, use el mismo algoritmo, pero almacene un triplete de índice-valor-promedio móvil hasta ese punto … entonces puede obtener rápidamente un promedio pasado por búsqueda … sin necesidad de recuperar potencialmente miles de millones de valores pasados y sumarlos en ese punto.
Si los valores son gruesos y rápidos, el espacio de almacenamiento es ‘libre’ y solo desea hacer el promedio de vez en cuando, solo almacene el flujo de valor y calcule en el punto de necesidad. (Gracias a Daniel McLaury por señalar que valdría la pena almacenar en memoria caché los cálculos, en ese momento es posible que desee almacenar en caché un índice, el número de valores para señalar y el promedio de ejecución, para que pueda usarlo en el cálculo de promedios futuros. )