Både DP och girig behöver optimal substruktur. Skillnaden: girig kräver också den giriga-val-egenskapen (ett lokalt optimum är globalt optimalt), medan DP behövs när du måste överväga flera val och överlappande delproblem.
Distinktionen
Optimal substructure? -- both need this
+ greedy-choice property holds? -> GREEDY (fast, one pass of choices)
+ must compare many sub-solutions / they overlap? -> DYNAMIC PROGRAMMING
