Professional Documents
Culture Documents
Introduccin
Existe una serie de problemas cuyas soluciones pueden ser expresadas recursivamente en trminos matemticos, y posiblemente la manera ms natural de resolverlos es mediante un algoritmo recursivo. Sin embargo, el tiempo de ejecucin de la solucin recursiva, normalmente de orden exponencial y por tanto impracticable, puede mejorarse substancialmente mediante la Programacin Dinmica.
Donde tiene mayor aplicacin la Programacin Dinmica es en la resolucin de problemas de optimizacin. En este tipo de problemas se pueden presentar distintas soluciones, cada una con un valor, y lo que se desea es encontrar la solucin de valor ptimo (mximo o mnimo).
La solucin de problemas mediante esta tcnica se basa en el llamado principio de ptimo enunciado por Bellman en 1957 y que dice:
Para que un problema pueda ser abordado por esta tcnica ha de cumplir dos condiciones: La solucin al problema ha de ser alcanzada a travs de una secuencia de decisiones, una en cada etapa. Dicha secuencia de decisiones ha de cumplir el principio de ptimo. En grandes lneas, el diseo de un algoritmo de Programacin Dinmica consta de los siguientes pasos: 1. Planteamiento de la solucin como una sucesin de decisiones y verificacin de que sta cumple el principio de ptimo. 2. Definicin recursiva de la solucin. 3. Clculo del valor de la solucin ptima mediante una tabla en donde se almacenan soluciones a problemas parciales para reutilizar los clculos. 4. Construccin de la solucin ptima. haciendo uso de la informacin contenida en la tabla anterior
El algoritmo recursivo que los calcula resulta ser de complejidad exponencial por la repeticin de los clculos que realiza. No obstante, es posible disear un algoritmo con un tiempo de ejecucin
Nuestro problema consiste en disear un algoritmo eficiente que determine el coste mnimo para cada par de puntos i,j (i < j) y determinar, en funcin de n, el tiempo empleado por el algoritmo.
El problema puede resolverse mediante Programacin Dinmica ya que para calcular el coste ptimo para ir del embarcadero i al j podemos hacerlo de forma recurrente, suponiendo que la primera parada la
La idea de esta segunda expresin surge al observar que en cualquiera de los trayectos
Para resolverla segn la tcnica de Programacin Dinmica, hace falta utilizar una estructura para almacenar resultados intermedios y evitar la repeticin de los clculos. La estructura que usaremos
Dicho procedimiento utiliza la siguiente funcin, que permite calcular la expresin del mnimo que aparece en la ecuacin en recurrencia:
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,