Professional Documents
Culture Documents
y y y y
Introduccin El problema del viajante de comercio El problema de la mochila 0-1 El juego del 15
amificacin y acotacin
Pg. 1
Terminologa:
Nodo vivo: nodo del espacio de soluciones del que no se han generado an todos sus hijos. Nodo muerto: nodo del que no se van a generar ms hijos porque: x no hay ms x no es completable, x no producir una solucin mejor que la solucin en curso Nodo en curso (o en expansin): nodo del que se estn generando hijos
amificacin y acotacin
Pg. 2
Tan pronto como se genera un nuevo hijo del nodo en curso, este hijo pasa a ser el nodo en curso.
Ramificacin y acotacin:
Se generan todos los hijos del nodo en curso antes de que cualquier otro nodo vivo pase a ser el nuevo nodo en curso.
y
En consecuencia:
Bsqueda con retroceso:
Los nicos nodos vivos son los que estn en el camino de la raz al nodo en curso.
para todo v en Ci hacer para todo v en Ci hacer X[k]:=v; X[k]:=v; si (completable(X,k) si (completable(X,k) cota(X,k)<CosteMejorSol) entonces cota(X,k)<CosteMejorSol) entonces si Sol(X,k) entonces si Sol(X,k) entonces MejorSol:= X; MejorSol:= X; CosteMejorSol:= Coste(X) CosteMejorSol:= Coste(X) fsi; fsi; si k<n entonces si k<n entonces BackTracking(k+1,X) BackTracking(k+1,X) fsi; fsi; fsi fsi fpara fpara
amificacin y acotacin
Pg. 4
Backtracking Iterativo
tipo nodo es tupla tipo nodo es tupla X: vector[1..n]de valor X: vector[1..n]de valor k: [1..n+1] k: [1..n+1] ftipo // X[1..k-1] es una asignacin parcial ftipo // X[1..k-1] es una asignacin parcial
algoritmo BackTracking() algoritmo BackTracking() variable P es pila de nodo; variable P es pila de nodo; CosteMejorSol:= CosteMejorSol:= pvacia(P); apilar(P,<X,1>) pvacia(P); apilar(P,<X,1>) mientras vacia(P) hacer mientras vacia(P) hacer <X,k>:=cima(P); desapilar(P); <X,k>:=cima(P); desapilar(P); para todo v en Ci hacer para todo v en Ci hacer X[k]:=v; X[k]:=v; si (completable(X,k) si (completable(X,k) cota(X,k)<CosteMejorSol) entonces cota(X,k)<CosteMejorSol) entonces si Sol(X,k) entonces si Sol(X,k) entonces MejorSol:= X; MejorSol:= X; CosteMejorSol:= Coste(X) CosteMejorSol:= Coste(X) fsi; fsi; si k<n entonces si k<n entonces apila(P,<X,k+1>) apila(P,<X,k+1>) fsi; fsi; fsi fsi fpara fpara fmientras fmientras devuelve (MejorSol, CosteMejorSol) devuelve (MejorSol, CosteMejorSol)
Pg. 5
amificacin y acotacin
Introduccin:
y
Diferentes estrategias de elegir el siguiente nodo del conjunto de nodos vivos Distintos rdenes de recorrido del rbol de soluciones
pila:
recorr. en profundidad
cola:
recorrido extrao
La prioridad de un nodo se calcula de acuerdo con una funcin Pg. 6estimacin que de amificacin y acotacin mide cunto de prometedor es
Ramificacin y poda
tipo nodo es tupla tipo nodo es tupla X: vector[1..n]de valor X: vector[1..n]de valor k: [1..n+1] k: [1..n+1] ftipo // X[1..k-1] es una asignacin parcial ftipo // X[1..k-1] es una asignacin parcial algoritmo BranchAndBound() algoritmo BranchAndBound() variable C es cola_prioritaria de nodo; variable C es cola_prioritaria de nodo; CosteMejorSol:= CosteMejorSol:= cvacia(C); encolar(C,<X,1,pr(X,1)>) cvacia(C); encolar(C,<X,1,pr(X,1)>) mientras vacia(C) hacer mientras vacia(C) hacer <X,k>:=primero(C); desencolar(C); <X,k>:=primero(C); desencolar(C); para todo v en Ci hacer para todo v en Ci hacer X[k]:=v; X[k]:=v; si (completable(X,k) si (completable(X,k) cota(X,k)<CosteMejorSol) entonces cota(X,k)<CosteMejorSol) entonces si Sol(X,k) entonces si Sol(X,k) entonces MejorSol:= X; MejorSol:= X; CosteMejorSol:= Coste(X) CosteMejorSol:= Coste(X) fsi; fsi; si k<n entonces si k<n entonces encola(C,<X,k+1,pr(X,k+1)>) encola(C,<X,k+1,pr(X,k+1)>) fsi; fsi; fsi fsi fpara fpara fmientras fmientras devuelve (MejorSol, CosteMejorSol) devuelve (MejorSol, CosteMejorSol)
Pg. 7
amificacin y acotacin
Ramificacin y poda
y
La prioridad sirve para guiar la bsqueda y encontrar pronto una solucin ptima.
Si prioridad(X,k) = coste de la mejor extensin de X, el algoritmo ir directo a la mejor solucin
La cota sirve para descubrir pronto que es intil continuar por el camino actual
Si, adems, cota(X,k)= coste de la mejor extensin de X, podar el resto de ramas.
Ramificacin y poda
Punto clave de los mtodos de ramificacin y acotacin: Encontrar buenas funciones de prioridad y buenas cotas. Habitualmente se usa la cota como prioridad del nodo (si la cota es buena, es una buena medida de lo prometedor que es el nodo). Si no decimos lo contrario, nosotros tambin lo haremos.
amificacin y acotacin
Pg. 9
Recordar:
Encontrar un recorrido de longitud mnima para un viajante que tiene que visitar varias ciudades y volver al punto de partida, conocida la distancia existente entre cada dos ciudades.
Es decir, dado un grafo dirigido con arcos de longitud no negativa, se trata de encontrar un circuito de longitud mnima que comience y termine en el mismo vrtice y pase exactamente una vez por cada uno de los vrtices restantes (circuito hamiltoniano).
amificacin y acotacin
Pg. 10
Formalizacin:
Sean G=(V,A) un grafo orientado,
E = { 1,X,1 | X = x1,x2,,xn-1, es una permutacin de (2,3,,n) tal que (ij,ij+1)A, 0<j<n, (1, x1) A , (xn-1,1) A}
Funcion objetivo:
Pg. 11 F(X)=D[1,x1]+D[x1, x2] + D[x2,
amificacin y acotacin
Cada hoja es una solucin y representa el viaje definido por el camino desde la raz hasta la hoja.
amificacin y acotacin
Pg. 12
i=1..k-2 D[X[i],X[i+1]]
Ejemplo: (n=5)
20 30 10 11 15 16 4 2 3 5 2 4 19 6 18 3 16 4 7 16
amificacin y acotacin
Pg. 13
Para cada k, 1<k<n, todo circuito hamiltoniano incluye exactamente un arco de la forma (k,-) y exactamente un arco de la forma (-,k).
Si se resta una constante t de cada amificacin y acotacin Pg. 14 elemento de una fila (columna) de la matriz
Repitiendo proceso 10 11filas columnas, 1 el 20 30 para y 10 17 0 siempre se puede conseguir que la matriz 15 16 4 2 12 11 2 0 de Reduccin 0 3 0 2 distancias 3 5 2 de la matriz,sea reducida. 4 L = 25. 19 6 18 3 15 3 12 0 16 4 7 16 11 0 0 12
amificacin y acotacin
Pg. 15
Sea A la matriz de distancias reducida para el nodo y. Sea x un hijo de y que corresponda a incluir el arco (i,j) en el recorrido y que no sea hoja. La matriz B reducida para x, y por tanto cota(x), se calcula de la siguiente forma:
3. B es la matriz que se obtiene al reducir todas las filas yPg. 16 columnas de la matriz amificacin y acotacin resultante (excepto aqullas
Ejemplo:
20 15 3 5 19 6 16 4 30 10 11 16 4 2 2 4 18 3 7 16 10 17 0 1 12 11 2 0 0 3 0 2 15 3 12 0 11 0 0 12
Matriz reducida, L = 25.
Grafo original.
0 15 11
11 2 0 0 2 c = 25 1 12 0 x1 = 2 0 12 x =3
1
x1 = 4
10 0 3 12 0 x1 = 5 0
9 9 0
0 0 12
3 4 25+17+11 = 53 c = 25 =25+10 = 35 c = c
5 25+1+5 = 31 c=
1 4 0
3 3 0
2 0 0 2 0 12
12 0 3 3 11 0
11 12 0
0 2 0
amificacin y acotacin
Pg. 17
El siguiente nodo en curso sera el 5, pero cota(5)>UB luego el algoritmo termina y el hamiltoniano mnimo es 1,4,2,5,3,1.
amificacin y acotacin
Pg. 18
Un hamiltoniano es un conjunto de n arcos. Adems, para cada vrtice i, 0<i<n+1, debe haber en ese conjunto exactamente un arco de la forma (i,j) y uno de la forma (k,i). Soluciones Factibles: {X=()| i xi {0,1}, xi =n, u V (( !i (xi =1 oi =u) ( !j (xj =1 dj =u)) } Funcin Objetivo: F(X)= xi D[oi, di]
Arbol de bsqueda= rbol binario: x Un hijo izquierdo representa la inclusin de un determinado arco en el hamiltoniano mientras que su hermano derecho representa 19 exclusin de ese arco. la amificacin y acotacin Pg.
si hay un recorrido ptimo incluido en el subrbol izquierdo, entonces slo faltan por seleccionar n-1 arcos para encontrarlo, mientras que si todos estn en el derecho, hay que seleccionar todava n arcos.
amificacin y acotacin
Pg. 20
excluir (3,1)
incluir (1,4) c = 28 6
Se llega al nodo 6. Se han elegido ya tres arcos: (3,1), (5,3), (1,4). Para los dos restantes, slo queda ya una opcin: (3) = 36> UB c (4,2) y (2,5). As, se obtiene el recorrido: 5,3,1,4,2,5. Con distancia total: 28 (as, UB = 28) amificacin y acotacin Pg. 21
sujeto a
1 in
pi xi C
{ }
ya vimos una cota que consista en resolver el problema permitiendo fracciones en los objetos sobre los que an no se ha decidido.
Pg. 22
amificacin y acotacin
El problema original:
Decisin: encontrar una secuencia de movimientos que lleven al objetivo Optimizacin: encontrar la secuencia de movimientos ms corta
1 2 3 4 5 6 7 8 9 10 11 12 13 15 14
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Problema de Lloyd
El objetivo
amificacin y acotacin
Pg. 23
2 6
1 2 4 5 6 3 8 9 10 7 11 13 14 15 12
1 2 3 4 5 6 8 9 10 7 11 13 14 15 12
3 8
1 2 3 4 5 6 8 9 10 7 11 13 14 15 12
1 2 3 4 5 6 7 8 9 10 11 13 14 15 12
5 1 1 3
1 2 4 1 2 4 1 2 3 5 6 3 8 5 6 3 8 5 6 8 4 9 10 7 11 9 10 7 11 9 10 7 11 13 14 15 12 13 14 15 12 13 14 15 12
1 61 5
2 4 8 6 3 9 10 7 11 13 14 15 12
1 8
1 2 3 5 6 8 4 9 10 7 11 13 14 15 12
1 9
2 1 02 2 1 1
1 2 3 4 5 6 8 11 5 6 7 8 9 10 7 9 10 11 13 14 15 12 13 14 15 12
1 1 02 3 4
3 4 1 2 3 4 3 4 1 2 3 4 7 8 5 6 7 8 5 2 6 8 5 6 8 9 10 15 11 9 10 11 9 10 7 11 9 7 11 9 10 7 11 13 14 12 13 14 15 12 13 14 15 12 13 14 15 12 13 14 15 12
1 1 2 1 5 6
1
2
1 2 3 4 5 6 8 9 10 7 11 13 14 15 12
1 1 2 3 4 4 5 10 6 8
1
5
1 2 3 4 5 6 7 9 10 11 8 13 14 15 12
2 2
2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
1 7
1 6 2 4 5 3 8 9 10 7 11 13 14 15 12
1 2 4 5 6 3 8 9 10 7 11 13 14 15 12
3 4 5 6 8 11 9 10 7 12 13 14 15
2 3 4 5 6 8 11 9 10 7 13 14 15 12
objetiv o
amificacin y acotacin
Pg. 24
Se puede resolver con branch and bound (aunque hay mtodos mejores) funciones de prioridad:
numero de fichas mal colocadas (puede engaar) suma, para cada ficha, de la distancia a la posicin donde le tocara estar ...
amificacin y acotacin
Pg. 25