Over a million developers have joined DZone.

The Algorithms of Memory

DZone 's Guide to

The Algorithms of Memory

· ·
Free Resource

Originally posted by Eric Burnett, a software engineer at Google on thelowlyprogrammer.com

The human brain has the best storage system on the block in a lot of ways. It’s notably lossy and doesn’t have the easiest API to work with, but in terms of flexibility it’s second to none. Computer scientists have been trying to model and mimic its features for a lot of years, but we haven’t got it cracked quite yet. Part of the challenge lies in the sheer variety of access styles that human memory allows. I don’t think we even have them all cataloged yet, much less working together in one system.

I’ve been trying over the last couple days to list all the different patterns I can see myself using. I’ve also tried to pull out systems I know of that do the same for comparison, although I can’t find direct equivalents in all cases. Those without an existing equivalent are probably the most interesting - would mimicking these patterns be useful in the future?

Name Mind example System example Characterized by
Cache hit Facts immediately available for use with no delay In-memory data storage Synchronous; low latency
Long term storage Facts that take a while to look up. “Um...his name... was.... Let's move on - it'll come to me in a minute.” Lookups from disk or tape Asynchronous (notify on delivery); high latency
Reminders Remembering to go buy groceries on your way home from work Calendar notifications Time or event based; defined in advance
Information requests All the associations that come up when you think of a topic. “New Orleans” brings to mind... Web search Web of relationships; can be explored further in any direction
Background processing Coming up with answers/solutions while you sleep or otherwise aren’t explicitly working on the problem Uploading a video to YouTube - when you check again all the different formats and qualities will be available Processing item while in storage; queued work requests; separated from foreground tasks
Guided randomness Brainstorming, free association games, mad libs, improv ? Random item output or random exploration of web; subject to limited constraints
Unsolicited triggered reminders Being reminded of facts/stories/events by things you see or hear ? [1]
Unsolicited notifications; loosely related to recent input
Unsolicited untriggered reminders Memories that come to mind with no discernible trigger, e.g. past regrets ? Unsolicited notifications; no relation to recent input; may be randomly derived
State affecting Memories that change your mood or attitude. E.g. remembering a birthday makes you happy; remembering specific near miss makes you cautious. ? [2] State changes triggered by the contents of the information retrieved
(suggested by e-socrates on Reddit)
"We constantly predict from memory what to expect, then compare that to experience" ? Continuous short-term predictions; characterizing events as unexpected or surprising


  • [1] Google Now is trying for this to some extent. Online advertising partially fits, however it is not bubbling up details you already know - rather, it’s feeding you new data.
  • [2] There are some trigger-based examples of this in security, e.g. logging of accesses to documents, but they don’t really change the state of the system itself (they trigger work in others instead).

Published at DZone with permission of

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}