09.05.2013 Views

Algoritmos y Programación en Pascal

Algoritmos y Programación en Pascal

Algoritmos y Programación en Pascal

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

20.3. <strong>Programación</strong> dinámica 455<br />

ti<strong>en</strong>e un coste proporcional a b − a, al igual que su versión deg<strong>en</strong>erada, donde<br />

uno de los subproblemas es el trivial:<br />

b<br />

<br />

i =<br />

i=a<br />

1 si b < a<br />

a ∗ b i=a+1 i e. o. c.<br />

si<strong>en</strong>do por tanto preferible su versión iterativa conocida.<br />

20.3 <strong>Programación</strong> dinámica<br />

20.3.1 Problemas de programación dinámica<br />

Consideremos un problema <strong>en</strong> el que se desea obt<strong>en</strong>er el valor óptimo de<br />

una función, y para ello se ha de completar una secu<strong>en</strong>cia de etapas e1, . . . , <strong>en</strong>.<br />

Supongamos que <strong>en</strong> la etapa ei se puede escoger <strong>en</strong>tre las opciones o1, . . . , ok,<br />

cada una de las cuales divide el problema <strong>en</strong> dos subproblemas más s<strong>en</strong>cillos e<br />

indep<strong>en</strong>di<strong>en</strong>tes:<br />

e1, . . . , ei−1 y ei+1, . . . , <strong>en</strong><br />

Entonces, bastaría con resolver los k pares de subproblemas (uno por cada opción<br />

para ei) y escoger el par que ofrece el mejor resultado (para la función por<br />

optimizar).<br />

Supongamos que la solución óptima se obti<strong>en</strong>e si ei = o:<br />

e1, . . . , ei−1, ei = o, ei+1, . . . , <strong>en</strong><br />

Entonces, sus mitades anterior y posterior<br />

e1, . . . , ei−1, o<br />

o, ei+1, . . . , <strong>en</strong><br />

deb<strong>en</strong> ser las soluciones óptimas a los subproblemas parciales planteados al fijar<br />

la etapa i-ésima. Esta condición se conoce como el principio de optimalidad de<br />

Bellman. Por ejemplo, si para ir desde el punto A hasta el punto C por el camino<br />

más corto se pasa por el punto B, el camino mínimo desde A hasta C consiste<br />

<strong>en</strong> la concat<strong>en</strong>ación del camino mínimo desde A hasta B y el camino mínimo<br />

desde B hasta C.<br />

Por tanto, la resolución de estos problemas consiste <strong>en</strong> definir una secu<strong>en</strong>cia<br />

de etapas. Por otra parte, al fijar una etapa cualquiera se divide el problema<br />

<strong>en</strong> dos problemas más s<strong>en</strong>cillos (como <strong>en</strong> los algoritmos divide y v<strong>en</strong>cerás), que<br />

deb<strong>en</strong> ser indep<strong>en</strong>di<strong>en</strong>tes <strong>en</strong>tre sí. El principal inconv<strong>en</strong>i<strong>en</strong>te es que la elección<br />

de una etapa requiere <strong>en</strong> principio tantear varios pares de subproblemas, con lo<br />

que se dispara el coste de la resolución de estos problemas.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!