aka memoization
https://en.wikipedia.org/wiki/Dynamic_programming
- Overlapping subproblems -> memorization: record value 1st time it's computed, then look it up subsequently. Table lookup
- Optimal substructure: global optimal solution can be constructed from optimal solutions to sub-problems.
video
One of the main applications is to Model-based reinforcement learning (also where the name originally arised, by Bellman)