-- | -- Module : Dinamica -- Description : El patrón de programación dinámica. -- License : Creative Commons -- Maintainer : José A. Alonso -- -- = El patrón de programación dinámica -- -- Este módulo contiene la definición del patrón de programación dinámica -- estudiado en el <http://bit.ly/1LIxi0u tema 15> del curso. -- -- Además, en el tema se incluye como de casos de aplicación del patrón -- -- * <http://bit.ly/1LIxkWi la sucesión de Fibonacci>, -- * <http://bit.ly/1LIxlth el producto de cadenas de matrices>, -- * <http://bit.ly/1IsuUn1 los árboles binarios de búsqueda optimales>, -- * <http://bit.ly/1IsuYDe los caminos mínimos entre todos los pares de -- nodos de un grafo> y -- * < http://bit.ly/1Isv0 el problema del viajante>. module I1M.Dinamica (module I1M.Tabla, dinamica) where import I1M.Tabla import Data.Array -- | (dinamica f r) wa la tabla de cálculo dinámica de la función f en -- el rango r. dinamica :: Ix i => (Tabla i v -> i -> v) -> (i,i) -> Tabla i v dinamica :: (Tabla i v -> i -> v) -> (i, i) -> Tabla i v dinamica Tabla i v -> i -> v calcula (i, i) cotas = Tabla i v t where t :: Tabla i v t = [(i, v)] -> Tabla i v forall i v. Eq i => [(i, v)] -> Tabla i v tabla [(i i,Tabla i v -> i -> v calcula Tabla i v t i i) | i i <- (i, i) -> [i] forall a. Ix a => (a, a) -> [a] range (i, i) cotas]