Вы находитесь на странице: 1из 10

Instituto Tecnolgico de Costa Rica Escuela de Ingeniera en Computacin Investigacin de Operaciones Profesor: Dr.

Francisco Jos Torres

Apuntes de Clase: 21/08/2013 Carlos Fallas Victor 201115046

Enfoque de Programacin Dinmica para encontrar ABB ptimo

Hay n llaves de la forma: Key1< Key2< Key3<...< Keyn Las cuales tienen probabilidades P1,P2,P3,,Pn asociadas. Tenemos una Tabla A para recordar los resultados previos.

Las llaves deben estar ordenadas

Consideremos las llaves desde Keyi hasta Keyj: Keyi Keyk Keyj Con sus probabilidades: Pi,Pk,,Pj Todas estn en el mismo subrbol y existe una Keyk, de la forma Keyi la raz del subrbol. Keyk Keyj, que es

Keyk

Keyi. Keyk-1

Keyk+1. Keyj

La rama izquierda va a ir desde la llave Keyi hasta la llave Keyk-1 La rama derecha va a ir desde la llave Keyk+1 hasta la llave Keyj Existen j-i+1 races posibles para el subrbol

Nuestro Objetivo es el de minimizar el costo o saltos promedio Supongamos que existe un rbol ptimo con raz Keyk

Keyk

Keyi. Keyk-1

Keyk+1. Keyj

El subrbol izquierdo ptimo, fue previamente optimizado y su costo se encuentra en la tabla A, especficamente en A[i][K-1] El subrbol derecho ptimo, fue previamente optimizado y su costo se encuentra en la tabla A, especficamente en A[K+1][A] El lado subrbol izquierdo contiene desde la llave Keyi hasta Keyk-1 y su costo promedio es igual a la esperanza matemtica, es decir, Ci*Pi+Ci+1*Pi+1++Ck-1*Pk-1 y va a estar almacenado en A[I][K-1]. En otras palabras: A[I][K-1]= Ci*Pi+Ci+1*Pi+1++Ck-1*Pk-1

Con el subrbol derecho sucede similar. Este subrbol contiene desde la llave Keyk+1 hasta Keyj y su costo promedio es igual a la esperanza matemtica, es decir, Ck+1*Pk+1+Ck+2*Pk+2++Cj*Pj y va a estar almacenado en A[K+1][J]. En otras palabras: A[K+1][J]= Ck+1*Pk+1+Ck+2*Pk+2++Cj*Pj

Ahora Observemos:

1*Pk Keyk +1 Keyi. Keyk-1 +1 Keyk+1. Keyj

El costo de encontrar la llave Keyk es 1 El costo de ir al subrbol izquierdo va a ser de 1+ A[i][k-1] El costo de ir al subrbol derecho va a ser de 1+A[k+1][j] El costo promedio del rbol dado que Keyk sea la raz, va a ser: (1+Ci)*Pi+(1+Ci+1)*Pi+1++(1+Ck-1)*Pk-1+ Pk+ (1+Ck+1)*Pk+1+(1+Ck+2)*Pk+2++(1+Cj)*Pj A[i][k-1]+A[k+1][j]+Pi+Pi+1++Pk-1+Pk+Pk+2++Pj Debemos escogemos el k que genere menos costo:

Ecuacin de Bellman min(A[i][k-1]+A[k+1][j]+Pi+Pi+1++Pj-1+Pj)

Caso Trivial: o Un rbol de un solo nodo Va desde Keyi hasta Keyi A[i][i]=Pi

Importante: o A[i][i-1]=0 o A[j+1][j]=0

Ejemplo:

Key1 = Harrison o P1=0.18 Key2= Lennon o P2=0.32 Key3=McCartney o P3=0.39 Key4=Starr o P4=0.11

Debemos encontrar ABB ptimo

Tabla A 1 2 3 4 5

0 0

1 0.18 0

2 0.68 0.32 0

3 1.46 0.71 0.39 0

4 1.79 1.25 0.61 0.11 0

Primero ponemos la diagonal puesto a que A[i][i]=Pi Luego ponemos las casillas correspondientes a A[i][i-1]=0 y A[j+1][j]=0

Ahora debemos calcular el resto de casillas:


Recordar Sumar las

A[1][2] = rbol que contiene desde K1 hasta K2 A[i][j]= min(A[i][k-1]+A[k+1][j]+Pi++Pj) K=1,2 K=1 = A[1][0]+A[2][2]+ Pi+ Pj = 0 +0.38+0.5 = 0.88 K=2 = A[2][1]+A[3][2]+Pi++ Pj =0.18+0+0.5=0.68

Probabilidades

