Skip to main content

Reference and Selective Reading

You do not need to read the source books front-to-back for this module. Use the concept pages and practice pages first. Open these local chunks only when you need alternate exposition, more worked examples, or deeper exercise volume.

Source Roles

SourceRoleWhy it is here
Introduction to Algorithms (CLRS)Primary rigorous sourceCleanest derivations of optimal substructure, memoization vs tabulation, rod cutting, matrix chain, LCS, optimal BST, and the elements of the greedy strategy
The Algorithm Design Manual (Skiena)Primary applied sourceBest working prose on Fibonacci caching, edit distance, LIS, partition/subset sum, triangulation, and the limits of DP (TSP)
Competitive Programming (Halim)Problem variety and advanced DPRichest source for bitmask DP, digit DP, tree DP, DAG DP, and state-compression techniques
Algorithms (Sedgewick)Supporting proseAlternate DP framing when CLRS/Skiena is opaque
Grokking Algorithms (Bhargava)Friendly re-entryUse only as a gentle first pass on grid DP and basic DP intuition

Read Only If Stuck

Cluster 1: DP Foundations

Cluster 2: Linear and Sequence DP

Cluster 3: Grid, Interval, and Tree DP

Cluster 4: Bitmask and Digit DP

Cluster 5: Greedy vs DP and Optimization Tradeoffs

Optional Deep Dive

Concept-to-Source Map

Primary conceptBest source if stuckWhy this source
Optimal substructure: when a problem admits DPCLRS: 14.3 Elements of Dynamic Programming (Part 1)Most rigorous statement of the cut-and-paste argument
Overlapping subproblems: why naive recursion wastes workCLRS: 14.3 Elements of Dynamic Programming (Part 2)Best explanation of subproblem DAG and recomputation
Memoization vs tabulation trade-offsCLRS: 14.3 Elements of Dynamic Programming (Part 3)Direct comparison of the two implementations
Reconstructing the solution from a DP tableCLRS: 14.1 Rod cutting (Part 3)Parent-array reconstruction in full
Longest increasing subsequenceSkiena: 8.3 Longest Increasing SequenceBoth O(n^2) and O(n log n) algorithms with operational detail
Edit distance and sequence alignmentSkiena: 8.2.2 Edit Distance by Dynamic ProgrammingClearest exposition of the 2D recurrence and reconstruction
Knapsack variants and state designSkiena: 13.10 Knapsack ProblemPrimary source for 0/1 DP and pseudo-polynomial analysis
Interval DP: matrix chain, optimal BST, balloon burstCLRS: 14.2 Matrix Chain Multiplication (Part 1)Canonical interval DP with fill-order discussion
Tree DP: independent set, diameter, rerootingCompetitive Programming: 9.22 Max Weighted Independent SetClean post-order recurrence on a tree
Bitmask DP: TSP and subset-enumerationSkiena: 8.7 Limitations of DP (TSP)Motivates Held-Karp and bounds its applicability
Proving greedy correctness / recognizing greedy failsCLRS: 15.1 Activity Selection (Part 1)Best first exchange-argument proof
DP on DAGs and graph-based DPCompetitive Programming: 9.24 Min Path Cover on DAGConcrete DAG-DP example
Choosing the right paradigm for optimization problemsSkiena: 10 How to Design AlgorithmsBest prose on paradigm selection across problem types