Dans l' introduction aux algorithmes de Cormen et al. , La section 15.3 Éléments de programmation dynamique explique la mémorisation comme suit:
Un algorithme récursif mémorisé conserve une entrée dans une table pour la solution de chaque sous-problème. Chaque entrée de table contient initialement une valeur spéciale pour indiquer que l'entrée doit encore être remplie. Lorsque le sous-problème est rencontré pour la première fois au fur et à mesure que l'algorithme récursif se déroule, sa solution est calculée puis stockée dans la table. Chaque fois que nous rencontrons ce sous-problème, nous recherchons simplement la valeur stockée dans la table et la renvoyons.
Et il ajoute, en note de bas de page:
Cette approche suppose que nous connaissons l'ensemble de tous les paramètres de sous-problème possibles et que nous avons établi la relation entre les positions de table et les sous-problèmes. Une autre approche, plus générale, consiste à mémoriser en utilisant le hachage avec les paramètres de sous-problème comme clés.
Existe-t-il des problèmes DP bien connus qui nécessitent (ou facilitent) le stockage des valeurs mémorisées dans un dictionnaire plutôt que dans un tableau (multidimensionnel)?
Contexte: si cela est utile, la raison de cette question est que j'essaie de motiver la notion d'arbres de recherche binaires (auto-équilibrés) pour les personnes qui viennent de voir la programmation dynamique.