Page 93 - INTRODUCCIÓN AL ANÁLISIS DE ALGORITMOS
P. 93

INTRODUCCIÓN AL ANÁLISIS  DE ALGORITMOS


                                Programación dinámica (dynamic programming)




            INtroduccIóN



            Con la estrategia del avaro o codicioso se intenta buscar en forma local el siguiente punto para me-
            jorar la función (maximizar la ganancia o minimizar el costo). La técnica de la programación dinámica
            busca un óptimo global; su estrategia es localizar todos los subóptimos de un grafo dado.




            prINcIpIo de optIMalIdad de BellMaN



            Cuando hablamos de optimizar nos referimos a buscar la mejor solución (pueden ser varias) de entre
            muchas alternativas posibles. Este proceso de optimización puede ser visto como una secuencia
            de decisiones que nos proporcionan la solución correcta. Si dada una subsecuencia de decisiones
            siempre se conoce cuál es la decisión que debe tomarse a continuación para obtener la secuencia
            óptima, el problema es elemental y se resuelve trivialmente tomando una decisión detrás de otra, lo
            que se conoce como estrategia voraz. En otros casos, aunque no sea posible aplicar la estrategia
            voraz, puede cumplirse el principio de optimalidad de Bellman enunciado en 1957, el cual señal que
            “dada una secuencia óptima de decisiones, toda subsecuencia de ella es, a su vez, óptima”.

            En este caso, sigue siendo posible ir tomando decisiones elementales, pues se confía que la combi-
            nación de ellas seguirá siendo óptima, aunque será necesario explorar muchas secuencias de deci-
            siones para dar con la correcta, punto en el cual interviene la programación dinámica. Aunque este
            principio parece evidente, no siempre es aplicable y, por tanto, es necesario verificar que se cumpla
            para el problema en cuestión.

            Contemplar un problema como una secuencia de decisiones equivale a dividirlo en problemas más
            pequeños y, en consecuencia, más fáciles de resolver como hacemos en divide y vencerás, técnica
            similar a la de programación dinámica, la cual se aplica cuando la subdivisión de un problema con-
            duce a lo siguiente:



                        •  Una enorme cantidad de problemas.

                        •  Problemas cuyas soluciones parciales se solapan.

                        •  Grupos de problemas de muy distinta complejidad.

                        Para que un problema pueda ser abordado por esta técnica debe cumplir dos
                        condiciones:





                                                          87
   88   89   90   91   92   93   94   95   96   97   98