线性规划和动态规划
At first, “programming” has nothing to do with writing code.
It simply means filling up a table, like in making a TV/radio schedule. A deliberately missing term is “mathematical model” in the very end of it (RAND Corporation and US Government had issues with that).
Replace “programming” with “resource management” to get a precise meaning.
Replace the fad word “dynamic” with a choice from three precise words, “temporal”, “sequential”, or “serial” (meaning unfolding in time, as a sequence).
The world “linear” comes from abstract vector spaces which are linear. It’s the same word as in “linear algebra”. A more meaningful words for “linear” are “structure-preserving”, “homomorphic”, “shape-preserving”.
Now we can finally be able to compare:
“Sequential resource management model” vs “Shape-preserving resource management model”. Sounds quite specific, isn’t it?
Although linear programming can be seen as a subset of dynamic programming, it’s more mathematically rigorous. Our decomposition of it into more precise words helps to see that.
Another insightful analogy I can offer is space v.s space PLUS time (not spacetime). Dynamic programming treats time as a necessary STEP in scheduling.
Linear programming is like general relativity. It unifies space and time into spacetime, helping to make models more concise and powerful. It’s also harder to get comparing to more ad-hoc dynamic programming methods.