A dinamikus programozás (DP) olyan problémákat old meg, amelyeknek átfedő részproblémái és optimális részstruktúrája van, azáltal hogy minden részproblémát egyszer kiszámít és az eredményt újrahasznosítja. A két stílus a memoizálás (top-down) és a tabuláció (bottom-up).
Az ötlet
Az agyatlan rekurzió exponenciálisan újraszámítja ugyanazokat a részproblémákat. A DP cacheli őket, exponenciális munkát polinomiális munkává alakítva.
