Text: memoization

activate https

Structure for function memoizing, i.e. for f:X->Y, it should store (x,y) tuples.

Of course, there will be a limit of how many items to be stored. Let this limit be N. There are several ways to decide which items should be stored for how long. The best way probably would be to just store the most recent N items. So, if we add another item and we already have stored N items, we must know which was the latest item and remove that. If we request an item which is already in the memory, we should push that to the top of the recently requested items. So we need also to store a list / linear order of the items.

We want:

We can get that by a combination of a linked list with a hash map. Some simple Python implementation might look like:


When you want to have memoization globally for your application, you may want to have different limits for each function and you even may want to dynamically modify these limits in relation to how often a function is used.

One solution might be to use a global limit, a global hashmap with (f,x)->y entries and a global linked list. I'm not sure how well this would work in practice. A single recursive function could easily reset the whole database.

If you want to support my work, please donate via Gittip/Flattr here:


The text published here is under the copyright of Albert Zeyer. Distribution is only allowed with a reference to this page.


Links
- Other documents
- Mainsite


Author:

Albert Zeyer (Mail)


You are the 909341th webrobot, which looks closely at this site.

Quote of the day

"Suck harder!" yelped the saucy stewardess as the vile judge violated her mammoth paps and augured his prodigious earthmover into her hymeneal inner ear.

Uptime

07:34:41 up 41 days, 11:28, 0 users, load average: 0.03, 0.09, 0.07

About this homepage

The code can be seen here. Please contact me if you find any problems. :)