Академический Документы
Профессиональный Документы
Культура Документы
Mayo 2008
Outline
Caracterizaci on
Mas ejemplos. . .
Caracterizaci on
Outline
Caracterizaci on
Mas ejemplos. . .
Caracterizaci on
Caracterizaci on
Problemas no independientes. . .
En cambio, se puede hacer algo mucho mas eciente (lineal):
F[0]=0; F[1]=1; f o r ( i n t i =2; i <=N ; i ++) F [ i ]=F [ i 1]+F [ i 2 ] ;
No requiere tanto espacio (el valor F45 es el maximo representable sobre 32 bits) Eventualmente, se puede usar solo los dos valores previos:
i n t a =0,b =1; i f (N< 1) r e t u r n a ; f o r ( i n t i =2; i <=N ; i ++) { i n t tmp=b ; b+=a ; a =tmp ; }
, J.B. Hayet Programaci on, Mayo 2008 5 / 50
Caracterizaci on
Caracterizaci on
Se aplica a problemas de optimizaci on, principalmente, cuya soluci on optima tiene estructura entremezclando versiones reducidas del mismo problema Una resoluci on por programaci on dinamica puede se divide en:
1 2 3
caracterizaci on de la estructura de la soluci on optima denici on recursiva de esta soluci on optima calculo bottom-up o top-down de la(s) soluci on(es) optima(s) (implementaci on)
Caracterizaci on
...
a1N e1
...
a2N
Linea 2
Caracterizaci on
Caracterizaci on
Por fuerza bruta: remarcamos que dado un or aculo que nos da la lista de las elecciones que hacer, el calculo del tiempo es (N ) pero hay 2N posibilidades en total de combinaciones! intractable para N grande
Caracterizaci on
Caracterizaci on
Caracterizaci on
Caracterizaci on
Linea 2
Caracterizaci on
Para determinar la soluci on en t erminos de elecciones que hacer, podemos denir lij el numero de la linea que, al llegar en oij , dio el recorrido mas r apido (o sea el arg min en cada paso recursivo) y l el indice de la linea cuya estaci on N da el tiempo total m nimo j l 1j l 2j 2 3 4 1 1 2 l = 1 2 2 2
Caracterizaci on
Soluci on recursiva: as podemos hacer un traceback de la sucesi on de elecciones optimas: l = 1 entonces terminamos con la estaci on 4 de la linea 1 l14 = 2 entonces seguimos con la estaci on 3 de la linea 2 l23 = 2 entonces seguimos con la estaci on 2 de la linea 2 l22 = 2 entonces seguimos con la estaci on 1 de la linea 2
Caracterizaci on
Caracterizaci on
Caracterizaci on
Caracterizaci on
Caracterizaci on
Caracterizaci on
La pregunta importante es cu ando usar programaci on y por qu e. Hay dos elementos dos fundamentales que encontrar en el problema: sub-estructura optima grado alto de traslape entre los sub-problemas S el segundo aspecto no esta presente, probablemente el problema se resuelva con Divide And Conquer
Caracterizaci on
Sub-estructura optima
Identicar esa sub-estructura optima sigue un patr on com un: 1 identicar las elecciones que forman el problema (ejemplo: cual linea tomar) 2 suponer que una soluci on esta dada, o sea todas las elecciones que hacer conocidas 3 despu es de una de esas elecciones, ver como expresar los sub-problemas (eso guiar a la recursi on) 4 mostrar que esos sub-problemas son a su vez optimos (por contradicci on)
Caracterizaci on
Sub-estructura optima
La dicultad principal es bien expresar los sub-problemas, en particular caracterizar el buen espacio de los sub-problemas. Hay que dejarlo lo mas simple posible pero no es siempre posible! caso de la linea de ensamblo: caminos optimos hasta llegar a la estaci on o1j o o2j (1D) caso de la multiplicaci on de matrices: era mas complicado (ver PA-I), para formar dos sub-problemas de misma naturaleza se necesitaba considerar la manera optima de calcular: Mi Mi +1 Mi +2 . . . Mj donde los Mi son matrices di di +1
Caracterizaci on
Sub-estructura optima
Recuerdo: expresi on de la combinatoria, en caso de b usqueda exhaustiva: (M1 ...Mi )(Mi +1 ...Mn ) Entonces el numero de posibilidades resultantes es: T1 = Tn =
n 1 i =1
1 Ti Tni
n
Caracterizaci on
Sub-estructura optima
1 2 3
Elecci on elemental: d onde delimitar (una posici on entre 1 y n-1) Suponemos dadas las elecciones optimas Tenemos dos sub-problemas entre 1 y i por una parte, y por i + 1 y N por otra parte. Entonces, no hay manera de considerar solo los sub-problemas de forma [1, i ], necesitamos una forma mas general [i , j ] (o sea 2D y no 1D) Dada una elecci on de delimitaci on en i k < j del sub-problema [i , j ], mostremos que los dos sub-problemas [i , k ] y [k + 1, j ] son a su vez optimos
Caracterizaci on
Sub-estructura optima
Sea pij el numero m nimo de productos entre escalares necesarios para calcular Mi . . . Mj Entonces si suponemos que sabemos cual es la mejor manera de poner par entesis en Mi . . . Mj : (Mi . . . Mk )(Mk +1 . . . Mj ) numero de productos para la matriz di dk +1 Mi . . . Mk : pik numero de productos para la matriz dk +1 dj +1 Mk +1 . . . Mj : p(k +1)j para la matriz resultado: pij = pik + p(k +1)j + di dk +1 dj +1 de la formula, sacamos la optimalidad de los dos sub-problemas [i , k ] y [k + 1, j ]
, J.B. Hayet Programaci on, Mayo 2008 27 / 50
Caracterizaci on
Sub-estructura optima
notar que para todo i : pii = 0 para calcular los elementos de una (sub-)diagonal, solo se necesitan elementos de las previas (sub-)diagonales si d = j i > 0 representa la (sub-)diagonal actual, se usa para calcular pij los elementos (i , k ) y (k + 1, j ) con i k < i + d pi (i +d ) = min pik + p(k +1)(i +d ) + di dk +1 di +d +1
i k <i +d
inicializar la diagonal d = 0, luego calcular diagonal por diagonal pi (i +1) = pii + p(i +1)(i +1) + di di +1 di +2
, J.B. Hayet Programaci on, Mayo 2008 28 / 50
Caracterizaci on
Sub-estructura optima
j
1 1 0 2 3 4 5
Complejidad c ubica. . .
, J.B. Hayet Programaci on, Mayo 2008 29 / 50
Caracterizaci on
Sub-estructura optima
j
1 1 0 2 3 4 5
Complejidad c ubica. . .
, J.B. Hayet Programaci on, Mayo 2008 29 / 50
Caracterizaci on
Sub-estructura optima
j
1 1 0 2 3 4 5
Complejidad c ubica. . .
, J.B. Hayet Programaci on, Mayo 2008 29 / 50
Caracterizaci on
Sub-estructura optima
Lo que va a variar seg un el problema (y darle una complejidad particular) es: cu antos sub-problemas son implicados dentro de la soluci on optima cu antas elecciones posibles que examinar Por ejemplo: linea de ensamblado: 1 sub-problema + 2 elecciones posibles productos: 2 sub-problemas + j i elecciones posibles
Caracterizaci on
Sub-estructura optima
Como regla pr actica, complejidad total de un problema de tipo dynamic programming: Nsubproblemas Nelecciones
ensamblado: (N ) 1 = (N ) matrices: (N 2 ) O (N ) = O (N 3 )
El costo en cada elecci on es el costo ligado a la elecci on mas el costo de los sub-problemas (eso da el total de arriba, sumando sobre todas las elecciones) Sub-estructuras optimas usadas bottom-up (fundamentalmente diferente de los glotones que hacen decisiones y luego resuelven sub-problemas)
, J.B. Hayet Programaci on, Mayo 2008 31 / 50
Caracterizaci on
Sub-estructura optima
Cuidado a los razonamientos por analog a, que pueden hacer suponer la presencia de sub-estructura optima mientras no hay caminos mas cortos en grafos dirigidos: un camino mas corto de u a v , si pasa por w , sigue entre u y w por una parte y w y v por otra parte el camino mas corto entre esos nodos: s hay sub-estructura optima (ver Floyd. . . ) caminos mas largos en grafos dirigidos: eso no funciona!
a b
Caracterizaci on
Sub-estructura optima
Cual es el problema? los sub-problemas no son independientes! Dada una solucion al problema, si lo comparto en u w v entonces si resuelvo el problema entre u y w la naturaleza del problema es fundamentalmente diferente entre w y v : no puedo reusar los nodos del la soluci on u w en cambio, no hay problema en el caso del camino mas corto porque estoy asegurado que los dos sub-caminos u w y w v no pueden compartir nodos otros que w
Caracterizaci on
Sub-estructura optima
en el caso de las matrices, los sub-problemas trabajan sobre conjuntos diferentes de matrices, no hay problema en el caso del ensamblado, solo tenemos un sub-problema que examinar, entonces no hay problema tampoco
Caracterizaci on
Traslape
la segunda gran componente de los problemas es el traslape entre los sub-problemas es generalmente ligado al hecho de que el espacio de los sub-problemas es peque no de tal manera que aparezca estos traslapes contrariamente a Divide And Conquer, la programaci on din amica aprovecha del traslape para resolver una y una sola vez cada sub-problema por el uso de la memoria (a trav es de look-up tables) ver el problema de ensamblado: cada sub-problema esta repetido 2N j veces
Caracterizaci on
Obtener la soluci on
La u ltima parte es obtener la soluci on como secuencia de elecciones que realizar, con dos posibilidades a partir de los costos optimos, reconstruir la soluci on: puede ser no demasiado costoso en unos casos. En el caso del ensamblado:
i n t k=i o p t ; s t d : : c o u t << O p e r a c i o n << N1 << en l i n e a << k << e n d l ; f o r ( i n t j=N 1; j > 0; j ) { i f ( t [ k ] [ j ]== t [ k ] [ j 1]+a [ k ] [ j 1]) { } else { k = ( k +1)%2; } s t d : : c o u t << O p e r a c i o n << j << en l i n e a << k << e n d l ; } J.B. Hayet Programaci on, Mayo 2008
, 36 / 50
Caracterizaci on
Obtener la soluci on
pero eso no es posible siempre: en el caso de matrices ser a mucho mas complejo almacenar tambi en las elecciones en cada etapa: costoso en memoria pero seguro de funcionar en todo caso (ver los dos ejemplos). Complejidad en memoria igual que la de los costos de sub-problemas
Caracterizaci on
Caracterizaci on
Caracterizaci on
Mas ejemplos. . .
Outline
Caracterizaci on
Mas ejemplos. . .
Mas ejemplos. . .
BST optimos
Considerar un BST usado por cualquiera aplicaci on de b usqueda podemos usar un sistema de arbol equilibrado para asegurar tiempo de b usqueda de O (log N ) pero hay aplicaciones en que no todas las llaves tienen la misma frecuencia (pensar por ejemplo en un diccionario de lenguas) queremos un BST construido del tal manera a tener las llaves mas frecuentemente usadas cerca de la ra z
Mas ejemplos. . .
BST optimos
v4
v2
v6
v1
v3
v5
valores de llaves vi para 1 i N , en orden creciente intervalos correspondiendo a las hojas di para 0 i N (orden creciente) para cada vi , una probabilidad pi para cada di , una probabilidad qi pi + qi = 1
Mas ejemplos. . .
BST optimos
Lo que queremos con un arbol binario de b usqueda optimo es minimizar el tiempo promedio T de las b usquedas:
N N
T =
i =1
(depth(vi ) + 1)pi +
i =0 N
(depth(di ) + 1)qi
N
1+
i =1
depth(vi )pi +
i =0
depth(di )qi
el resultado no es necesariamente equilibrado tampoco necesariamente se va a ubicar la llave mas frecuente en la ra z examinar exhaustivamente las posibilidades seria exponencial
Mas ejemplos. . .
BST optimos
Estructura de la soluci on: considerar un BST optimo remarcar primero que todo sub-arbol corresponde a llaves entre vi y vj para i < j , con hojas di 1 , di . . . dj remarcar que si T es optimo entonces todo sub-arbol T es optimo para las llaves que lo componen (el mismo argumento de siempre) ahora, si examinamos entre los posibles vr {vi , vi +1 , . . . vj } formando arboles optimos para vi , . . . , vr 1 de un lado y vr +1 , . . . , vj del otro lado, encontraremos el subarbol optimo
Mas ejemplos. . .
BST optimos
Soluci on recursiva: el sub-problema es aqu encontrar un arbol optimo para las llaves vi , vi +1 , . . . vj y nodos hojas di 1 , di , . . . dj para 1 i N y i 1 j N (el caso j = i 1 corresponde al problema trivial de un solo nodo hoja di 1 ) notemos Tij el costo promedio optimo asociado al sub-arbol con llaves vi , . . . , vj la inicializaci on es trivial: Ti (i 1) = qi 1
Mas ejemplos. . .
BST optimos
Soluci on recursiva: para j i elegimos una raiz vr entre las posibles llaves. Dene los dos sub-arboles mencionados arriba. el costo Tij contiene el costo asociado a cada de los sub-arboles; esos arboles, por ser a nadidos a una raiz ven la profundidad de todos sus nodos aumentar de uno entonces
r 1 r 1 j j
Tij = pr + Ti (r 1) +
l =i
pl +
l =i 1
ql + T(r +1)j +
l =r +1
pl +
l =r
ql
Mas ejemplos. . .
BST optimos
Soluci on recursiva:
j j
si notamos wij =
l =i
pl +
l =i 1
ql , entonces
Tij = Ti (r 1) + T(r +1)j + wij deducimos la recursi on: Tij = qi 1 si j=i-1 min Ti (r 1) + T(r +1)j + wij si j i
i r j
Dos sub-problemas, elecciones en un rango [i , j ] (muy similar al de las matrices) Queremos la soluci on asociada a T1N
, J.B. Hayet Programaci on, Mayo 2008 48 / 50
Mas ejemplos. . .
BST optimos
Implementaci on: usar un arreglo para los Tij y los rij usar un arreglo para los wij dise nar un esquema para no recalcular los wij cada vez. . .
f o r ( i n t l =1; l <=N ; l ++) // I t e r a t e on sub d i a g o n a l s f o r ( i n t i =1; i <=N l +1; l ++) { j = i + l 1 ;W[ i ] [ j ] = W[ i ] [ j 1]+P [ i ]+Q[ j ] ; T [ i ] [ j ] = s t d : : n u m e r i c l i m i t s < f l o a t > : : max ( ) ; f o r ( i n t r=i ; r <=j ; r++) { i n t v = T [ i , r 1]+T [ r + 1 ] [ j ]+W[ i ] [ j ] ; i f ( v<T [ i ] [ j ] ) {T [ i ] [ j ]= v ; R [ i ] [ j ]= r ; } } }
, J.B. Hayet Programaci on, Mayo 2008 49 / 50
Mas ejemplos. . .
BST optimos
Implementaci on:
i 1 0 2 3 4 5 6
2 j 3