Inicio › Tecnología › Memorización
En programación, la memorización (memoization) es una técnica de optimización qué consiste en guardar el resultado de una función junto con los argumentos con los qué se calculó, para devolver ese resultado directamente si la función se vuelve a llamar con los mismos argumentos, sin repetir el cálculo. Se apoya en una estructura auxiliar, normalmente un diccionario o mapa, y es especialmente útil en funciones puras sin efectos secundarios, donde el mismo input siempre produce el mismo output. Es la base de muchos algoritmos de programación dinámica.
Es como apuntar el resultado de una cuenta larga en un papel para no tener qué volver a hacerla si te la vuelven a preguntar. La próxima vez qué necesitas el mismo resultado, lo lees directamente en vez de calcularlo otra vez.
El ejemplo clásico es calcular la secuencia de Fibonacci de forma recursiva: sin memorización el número de llamadas crece exponencialmente, pero guardando cada resultado intermedio el cálculo se vuelve lineal. En Python, el decorador @functools.lru_cache aplica esta técnica automáticamente a cualquier función con argumentos hashables.
Es un caso particular de caché aplicado a resultados de funciones dentro de un programa, mientras qué 'caché' es un término más amplio qué también cubre páginas web, consultas a bases de datos o bloques de disco.
Cuando la función tiene efectos secundarios, cuando los argumentos son muy variados y ocupan demasiada memoria guardando resultados qué casi nunca se repiten, o cuando el cálculo original ya es más barato qué buscar en la caché.
Python la incluye vía functools.lru_cache o cache; otros lenguajes funcionales como Haskell la facilitan de forma nativa, y en JavaScript suele implementarse a mano con un objeto Map o librerías específicas.