В разделе 15.3 « Элементы динамического программирования» Кормена и др. « Введение в алгоритмы» объясняется запоминание следующим образом:
Записанный рекурсивный алгоритм поддерживает запись в таблице для решения каждой подзадачи. Каждая запись таблицы изначально содержит специальное значение, указывающее, что запись еще не заполнена. Когда подзадача впервые встречается при развертывании рекурсивного алгоритма, ее решение вычисляется и затем сохраняется в таблице. Каждый раз, когда мы сталкиваемся с этой подзадачей, мы просто ищем значение, хранящееся в таблице, и возвращаем его.
И добавляет, как сноску:
Этот подход предполагает, что нам известен набор всех возможных параметров подзадачи и что мы установили связь между позициями таблицы и подзадачами. Другой, более общий подход заключается в том, чтобы запоминать, используя хеширование с параметрами подзадачи в качестве ключей.
Существуют ли какие-либо известные проблемы DP, которые требуют (или упрощают) сохранение запомненных значений в словаре, а не в (многомерном) массиве?
Предыстория: если это имеет какое-либо применение, причина этого вопроса в том, что я пытаюсь мотивировать понятие (самоуравновешенных) деревьев двоичного поиска людям, которые только что видели динамическое программирование.