A[2][3]=rbol que contiene desde K2 hasta K3 A[i][j]= min(A[i][k-1]+A[k+1][j]+Pi++Pj) K=1 = A[2][1]+A[3][3]+ Pi++ Pj =0 +0+0.71 = 0.71 K=2 = A[2][2]+A[4][3]+ Pi+ Pj =0.32 +0+0.71 = 1.03 A[3][4]=rbol que contiene desde K3 hasta K4 A[i][j]= min(A[i][k-1]+A[k+1][j]+Pi++Pj) K=3 = A[3][2]+A[4][4]+ Pi++ Pj =0 +0.11+0.5 = 0.61 K=4 = A[3][3]+A[5][4]+ Pi++ Pj =0.39 +0+0.5 = 0.89 A[1][3]=rbol que contiene desde K1 hasta K3 A[i][j]= min(A[i][k-1]+A[k+1][j]+Pi++Pj) K=1 = A[1][0]+A[2][3]+ Pi++ Pj =0 +1.03+0.89 = 1.92 K=2 = A[1][1]+A[3][3]+ Pi++ Pj =0.18 +0.39+0.89 = 1.46 K=3 = A[1][2]+A[4][3]+ Pi++ Pj =0.68+0+0.89 = 1.57 A[2][4]=rbol que contiene desde K2 hasta K4 A[i][j]= min(A[i][k-1]+A[k+1][j]+Pi++Pj) K=2 = A[2][1]+A[3][4]+ Pi++ Pj =0 +0.61+0.82 = 1.43 K=3 = A[2][2]+A[4][4]+ Pi++ Pj =0.32 +0.11+0.82 = 1.25 K=4 = A[2][3]+A[5][4]+ Pi++ Pj =1.03+0+0.82 = 1.85

A[1][4]=rbol que contiene desde K1 hasta K4 A[i][j]= min(A[i][k-1]+A[k+1][j]+Pi++Pj) K=1 = A[1][0]+A[2][4]+ Pi++ Pj =0 +1.25+1 = 2.25 K=2 = A[1][1]+A[3][4]+ Pi++ Pj =0.18 +0.61+1 = 1.79 K=3 = A[1][2]+A[4][4]+ Pi++ Pj =0.68+0.11+1 = 1.79 K=4 = A[1][3]+A[5][4]+ Pi++ Pj =1.46+0+1 = 2.46

Ahora sabemos que la entrada A[1][4] contiene el costo mnimo del rbol que contiene desde K1 hasta K4, que sera 1.79.

Para determinar el rbol, utilizamos una tabla auxiliar R. Esta tabla es de las mismas dimensiones de A y cada vez que llenamos una casilla de A anotamos el K ganador en la tabla R, ese K ganador es la raz de ese subrbol. Para este ejemplo sera la siguiente:

Tabla R 1 2 3 4 5

0 0

1 1 0

2 2 2 0

3 2 3 3 0

4 2 3 3 4 0

Para crear el rbol nos dirigimos a la casilla R[1][4], que contiene la raz para el rbol que contiene las llaves desde Key1 hasta Key4, sera la Key2, esta es la raz del rbol. Para el subrbol izquierdo nos dirigimos a la casilla R[1][1], porque del lado izquierdo tenemos el rbol que contiene desde la llave Key1 hasta Key1, que sera 1, y as para cada subrbol generado. El rbol seria:

Tibia: Cul es el nombre verdadero de Ringo Starr? Respuesta: Es Richard, fue apodado Ringo porque sola usar muchos anillos

Este Algoritmo tiene Complejidad espacial Cuadrtica Complejidad Temporal Cubica Fue creado por Gilbert & Moore (1959) Yao (1982) creo una versin (n2)

Finales de la NBA
Gana el Mejor de 7 juegos No hay empates En General ha 2k-1 juegos, el primero en ganar K juegos es el Campen

Probabilidades El equipo A tiene p (Probabilidades) de ganar cada juego (P constante e independiente) El equipo B tiene q= 1-p probabilidades de ganar Cul es la probabilidad de que A sea campen (ganar 4 juegos antes que B)?

Juegos Restantes Cuenta cuantos partidos le quedan a ambos equipos para ser campen: (1,3) resta un juego para que A sea campen y 3 juegos para que B sean campen (4,4) Estado inicial

Consideremos el estado (i,j), despus de estados solo hay dos posibles casos: Que A gane lo cual nos lleva al caso (i-1,j) Que B gane lo cual nos lleva al caso (i,j-1)

[i,j]
p q

[i-1,j]

[i,j-1]

F(i,j)Regresa la probabilidad de que A sea campen a partir del estado (i,j). Entonces: F(i,j) = p*F(i-1,j)+q*F(i,j-1) Casos Triviales: F(0,j)=1 F(i,0)=0

Algoritmo Combinatorio: if (i==0){ return 0; }else{ if (j==0){ return 0.0; }else{ Return (p*F(i-1,j)+q*F(i,j-1)); } } Este algoritmo es combinatorio sobre i+j (28=256)