Memoization caches results from smaller recursive subproblems so repeated calls can reuse them instead of recomputing duplicate work. In recursive graph algorithms, this can prevent explosive expansion and memory failure, although it may still leave too many possible subgraphs to make the algorithm practical. section 15.2.4
Use memoization when recursive computation revisits the same states:
- Choose a representation for each subproblem that can serve as a cache key. section 15.2.4
- Check the cache before recursing; return the stored result when the state has already been examined. section 15.2.4
- Trade computation time for memory: caching avoids repeated work but does not necessarily reduce the total number of possible states enough for large inputs. section 15.2.4







