Sunteți pe pagina 1din 2

Una subestructura ptima significa que soluciones ptimas de subproblemas pueden

ser usadas para encontrar las soluciones ptimas del problema en su conjunto. Por
ejemplo, el camino ms corto entre dos vrtices de un grafo se puede encontrar
calculando primero el camino ms corto al objetivo desde todos los vrtices
adyacentes al de partida, y despus usando estas soluciones para elegir el mejor
camino de todos ellos. En general, se pueden resolver problemas con subestructuras
ptimas siguiendo estos tres pasos: Dividir el problema en subproblemas ms
pequeos .Resolver estos problemas de manera ptima usando este proceso de tres
pasos recursivamente. Usar estas soluciones ptimas para construir una solucin
ptima al problema original. Los subproblemas se resuelven a su vez dividindolos ellos
mismos en subproblemas ms pequeos hasta que se alcance el caso fcil, donde la
solucin al problema es trivial. Decir que un problema tiene subproblemas
superpuestos es decir que un mismo subproblema es usado para resolver diferentes
problemas mayores. Por ejemplo, en la sucesin de Fibonacci, F3 = F1 + F2 y F4 = F2
+ F3 — calcular cada trmino supone calcular F2. Como ambos F3 y F4 hacen
falta para calcular F5, una mala implementacin para calcular F5 acabar calculando
F2 dos o ms veces. Esto ocurre siempre que haya subproblemas superpuestos: una
mala implementacin puede acabar desperdiciando tiempo recalculando las soluciones
ptimas a subproblemas que ya han si do resueltos anteriormente. Esto se puede
evitar guardando las soluciones que ya hemos calculado. Entonces, si necesitamos
resolver el mismo problema ms tarde, podemos obtener la solucin de la lista de
soluciones calculadas y reutilizarla. Este acercamiento al problema se llama
memorizacin (en ingls "memorizing"). Si estamos seguros de que no volveremos a
necesitar una solucin en concreto, la podemos descartar para ahorrar espacio. En
algunos casos, podemos calcular las soluciones a problemas que sabemos que vamos a
necesitar de antemano. En resumen, la programacin dinmica hace uso de:
Subproblemas superpuestos Subestructuras ptimas Memorizacin La programacin
dinmica toma normalmente uno de los dos siguientes enfoques: Top-down: El
problema se divide en subproblemas, y estos subproblemas se resuelven recordando
las soluciones en caso de que sean necesarias nuevamente. Es una combinacin de
memorizacin y recursin.Bottom-up: Todos los subproblemas que puedan ser
necesarios se resuelven de antemano y despus son usados para resolver las
soluciones a problemas mayores. Este enfoque es ligeramente mejor en consumo de
espacio y llamadas a funciones, pero a veces resulta poco intuitivo encontrar todos los
subproblemas necesarios para resolver un problema dado. Originalmente, el trmino
de programacin dinmica se refera a la resolucin de ciertos problemas y
operaciones fuera del mbito de la Ingeniera Informtica, como tambin lo haca la
programacin lineal.
Aquel contexto no tiene relacin con la programacin en absoluto; el nombre es una
coincidencia. El trmino tambin se usaba en los aos 40 por Richard Bellman, un
matemtico americano, para describir el proceso de resolver problemas donde hace
falta calcular la mejor solucin consecutivamente. Algunos lenguajes de programacin
funcionales, sobre todo Haskell, pueden usar la memorizacin automticamente sobre
funciones con un conjunto concreto de argumentos, para acelerar su proceso de
evaluacin. Esto slo es posible en funciones que no tengan efectos secundarios, algo
que ocurre en Haskell pero no tanto en otros lenguajes.

PROGRAMACION DINAMICA
En informtica, programacin dinmica es un mtodo para reducir el tiempo de ejecucin
de un algoritmo mediante la utilizacin de su problemas superpuestos y subestructuras
optimas como se describe a continuacin.
Una subestructura optima significa solucionar subproblemas para encontrar una solucin

al problema en su conjunto, es decir; se pueden resolver problemas con subestructuras


optimas siguiendo tres pasos bsicos:
1.- dividir el problema en subproblemas ms pequeos
2.- resolver estos problemas de manera ptima usando este proceso de tres pasos
recurrentemente
Usar estas soluciones ptimas para construir una solucin ptima al problema original
De la misma manera, en Administracin, la Programacin Dinmica se refiere a la
solucin de problemas que poseen varias etapas interrelacionadas donde se toman
decisiones adecuadas en cada una de esas etapas, sin perder de vista el problema en
general (Objetivo final)
Cuando se llega a la etapa de evaluar el efecto de cada una de las decisiones tomadas en
cada etapa es que se lleva a cabo la toma de decisiones para la solucin del problema
principal..
El ejemplo clsico de programacin dinmica es el siguiente:
Una persona tiene que realizar un viaje desde el norte de la republica hasta el Sureste
mexicano, el cual es demasiado largo y cansado, encontrndose con el problema de que
tiene necesidad de alimentarse, asearse y descansar.
El problema lo soluciona, verificando la distancia en kilmetros y el tiempo de recorrido
total entre el lugar de origen y su destino final. Posteriormente y tomando en
consideracin los datos anteriores, establece diversos puntos intermedios en los que
durante su recorrido pueda satisfacer sus necesidades de alimento aseo y descanso.
De esta manera, esa persona que tena un problema principal (hacer un largo viaje) lo
dividio en pequeos problemas que iria solucionando uno a la vez, sin perder de vista su
destino final, logrando con.

S-ar putea să vă placă și