fbpx
Wikipedia

Memoización

En Informática, el término memoización (del inglés memoization) es una técnica de optimización que se usa principalmente para acelerar los tiempos de cálculo, almacenando los resultados de la llamada a una subrutina en una memoria intermedia o búfer y devolviendo esos mismos valores cuando se llame de nuevo a la subrutina o función con los mismos parámetros de entrada.

La memoización también se puede usar en otras situaciones, y con propósitos diferentes del de reducir tiempos de computación, como por ejemplo en la recusión mutua de un analizador sintáctico o parser descendente.[1]

Aunque está fuertemente vinculada con el concepto de caché, la memoización se refiere a un uso específico de esta, distinguiéndose de otros casos de uso como un búfer o un algoritmo de reemplazo de páginas. En el contexto de algunos lenguajes de programación lógica, como por ejemplo Prolog, la técnica de memoización suele ser denominada tabulación. [2]

Etimología

El término "memoization" fue utilizado por primera vez por Donald Michie en 1968[3]​ y deriva del latín memorandum ("que debe ser recordado"), ya que se describe como "convertir [el resultado de] una función en algo a ser recordado" .

Aunque "memoización" puede ser confundida con "memorización" (Porque ambas proviene de la misma fuente), el término memoización tiene un uso exclusivo y específico en el desarrollo informático.

Visión general

Una función memoizada "recuerda" los resultados correspondientes a un determinado conjunto de valores de entrada. Posteriores llamadas que usen los mismos valores obtendrán el resultado previamente almacenado, en vez de realizar todo el cálculo de nuevo. De esta forma se evitan todos los cálculos, excepto el realizado en la primera llamada. El conjunto de asociaciones de valores de entrada con resultados puede ser de tamaño fijo y controlado por un algoritmo de reemplazo, dependiendo de la naturaleza de la función y de su uso.

Una función solo puede ser memoizada si cumple la condición de transparencia referencial, es decir, que el resultado de realizar la llamada a la función produce el mismo efecto que reemplazar la llamada a la función por el valor devuelto. En otras palabras, que no se produzcan dentro de la función efectos colaterales.

Referencias

  1. Norvig, Peter (1991). «Techniques for Automatic Memoization with Applications to Context-Free Parsing». Computational Linguistics 17 (1): 91-98. 
  2. Warren, David. «Tabling and Datalog Programming». Consultado el 29 de mayo de 2009. 
  3. Michie, Donald (1968). «'Memo' Functions and Machine Learning». Nature 218 (5136): 19-22. Bibcode:1968Natur.218...19M. doi:10.1038/218019a0. 
  •   Datos: Q1376168

memoización, debe, confundirse, memorización, informática, término, memoización, inglés, memoization, técnica, optimización, principalmente, para, acelerar, tiempos, cálculo, almacenando, resultados, llamada, subrutina, memoria, intermedia, búfer, devolviendo,. No debe confundirse con Memorizacion En Informatica el termino memoizacion del ingles memoization es una tecnica de optimizacion que se usa principalmente para acelerar los tiempos de calculo almacenando los resultados de la llamada a una subrutina en una memoria intermedia o bufer y devolviendo esos mismos valores cuando se llame de nuevo a la subrutina o funcion con los mismos parametros de entrada La memoizacion tambien se puede usar en otras situaciones y con propositos diferentes del de reducir tiempos de computacion como por ejemplo en la recusion mutua de un analizador sintactico o parser descendente 1 Aunque esta fuertemente vinculada con el concepto de cache la memoizacion se refiere a un uso especifico de esta distinguiendose de otros casos de uso como un bufer o un algoritmo de reemplazo de paginas En el contexto de algunos lenguajes de programacion logica como por ejemplo Prolog la tecnica de memoizacion suele ser denominada tabulacion 2 Etimologia EditarEl termino memoization fue utilizado por primera vez por Donald Michie en 1968 3 y deriva del latin memorandum que debe ser recordado ya que se describe como convertir el resultado de una funcion en algo a ser recordado Aunque memoizacion puede ser confundida con memorizacion Porque ambas proviene de la misma fuente el termino memoizacion tiene un uso exclusivo y especifico en el desarrollo informatico Vision general EditarUna funcion memoizada recuerda los resultados correspondientes a un determinado conjunto de valores de entrada Posteriores llamadas que usen los mismos valores obtendran el resultado previamente almacenado en vez de realizar todo el calculo de nuevo De esta forma se evitan todos los calculos excepto el realizado en la primera llamada El conjunto de asociaciones de valores de entrada con resultados puede ser de tamano fijo y controlado por un algoritmo de reemplazo dependiendo de la naturaleza de la funcion y de su uso Una funcion solo puede ser memoizada si cumple la condicion de transparencia referencial es decir que el resultado de realizar la llamada a la funcion produce el mismo efecto que reemplazar la llamada a la funcion por el valor devuelto En otras palabras que no se produzcan dentro de la funcion efectos colaterales Referencias Editar Norvig Peter 1991 Techniques for Automatic Memoization with Applications to Context Free Parsing Computational Linguistics 17 1 91 98 Warren David Tabling and Datalog Programming Consultado el 29 de mayo de 2009 Michie Donald 1968 Memo Functions and Machine Learning Nature 218 5136 19 22 Bibcode 1968Natur 218 19M doi 10 1038 218019a0 Datos Q1376168 Obtenido de https es wikipedia org w index php title Memoizacion amp oldid 142437845, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos