Преди да започна, не, това не е въпрос, питащ каква е разликата между мемоизацията и динамичното програмиране, нито кое е по-добро, а просто прост въпрос, питащ за малка разлика между начина, по който те обработват кеширани търсения.
DP използва подход отдолу нагоре, докато мемоизацията използва подход отгоре надолу. Така че с DP започвате, като изграждате таблица с кеширани изчисления и след това подавате тези кеширани стойности към по-големи изчисления, за да избегнете излишни рекурсивни или итеративни извиквания на функции. Мемоизацията е повече или по-малко просто кеширане на резултата от всяко извикване на функция в хеш или масив (вероятно масив) и след това предоставяне на резултата в рамките на извикването на функция (просто пропуска всичко, което се случва в тялото на функцията).
Въпросът ми е дали съм прав с това, което казвам тук? И двата подхода изглеждат подобни, само че DP е по-труден и малко по-ефективен с паметта в сравнение с мемоизацията. С мемоизацията вашата програма все още трябва да задейства всяко извикване на функция, дори ако е кеширано и всяко едно от тези извиквания на функция може бързо да захрани стека, докато в DP ще провери таблицата с масиви във функцията и ще извика само рекурсивния /итеративна функция, ако не е намерена.
Прав ли съм тук? Или пропускам нещо?