Professional Documents
Culture Documents
VUELTA ATRÁS
UNIVERSIDAD DE ALICANTE
1
1
VUELTA ATRÁS
EJEMPLO INTRODUCTORIO (2)
VUELTA ATRÁS
EJEMPLO INTRODUCTORIO (3)
Restricciones:
⎧ xi = 0 no se selecciona el objeto i
Implícitas xi ∈ {0,1} ⎨
⎩ xi = 1 se selecciona el objeto i completo
n
Explícitas ∑x p
i =1
i i ≤P
n
Función objetivo: Max ∑ xi vi (valor transportado)
i =1
2
VUELTA ATRÁS
EJEMPLO INTRODUCTORIO (4)
Combinaciones posibles ⎧ P = 16
⎪
Supongamos el siguiente ejemplo: ⎨ ⎧ p = (7,8, 2)
⎪n = 3 ⎨
⎩ ⎩v = (49, 40, 20)
Espacio de soluciones:
VUELTA ATRÁS
EJEMPLO INTRODUCTORIO (5)
3
VUELTA ATRÁS
EJEMPLO INTRODUCTORIO (6)
Complejidad: n
Caso peor: ∑x p
i =1
i i ≤ P f (n) = 2· f (n − 1) + n ∈ Ο(2n )
VUELTA ATRÁS
EJEMPLO INTRODUCTORIO (7)
(k<n) : MOCHILA(v,p,P,v_mejor,n,k+1,x,x_mejor);
fopcion
finsi
fpara
fin
8
4
VUELTA ATRÁS
DEFINICIÓN Y ÁMBITO DE APLICACIÓN
Para llevar a cabo el estudio exhaustivo Vuelta atrás proporciona una forma
sistemática de generar todas las posibles soluciones a un problema.
VUELTA ATRÁS
CARACTERÍSTICAS
10
5
VUELTA ATRÁS
CARACTERÍSTICAS
11
VUELTA ATRÁS
ESQUEMA RECURSIVO
12
6
VUELTA ATRÁS
BACKTRACKING VS. GREEDY
GREEDY BACKTRACKING
Los dominios son continuos Los dominios no son continuos
Buscamos la solución óptima y Buscamos todas las soluciones
existe un criterio de decisión voraz factibles o todas las soluciones
que nos conduce a ella. óptimas
Buscamos una aproximación a la Buscamos una solución óptima y el
solución óptima. problema no tiene solución voraz.
13
VUELTA ATRÁS
EJERCICIOS
EJERCICIOS OBLIGATORIOS
El Viajante de Comercio (ciclos hamiltonianos)
Problema de las n reinas
El laberinto
OTROS EJERCICIOS
Transformación de un número
Permutaciones
El coloreado de grafos (coloreado de mapas)
La empresa naviera
El reparto de paquetes
La asignación de turnos
14
7
Ejercicios
PROBLEMA DEL VIAJANTE DE COMERCIO: Solución VORAZ
Ejercicios
PROBLEMA DEL VIAJANTE DE COMERCIO: Solución voraz
16
8
Ejercicios
PROBLEMA DEL VIAJANTE DE COMERCIO: Solución voraz
17
Ejercicios
PROBLEMA DEL VIAJANTE DE COMERCIO: Solución VUELTA ATRAS
Restricciones:
No podemos pasar dos veces por el mismo vértice, es decir, hay que
comprobar que no hay elementos repetidos:
i ≠ j ⇒ xi ≠ x j 1 ≤ i ≤ n 1 ≤ j ≤ n
Debe existir arista entre un vértice y el siguiente:
peso( xi , xi +1 ) ≠ ∞ 1 ≤ i ≤ n -1
Debe existir un camino de vuelta al principio:
peso( xn , x1 ) ≠ ∞
18
9
Ejercicios
PROBLEMA DEL VIAJANTE DE COMERCIO: Solución vuelta atrás
/* Función */
funcion VIAJANTE_BT (G:grafo;n,k,v_mejor:entero;x,x_mejor:vector[ent]))
comienzo
xk=1;
mientras xk<n hacer
xk=xk+1;
opcion
(k=n) ∧ (peso(xn-1,xn)≠∞) ∧ (peso(xn,x1)≠∞) ∧ ¬Repetido(x,n)):
si peso_total(x)< v_mejor entonces
v_mejor=peso_total(x);
x_mejor=x;
fsi
(k<n) ∧ (peso(xk-1,xk)≠∞) ∧ (¬Repetido(x,k)):
VIAJANTE_BT (G,n,k+1,v_mejor,x,x_mejor);
fopcion
fmientras
fin
19
Ejercicios
PROBLEMA DEL VIAJANTE DE COMERCIO: Solución vuelta atrás
/* Versión Iterativa */
funcion VIAJANTE_BT (var G:grafo)
var x:vector[1,n]; k:entero;
comienzo
x1=1; k=2; xk=1; v_mejor=∞;
mientras k>1 hacer
si xk<n entonces
xk=xk+1;
opcion
(k=n) ∧ (peso(xn-1,xn)≠∞) ∧ (peso(xn,x1)≠∞) ∧ ¬Repetido(x,n)):
si peso_total(x)< v_mejor entonces
v_mejor=peso_total(x);
x_mejor=x;
fsi
(k<n) ∧ (peso(xk-1,xk)≠∞) ∧ (¬Repetido(x,k)):
k=k+1;
xk=1;
fopcion
si_no k=k-1;
fmientras
devuelve x_mejor;
fin
20
10
Ejercicios
PROBLEMA DE LAS n REINAS
Ejercicios
PROBLEMA DE LAS n REINAS
22
11
Ejercicios
PROBLEMA DEL LABERINTO (2 MOVIMIENTOS)
Ejercicios
PROBLEMA DEL LABERINTO
12
Ejercicios
PROBLEMA DE LA TRANSFORMACIÓN DE UN NÚMERO
Restricciones:
k ≤ P k = nº de transformaciones
F(x,k,n) ≠ 0
F(x,k,n) ≠ F(x,i,n) i<k (valor repetido) 25
Ejercicios
PROBLEMA DE LA TRANSFORMACIÓN DE UN NÚMERO
26
13
Ejercicios
PERMUTACIONES
27
Ejercicios
EL COLOREADO DE GRAFOS
28
14
Ejercicios
LA EMPRESA NAVIERA
29
Ejercicios
EL REPARTO DE PAQUETES
30
15
Ejercicios
EL LABERINTO
31
Ejercicios
LA ASIGNACIÓN DE TURNOS
32
16
Ejercicios
LA ASIGNACIÓN DE TURNOS
P T1 T2 T3 C
A1 0 1 2 T1 3
A2 1 2 3 T2 2
A3 3 2 1 T3 4
A4 0 0 1
A5 2 1 0
33
17