A memorização
A memorização (ou memoisation) é uma técnica de programação de computador para otimizar um programa de computador. Os programas de computador chamam funções. Cada função calcula um resultado que retornará. A memorização é simples: antes que o valor seja retornado da chamada de função, ele é armazenado em uma tabela (ou matriz associativa). Como um cache, esta matriz só será capaz de armazenar um número limitado de resultados f. A função pode então ser alterada para que ela tente procurar o valor da entrada em sua tabela de pesquisa. Esta pesquisa é muito menos dispendiosa do que fazer o cálculo novamente. Também como um cache: a tabela de dados será limpa periodicamente, por exemplo, os valores que não foram pesquisados por um determinado tempo são removidos.
Embora relacionada ao caching, a memorização refere-se a um caso específico desta otimização, distinguindo-o de formas de caching como o buffering ou a substituição de páginas. No contexto de algumas linguagens de programação lógica, a memorização também é conhecida como tabling; veja também a tabela de pesquisa.
Perguntas e Respostas
P: O que é memoização?
R: Memoização é uma técnica de programação de computadores que otimiza os programas armazenando os resultados das chamadas de função em uma tabela ou matriz associativa.
P: Como a memoização funciona?
R: Antes de um valor ser retornado de uma chamada de função, ele é armazenado em uma tabela de pesquisa. Posteriormente, a função procurará o valor da entrada na tabela de pesquisa em vez de recalculá-lo, o que é muito menos dispendioso.
P: Quais são os benefícios da memoização?
R: A memoização pode melhorar o desempenho do programa ao reduzir o número de cálculos necessários. É também uma técnica de otimização simples que pode ser aplicada a muitos programas.
P: Como funciona a tabela de pesquisa?
R: A tabela de pesquisa armazena os valores retornados pelas chamadas de função. Como um cache, ela tem um limite de quantos resultados pode armazenar e é limpa periodicamente, removendo os valores que não são acessados há algum tempo.
P: O que distingue a memoização de outras formas de cache?
R: A memoização é um caso específico de armazenamento em cache que se refere ao armazenamento dos resultados das chamadas de função. Ela é diferente de outras formas de armazenamento em cache, como buffering ou substituição de página.
P: A memorização é usada em linguagens de programação lógica?
R: Sim, a memoização também é conhecida como tabulação em algumas linguagens de programação lógica.
P: Qual é a relação entre memoização e uma tabela de pesquisa?
R: A memoização envolve o uso de uma tabela de pesquisa para armazenar os resultados das chamadas de função. A função pode procurar valores na tabela em vez de recalculá-los.