Nell'Introduzione agli algoritmi di Cormen et al. , La sezione 15.3 Elementi di programmazione dinamica spiega la memoizzazione come segue:
Un algoritmo ricorsivo memorizzato mantiene una voce in una tabella per la soluzione di ciascun sottoproblema. Ogni voce della tabella contiene inizialmente un valore speciale per indicare che la voce deve ancora essere compilata. Quando il sottoproblema viene rilevato per la prima volta mentre si sviluppa l'algoritmo ricorsivo, la sua soluzione viene calcolata e quindi memorizzata nella tabella. Ogni volta che incontriamo questo sottoproblema, cerchiamo semplicemente il valore memorizzato nella tabella e lo restituiamo.
E aggiunge, come nota a piè di pagina:
Questo approccio presuppone che conosciamo l'insieme di tutti i possibili parametri dei sottoproblemi e che abbiamo stabilito la relazione tra posizioni della tabella e sottoproblemi. Un altro approccio, più generale, è quello di memoize usando l'hash con i parametri del sottoproblema come chiavi.
Esistono problemi DP noti che richiedono (o semplificano) la memorizzazione di valori memorizzati in un dizionario anziché in un array (multidimensionale)?
Sfondo: se questo è di qualche utilità, la ragione di questa domanda è che sto cercando di motivare l'idea di alberi di ricerca binari (auto-bilanciati) a persone che hanno appena visto la programmazione dinamica.