O que é memorização?
sobes.tech IA
Resposta da IA
A memorização é uma técnica de otimização utilizada em programação para acelerar a execução de funções através do armazenamento em cache dos resultados das suas chamadas com determinados parâmetros de entrada.
Ao chamar a função posteriormente com os mesmos argumentos utilizados anteriormente, a função não recalcula o resultado, mas devolve o valor guardado na cache.
Isto é especialmente eficaz para funções que consomem muitos recursos e têm um comportamento determinista (funções que sempre devolvem o mesmo resultado para os mesmos dados de entrada).
Vantagens:
- Aceleração de funções que consomem muitos recursos.
- Redução da carga no processador ao evitar cálculos repetidos.
Desvantagens:
- Aumento do uso de memória para armazenar a cache.
- Pode não ser eficiente para funções que são chamadas frequentemente com argumentos diferentes ou que mudam de comportamento.
Exemplo em JavaScript:
function fibonacci(n) { // Definição funcional dos números de Fibonacci
if (n <= 1) {
return n;
}
return fibonacci(n - 1) + fibonacci(n - 2); // Chamada recursiva
}
// Versão memorizada da função fibonacci
function memoizedFibonacci(n, cache = {}) {
if (n in cache) { // Verifica se o resultado já está na cache
return cache[n];
}
if (n <= 1) {
return n;
}
// Calcula e guarda o resultado na cache
cache[n] = memoizedFibonacci(n - 1, cache) + memoizedFibonacci(n - 2, cache);
return cache[n];
}
// Comparação de velocidade de execução:
console.time('Sem memorização');
fibonacci(40);
console.timeEnd('Sem memorização'); // Tempo muito maior
console.time('Com memorização');
memoizedFibonacci(40);
console.timeEnd('Com memorização'); // Tempo muito menor
Neste exemplo, sem memorização, a função fibonacci recalcula os mesmos valores várias vezes. A versão memorizada memoizedFibonacci guarda os valores calculados no objeto cache, acelerando significativamente as chamadas subsequentes com os mesmos argumentos.