Articulo Programacion Dinamica
Articulo Programacion Dinamica
Articulo Programacion Dinamica
Resumen
Con este estudio se pretende mostrar de una manera clara el concepto y desarrollo de la programacin
dinmica que es un procedimiento diseado bsicamente, para mejorar la eficiencia de clculo de la solucin
de ciertos problemas matemticos, a travs de su segundo miembro en problema de menor tamao y, por
consiguiente, ms manejable. Sin embargo debemos destacar que el principio de optimizar ofrece una
estructura bien definidas para resolver el problema en etapas.
El principio de optimizar se considera algunas veces demasiado poderoso para ser de utilidad en la prctica;
pero aunque un problema se puede dividir adecuadamente en partes menores quizs an no se pueda obtener
una respuesta numrica, debido a la complejidad del proceso de optimizacin en cada etapa.
No obstante, debemos sealar que a pesar de esta desventaja, la solucin de muchos problemas se ha
facilitado apreciablemente a travs del uso de la programacin dinmica.
I.
INTRODUCCION
CARACTERISTICAS DE LA
PROGRAMACION DINAMICA
II.
PRINCIPIO DE OPTIMALIDAD DE
BELLMAN
END
END FibRec;
El problema ocurre en que el algoritmo resultante es poco
eficiente, ya que su tiempo de ejecucin es de orden
exponencial. La falta de eficiencia de este algoritmo se
debe a que se producen llamadas recursivas repetidas para
calcular valores de la sucesin, que habindose calculado
previamente, no se conserva el resultado y por tanto es
necesario volver a calcular cada vez.
Para este problema es posible disear un algoritmo que en
tiempo lineal lo resuelva mediante la construccin de una
tabla que permite ir almacenando los clculos realizados
hasta el momento para poder reutilizarlos:
Fib(0) Fib(1) Fib(2) ... Fib(n)
El algoritmo iterativo que calcula la sucesin de
Fibonacci utilizando tal tabla es:
TYPE
TABLA = ARRAY [0..n] OF CARDINAL
PROCEDURE
T:TABLA;n:CARDINAL):CARDINAL;
VAR i:CARDINAL;
BEGIN
IF n<=1 THEN RETURN 1
ELSE
T[0]:=1;
T[1]:=1:
FOR i:=2 TO n DO
T[i]:=T[i-1]+T[i-2]
END;
RETURN T[n]
END
END FibIter;
V.
FibIter(VAR
C:MATRIZ;
BEGIN
min:=MAX(CARDINAL);
FOR k:=i+1 TO j DO
min:=Min2(min,T[i,k] + C[k,j])
END;
RETURN min
END Min;
La funcin Min2 es la que calcula el mnimo de dos
nmeros naturales. Es importante observar que esta
funcin, por la forma en que se va rellenando la
matriz C, slo hace uso de los elementos calculados
hasta el momento.
La complejidad del algoritmo es de orden O(n3),
pues est compuesto por dos bucles anidados de
tamao n, que contienen la llamada a una funcin de
orden O(n), la que calcula el mnimo.
VI.
CONCLUSIONES