Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Programacion Dinamica
Programacion Dinamica
Programacion Dinamica
Programacin Dinmica
Introduccin......................................................................................................................4
Programacin dinmica...................................................................................................5
Ejemplos de funciones recursivas ....................................................................................6
Ejemplo 1.1:...................................................................................................................6
Ejemplo 1.2:...................................................................................................................6
Conclusin ......................................................................................................................33
Bibliografa.....................................................................................................................33
Resumen
Se presentan algunos resultados de la teora matemtica de Programacin
Dinmica y se exponen ejemplos que muestran la gran versatilidad de la
tcnica. Tambin se muestra un esquema de demostracin del Principio
de Optimalidad.
Abstract
Some results of the Mathematical theory of Dynamic Programming are
presented and some of the consequences of these results are exposed
through examples that demonstrate the great versatility this technique
owns; There is here also included a demonstration scheme of the
Optimal Principle.
Introduccin
Programacin dinmica
es un procedimiento
matemtico diseado principalmente para mejorar la eficiencia de
clculo de problemas de programacin matemtica seleccionados,
descomponindolos en subproblemas
de menor tamao y por
consiguiente mas fciles de calcular. La PD normalmente resuelve el
problema en etapas. Los clculos en las diferentes etapas se enlazan a
travs de clculos recursivos de manera que se genere una solucin
ptima factible a todo el problema.
Para ayudar a aclarar algunos conceptos presentes en la definicin
anterior y en el trabajo posterior se dan las siguientes definiciones:
Definicin 1.2 (Mnimo): sea {a k }k =1, 2,3,..., n una sucesin finita, se dice
que am es el mnimo de {a k }k =1 , 2 ,3 ,..., n si a m a k para k = 1,2,3,..., n .
Tomado de [Tah95]
Ejemplo 1.2:
La sucesin de Fibonacci se define segn la frmula recursiva:
s0 = 1
s1 = 1
sn = s n 1 + s n 2 para n = 2,3,4,
B
6
3
2
4
F
3
4
3
3
1
I
G
5
Figura 1.1
de f n ( s, x n1 ) . Entonces
f n* ( s) =
mn
x
f n (s , xn 1 ) = f n ( s, x *n 1 ) (1)
en donde
f n ( s, x n 1 ) = costo inmediato (etapa n) + costo mnimo etapas 1,2, . . ., n1
en otras palabras
f n ( s, x n 1 ) = C
sx n 1
+ f n ( s, x *n 1 ) (2)
f 1* ( s) x *0
B
2
A
C
4
A
D
3
A
Tabla 1.1
f 2 ( E , B ) = cEB1 + f 1* ( B ) = 7+2 = 9
esta ecuacin tiene el siguiente significado: el costo mnimo para llegar a
E desde A pasando por B es igual al costo de ir de B a E ( c EB ) este dato
aparece en la figura 1.1- ms el costo mnimo del viaje de A hasta B
( f 1* ( B) ) -este dato se toma de la tabla 1.1, en general se tomar de la
tabla anterior -. De esta forma se calculan todas las entradas de la tabla
1.2.
La tabla 1.2 nos permite ver ya un resultado interesante: en este momento
hemos resuelto el problema si el destino de la diligencia fuera alguna de
las ciudades E, F o G. Por ejemplo, el costo mnimo para ir de A a E es de
7 ( f 2* ( E ) ) y se consigue llegando a E desde C o D ( x1* ), si por ejemplo se
llega por D la tabla 1.1 nos informa que a D debe llegarse en la ruta
ptima desde A, aunque este ltimo resultado es trivial la atencin se
centra en la lgica que sigue la construccin y lect ura de las tablas.
x1
s
E
F
G
f 2 ( s, x1 ) = c sx1 + f1* ( x1 )
B
C
D
9
6
8
7
6
8
7
4
8
Tabla 1.2
10
f 2* ( s)
7
4
8
x1*
CoD
D
BoCoD
x2
s
f 3 ( s, x2 ) = csx2 + f 2* ( x2 )
E
F
G
H
I
8
11
10
11
7
11
Tabla 1.3
f 3* ( s)
8
7
x *2
E
F
x2
s
J
f 4 ( s, x3 ) = csx3 + f 3* ( x3 )
H
I
11
11
Tabla 1.4
x3*
f 4* ( s)
11
HoI
Nota: este mismo ejemplo se encuentra resuelto en la pgina 533 de [Hil02] siguiendo
un procedimiento conocido como de retroceso, el cual consiste en atacar el problema de
adelante hacia atrs. Sin embargo, se ha considerado que el procedimiento de avance,
seguido aqu, es mas intuitivo. Ms adelante se discutirn las ventajas de cada uno.
11
Teorema de optimalidad
El ejemplo 1.3 tambin permite ambientar la discusin de la base
fundamental de la PD que es el llamado Teorema (o principio) de
optimalidad, cuyo enunciado es el siguiente: Una poltica ptima solo
puede estar formada por subpolticas ptimas. En esencia lo que significa
es que las diferentes restricciones de la solucin al problema total
(poltica ptima) a cada uno de los subproblemas (subpoltica) es
tambin solucin ptima de dicho subproblema. Acudiendo al ejemplo, se
tiene que la ruta A C E H J es una poltica ptima y que
C E H es una subpoltica de A C E H J. Lo que afirma el
teorema es que, en estas condiciones, C E H es a su vez subpoltica
ptima, o sea, que es solucin ptima del subproblema que surge al
considerar como punto inicial C y como destino H. La justificacin es
intuitiva: supngase que la afirmacin es falsa, existir entonces un nodo
X tal que C X H es mejor que C E H, pero de ello surge una
contradiccin, pues en ese caso se tendra que A C X H J sera
mejor que A C E H J con lo cual esta ltima no sera poltica
ptima.
Con esto se tiene una motivacin, no a una demostracin, sino a un
esquema de demostracin del principio de optimalidad. Consiste en una
generalizacin de lo discutido en el prrafo anterior: sea x1 , x2 , . . . ,xk, . . .
,xk+r, . . . ., xn una sucesin de soluciones ptimas a los subproblemas en
los cuales se ha dividido uno mayor o, en otras palabras, una solucin
ptima del problema general. Supngase adems que xk , . . . ,xk+r no
constituyen una solucin optima al subproblema restringido que las posee
como variables de decisin, entonces deben existir x k , . . . ,xk+r tales que
constituyen una solucin ptima del mencionado subproblema, con lo
cual se tendra que x1 , x2, . . . ,x k , . . . ,xk+r, . . . ., xn sera una solucin
mejor que x1 , x2 , . . . ,xk , . . . ,xk+r, . . . ., xn y esto contradice el hecho de
que esta ltima sea una solucin ptima. Este esquema debe ser adaptado
para que constituya una demostracin de cada caso particular al cual se
est aplicando la PD. Esto ltimo no debe verse como una dificultad
gratuita, sino como un paso adelante en el empeo por adquirir el
dominio total de las caractersticas del modelo matemtico particular que
se pretende aplicar.
12
f n ( s, x n1 ) = C
sx n1
+ f n ( s, x *n 1 ) (3)
13
Propuesta
1
2
3
4
Planta 1
C1 R1
0
0
1
5
2
6
Tabla
Planta 2 Planta 3
C2 R2 C3 R3
0
0
0
0
2
8
1
3
3
9
4 12 1.5
14
f 1 ( x1 ) =
mx { R1 ( P1 ) } (4)
propuestas
factiblesP1
x1
0
1
2
3
4
5
P1 = 1
0
0
0
0
0
0
R1 ( P1 )
P1 = 2 P1 = 3
*
*
5
*
5
6
5
6
5
6
5
6
Tabla 1.6
f 1 ( x1 )
0
5
6
6
6
6
P1*
1
2
3
3
3
3
La tabla 1.5 informa cual es la poltica ptima que debe seguirse para
cada uno de los posibles valores de x1. Puede parecer redundante en su
construccin pues para cada estado la propuesta ms alta que puede
cubrirse es la que genera el mayor ingreso, sin embargo, como ocurre en
la realidad, no siempre la mayor inversin genera el ms alto beneficio.
Ahora se define la parte faltante de la ecuacin recursiva y que
corresponde a las etapas 2, 3, . . .
15
f n ( xn ) = mx { Rn ( Pn ) + f n1 ( xn1 ) } (5)
propuestas
factiblesPn
f n ( xn ) = mx { Rn ( Pn ) + f n1 ( x n Cn ( Pn )) } n = 2,3, . . . (7)
propuestas
factiblesPn
x2
0
1
2
3
4
5
R2 ( P2 ) + f1 ( x 2 C2 ( P2 ))
P2 = 1
P2 = 2
P2 = 3
P2 = 4
0+0=0
*
*
*
0+5=5
*
*
*
0+6=6 8+0=8
*
*
0+6=6 8+5=13 9+0=9
*
0+6=6 8+6=14 9+5=14 12+0=12
0+6=6 8+6=14 9+6=15 12+5=17
Tabla 1.7
f 2 (x 2 )
0
5
8
13
14
17
P2*
1
1
2
2
2o3
4
16
P3 = 1
P3 = 2
0 + 17 = 17 3 + 14 = 17
Tabla 1.8
f 3 (x 3 )
P3*
17
1o2
17
maximizar p =
i =1
sujeto a
i =1
f i ( y i ) = mx{ x i * f i1 ( yi xi )} (9)
xi y1
entonces se tiene
f 2 ( y 2 ) = mx{ x2 * ( y2 x 2 )} (10)
x2 y2
f 2 ( y2 ) = mx{ x2 y2 x 22 )} (11)
x2 y2
18
h( x2 ) = x 2 y2 x 22 (12)
entonces
x1* = y 2 / 2 (15)
que es la conocida solucin para el caso n = 2. De donde
f 2 ( y2 ) = y22 / 4 (16)
Para i = 3 se debe calcular f 3 ( y3 ) = mx{ x3 * f 2 ( y 3 x3 )} lo cual,
x3 y3
f 3 ( y3 ) = mx{ x3 * ( y3 x3 ) 2 / 4} (17)
x3 y3
o
f 3 ( y3 ) = mx{( y32 x3 2 y 3 x32 + x 33 ) / 4} (18)
x3 y3
19
Los clculos realizados con i = 1, 2 y 3 insinan que para cada etapa i los
resultados siguen el siguiente patrn:
xi* = yi / i (26)
f i ( yi ) = ( y i / i ) i (27)
Se recurrir a la induccin matemtica para demostrar este hecho. Para i =
1 ya se tiene el resultado. Supngase que se cumple para i y calclese
para i + 1.
f i +1 ( yi +1 ) = mx {x i +1 * f i ( yi +1 xi +1 )} (28)
xi +1 y+1 1
definiendo
20
factorizando
i +1
yi +1 i +1
y i +1
y i +1
i
+
1
f i +1 ( yi +1 ) =
*
=
(35)
i + 1
i +1
i
x *n = y n / n = q / n (36)
y n 1 = y n xn = y n y n / n =
( n 1)
( n 1)
yn =
q (37)
n
n
n 1
q ( n 2)
q =
q (38)
n
n
n
21
x *n2 = q / n (39)
esto permite calcular
y n 3 = y n 2 x *n 2 =
n2
q n 3
q =
q (40)
n
n
n
22
sujeto a
a m1 x1 + a m 2 x 2 + ... + amp x p bm
x1 , x 2 ,..., x p 0
j = 2, 3, . . . ,p (42)
donde 0 vij bi para todas i y j.
Ejemplo 1.6: (Problema de Programacin Lineal)
Resolver
maximizar z = 20 x1 + 16x 2
23
sujeto a
5x1 + 3 x2 105
2 x1 + 4x 2 70
x1, x2 0
Solucin del problema
A partir de (41) se tiene
f 1 (v11 , v21 ) = mx {20 x1 }
0 5 x1 v11
0 2 x1 v21
v v
Como 5 x1 v11 y 2 x1 v21 se concluye que x1 mn 11 , 21 pero
5 2
v v
como se trata de maximizar se tiene x1 = mn 11 , 21 y por lo tanto
5 2
v11 v21
, (43)
5 2
f1 ( v11 , v12 ) = 20 mn
v 3 x2 v 22 4x 2
,
f 2 (v12 , v22 ) = mx 16x2 + 20mn 21
(44)
0 3 x2 v1 2
5
2
0 4 x2 v2 2
pero se tiene v12 = 105 y v 22 = 70 , entonces, 3x 2 105 y 4 x2 70 lo
cual equivale a x 2 35 / 2 . Se tiene
105 3 x2 70 4 x 2
,
f 2 ( v12 , v 22 ) = mx 16x 2 + 20mn
(45)
0 x2 35 / 2
5
2
105 3x 2 70 4 x2
Para 0= x 2 35 / 2 es necesario resolver
que tiene
5
2
como solucin x2 10 . Con lo cual se tiene
24
105 3 x2
0 x 2 10
5
f 2 (v12 , v22 ) = mx16x 2 + 20
70 4 x2 10 x 35 / 2
2
2
o de forma equivalente
420 + 4x 2 0 x2 10
f 2 ( v12 , v 22 ) = mx
700 24 x2 10 x 2 35 / 2
(46)
(47)
v 21 = v 22 4 x 2 = 70 40 = 30
v v
pero como x1 = mn 11 , 21 entonces x1 = 15 .
5 2
Una leve variacin a procedimiento anterior permite resolver problemas
de Programacin Lineal entera, esto se ilustra en el siguiente ejemplo.
z = 8 x1 + 7 x2
25
sujeto a
2 x1 + x2 8
5x1 + 2x 2 15
x1, x2 enteros no negativos
Solucin del problema
f 1 (v11 , v21 ) = mx {8 x1} x1 entero
0 2 x1 v11
0 5 x1 v21
v v
Como 2 x1 v11 y 5x1 v21 se concluye que x1 mn 11 , 21 adems
2 5
tratndose de un problema de maximizacin con valores enteros se tiene
v v
x1 = mn 11 , 21 (donde x representa la parte entera de x) y por lo
2 5
tanto
v v
f 1 ( v11 , v12 ) = 8 mn 11 , 21 (48)
2 5
8 x2 15 2 x2
,
f 2 (v12 , v22 ) = mx 7 x2 + 8mn
(49)
0 x2 8
5
2
0 2 x2 15
las desigualdades x 2 8 y 2 x 2 15 equivalen a x2 7 , entonces para
8 x2 15 2 x2
este rango resolvemos la desigualdad
15 2 x2
f 2 (v12 , v22 ) = mx 7 x2 + 8
(50)
0 x2 7
5
26
x2
15 2 x2
7 x 2 + 8
0
1
2
3
4
5
6
7
24
23
30
29
36
43
42
49
Tabla 1.8
se ve que el mximo se consigue con x 2 =7 y que tiene un valor de 49.
Como
8 x2 15 2x 2
1 1
,
x1 = mn
entonces x1 = mn , = 0 .
5
2
2 5
x1 3 x2 9
x1 , x2 0
27
28
0 x2 1/ 5
1/ 5 x2 5
(57)
99
146
y x2
= 4.42
34
33
con lo cual, en los intervalos que nos ocupan se tiene que h(x) es creciente
en [0,1/5] y g(x) tiene un mnimo dentro de [1/5,5] por lo tanto h(x) tiene
mximo en 1/5 y lo tiene en alguno de los extremos de [1/5,5], se calcula n
entonces:
h (1/5) = 702.92
g(1/5) = 702.92
g(5) = 125
de lo cual se concluye que x *2 = 1 / 5 = 0.2 y f 2 ( v12 , v 22 ) = 702.92 y como
x1* = mn {10 2x 2 ,9 + 3x 2 }
entonces
29
Grfica 1.
La parte sombreada corresponde a la regin factible. Tambin se ha
graficado la funcin objetivo con diferentes valores para z. Es evidente
que al aumentar z el grfico de la funcin objetivo crece alejndose del
centro y que su ltimo punto de contacto con la regin factible coincide
con la interseccin de las rectas que corresponden a las restricciones del
problema, en consecuencia el punto solucin se halla resolviendo el
sistema de ecuaciones que determinan las rectas:
10 x1 x1 9
=
2
3
x1 = 9.6
de donde
x 2 = 0.2
que coincide con la solucin encontrada empleando P.D. La sencillez de
este mtodo parece contradecir la definicin de P.D. dada al comienzo,
ms adelante se harn algunas conclusiones al respecto de esta
observacin.
30
Grfica 2.
31
Se tiene
z1 = 2x 0 = 2k
z j = 2 x j 1 j = 1,2,..., n
f j ( z j ) = mx j { p j y j + f j +1 ( 2[ z j y j ]} , j = 1,2, . . . ,n-1
yj z j2 k
f 1 ( x1 ) = mx { p1 y1}
y1 =2 k x1
f j (x j ) =
mx
j
{ p j y j + f j 1 (
y j2 kxj
( x j + y j ) / 2 entero
xj + yj
2
} , j = 2, 3,. . . ,n
Nota: el ejemplo de las ovejas tiene ms un propsito pedaggico que uno prctico,
pues se trata de un caso en el cual la solucin se encuentra determinando el mejor
momento para vender las ovejas y venderlas todas en ese instante, para ello se determina
el mayor
venta de todas las ovejas en un instante dado, pero la ganancia ser la misma. Por lo
tanto atacar este problema con el enfoque de P.D. resultara sumamente imprctico.
32
Conclusin
Las tcnicas de P.D. nos han permitido resolver, entre otros, problemas de
Programacin Lineal, de Programacin Lineal Entera, de Programacin
No Lineal etc. Esto no quiere decir que la P.D. constituya una panacea
para la solucin de los problemas de todos estos campos, por dos razones:
en primer lugar, porque las tcnicas de P.D. son aplicables nicamente a
un conjunto reducido de problemas en cada campo. Y en segundo lugar
porque, aunque la tcnica sea aplicable, al resolver problemas grandes (de
Programacin Lineal por ejemplo) el nmero de evaluaciones de todas las
alternativas crece de forma exagerada (este problema se conoce como la
plaga de la dimensionalidad ) lo cual hace que este enfoque sea
imprctico. Sin embargo, el propsito buscado al resolver este tipo de
problemas no ha sido proponer una alternativa a los mtodos estndar de
solucin de tales campos (como el mtodo smplex en el caso de la
Programacin Lineal) sino sencillamente poner en evidencia la
versatilidad propia de la P.D.
Por otra parte, cuando enfrenta problemas propios de su campo la P.D.
aporta una marco de procedimiento que ayuda a disminuir enormemente
el exceso de trabajo ocasionado por la redundancia en los clculos a la
vez que estimula la creatividad al dejar espacios en blanco que deben ser
llenados al resolver cada caso en particular.
Debe emplearse la P.D. cuando la forma del problema permita dividirlo
en subproblemas que tengan la misma estructura del problema original.
Tambin es importante tener en cuenta que el tamao de los clculos
tenga proporciones razonables.
33
Bibliografa
34