У вступі Кормен та ін. До алгоритмів , розділ 15.3 Елементи динамічного програмування пояснюють запам'ятовування наступним чином:
Запам'ятований рекурсивний алгоритм підтримує запис у таблиці рішення кожної підпрограми. Кожен запис таблиці спочатку містить спеціальне значення, яке вказує на те, що запис ще потрібно заповнити. Коли вперше виникає підпроблема, коли розгортається рекурсивний алгоритм, його рішення обчислюється та зберігається в таблиці. Кожен наступний раз, коли ми стикаємося з цією підпроблемою, ми просто шукаємо значення, збережене в таблиці, і повертаємо його.
І додається, як виноска:
Цей підхід передбачає, що ми знаємо набір усіх можливих параметрів підпроблеми і що ми встановили взаємозв'язок між позиціями таблиці та підпроблемами. Інший, більш загальний підхід - це запам'ятовування, використовуючи хешування з параметрами підпрограми в якості ключів.
Чи є якісь добре відомі проблеми DP, які потребують (або полегшують) зберігання запам'ятованих значень у словнику, а не в (багатовимірному) масиві?
Передумови: якщо для цього є користь, причиною цього питання є те, що я намагаюся мотивувати поняття (самоврівноважених) дерев бінарного пошуку людям, які щойно бачили динамічне програмування.