What is Memoization?
'''Memoization''' (or '''memoisation''') is a technique from computer programming to [[Optimization (computer science)|optimize]] a computer program. Computer programs call functions. Each function calculates a result it will return. Memoization is simple: before the value is returned from the function call, it is stored in a table (or associative array). Like a [[cache]], this array will only be able to store a limited number of results. The function can then be changed so it tries to look up the value of the input in its [[lookup table]]. This lookup is much less expensive than doing the calculation again. Also like a cache: the data table will be cleaned periodically, for examples the values that have not been lookued up for a given time are removed. Although related to [[Cache|caching]], memoization refers to a specific case of this optimization, distinguishing it from forms of caching such as [[:en:Buffer_(computer_science)|buffering]] or [[Page replacement algorithm|page replacement]]. In the context of some [[logic programming]] languages, memoization is also known as [[:en:Prolog#Tabling|tabling]]; see also [[lookup table]]. [[Category:Computer science]]