Home

Memoização

Memoização é uma técnica de otimização utilizada em ciência da computação para evitar recomputações de resultados já obtidos. Consiste em armazenar o resultado de uma função para cada conjunto de argumentos de entrada e, quando a função é chamada novamente com os mesmos parâmetros, retornar o valor previamente computado em vez de recalculá-lo.

É particularmente comum em algoritmos recursivos e visa reduzir a complexidade de tempo, às custas de maior

Implementação típica: manter um mapa (dicionário) que mapeia as entradas para os resultados. Em funções puras,

Vantagens e limitações: ganho de desempenho quando há sobreposição de chamadas; desvantagens incluem consumo de memória,

Exemplos de uso: cálculo de sequências como Fibonacci, algoritmos de contagem com subproblemas repetidos, ou operações

uso
de
memória.
Em
muitos
casos,
é
associada
à
programação
dinâmica:
a
memoização
evita
recomputar
subproblemas
já
resolvidos,
permitindo
resolver
o
problema
de
forma
top-down
ou
bottom-up.
sem
efeitos
colaterais,
a
memoização
é
segura;
em
funções
com
efeitos,
cuidado
com
consistência
de
estado
e
com
mudanças
de
entrada.
necessidade
de
políticas
de
expurgo
(tamanho
máximo
do
cache)
e
complexidade
de
concorrência.
Em
ambientes
paralelos,
pode
exigir
sincronização
para
evitar
condições
de
corrida.
de
alto
custo
computacional.
Várias
linguagens
oferecem
suportes
nativos:
Python
com
recursos
de
memoização,
JavaScript
com
funções
memoizadas,
entre
outros.
A
prática
depende
da
puridade
da
função,
do
tamanho
do
espaço
de
entrada
e
dos
requisitos
de
memória
do
sistema.