Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Javier Béjar
CS - GEI
Búsqueda Heurística
Búsqueda Heurística
Ramificación y acotación
3
Greedy Best First
A H
Operaciones:
- situar un bloque libre en la mesa H G
- situar un bloque libre sobre otro bloque libre
G F
Heurístico 1:
F E
- sumar 1 por cada bloque que esté colocado sobre el
bloque que debe
E D
- restar 1 si el bloque no está colocado sobre el que debe
D C
Heurístico 2:
- si la estructura de apoyo es correcta sumar 1 por cada C B
bloque de dicha estructura
- si la estructura de apoyo no es correcta restar 1 por cada B A
bloque de dicha estructura
Estado Inicial Estado Final
H1=4 H1=8
H2=−28 H2= 28 (= 7+6+5+4+3+2+1)
5
Importancia del estimador
D
A
C
H H
A B H
G G
H1=4
F F H2=−14
E E
D D
C C
G
B A B
F
Estado Inicial
H1=4 H1=6
H2=−28 H2=−21 E
H C
A B
H1=4
H2=−16
6
Heurísticos
2 8 3 1 2 3
1 6 4 8 4
7 5 7 6 5
ni nj
Coste de un arco c(ni , nj ) > 0
ni nj Pj−1
Coste de un camino C= x=i c(nx , nx+1 )
C1
C2 nj
ni
...
Cl Coste del camino mínimo K(ni , nj ) = minlk=1 Ck
g(n)
n
f(n)=g(n)+h(n)
n
h(n)
10
Búsqueda A∗
Se puede demostrar que si h(n) es un minorante del coste real h∗ (n), es decir si
∀n h(n) ≤ h∗ (n) A∗ encontrará (de haberlo) un camino óptimo.
11
El algoritmo A∗
Algoritmo: A*
Est_abiertos.insertar(Estado inicial)
Actual ← Est_abiertos.primero()
mientras no es_final?(Actual) y no Est_abiertos.vacía?() hacer
Est_abiertos.borrar_primero()
Est_cerrados.insertar(Actual)
hijos ← generar_sucesores (Actual)
hijos ← tratar_repetidos (Hijos, Est_cerrados, Est_abiertos)
Est_abiertos.insertar(Hijos)
Actual ← Est_abiertos.primero()
13
A∗ Ejemplo
Abiertos Cerrados
0+2
0+2
14
A∗ Ejemplo
1 Abiertos Cerrados
0+2
1+1
0+2 0+2
1+1
1+1 1+1 1+3
1+3
14
A∗ Ejemplo
1 Abiertos Cerrados
0+2
0+2
1+1 0+2
2 1+1
2+1 1+1
1+1 1+1 1+3
1+3
14
A∗ Ejemplo
1 Abiertos Cerrados
0+2
0+2
1+1
2+1 0+2
2 3 1+1
2+1 1+1
1+1 1+1 1+3
1+3 1+1
14
A∗ Ejemplo
1 Abiertos Cerrados
0+2
0+2
1+1
2+1 0+2
2 3 1+1
2+1
3+1 1+1
1+1 1+1 1+3
1+3 1+1
4 2+1
2+1 2+1 2+2
14
A∗ Ejemplo
1 Abiertos Cerrados
0+2
0+2
1+1
2+1
3+1 0+2
2 3 1+1
2+1
3+1 1+1
1+1 1+1 1+3
1+3 1+1
4 5 2+1
2+1 2+1 2+2
2+1
14
A∗ Ejemplo
1 Abiertos Cerrados
0+2
0+2
1+1
2+1
3+1 0+2
2 3 1+1
2+1
3+1
1+3 1+1
1+1 1+1 1+3
1+3
4+1 1+1
4 5 2+1
2+1 2+1 2+2
2+1
6 3+1
3+1 3+1 3+2
14
A∗ Ejemplo
1 Abiertos Cerrados
0+2
0+2
1+1
2+1
3+1
1+3 0+2
2 3 1+1
2+1
3+1
1+3
4+1 1+1
1+1 1+1 1+3
1+3
4+1 1+1
4 5 2+1
2+1 2+1 2+2
2+1
6 7 3+1
3+1 3+1 3+2
3+1
14
A∗ Ejemplo
1 Abiertos Cerrados
0+2
0+2
1+1
2+1
3+1
1+3
2+2 0+2
2 3 8 1+1
2+1
3+1
1+3
4+1 1+1
1+1 1+1 1+3
1+3
4+1 1+1
4 5 2+1
2+1 2+1 2+2
2+1
6 7 3+1
3+1 3+1 3+2
3+1
1+3
4+1 4+1 → 3+1 4+1
14
A∗ Ejemplo
1 Abiertos Cerrados
0+2
0+2
1+1
2+1
1+3
2+2
3+1 0+2
2 3 8 1+1
2+1
3+1
1+3
4+1 1+1
1+1 1+1 1+3
1+3
4+1
3+2 1+1
4 5 9 2+1
2+1 2+1 2+2
2+1
6 7 3+1
3+1 3+1 3+2
3+1
1+3
4+1 4+1 → 3+1 4+1
2+2
14
A∗ Ejemplo
1 Abiertos Cerrados
0+2 0+2
1+1
2+1
1+3
2+2
3+1
4+0 0+2
2 3 8 1+1
2+1
3+1
1+3
4+1 1+1
1+1 1+1 1+3 1+3
4+1
3+2 1+1
4 5 9 2+1
2+1 2+1 2+2 2+1
6 7 3+1
3+1 3+1 3+2 3+1
10 1+3
4+1 4+1 → 3+1 4+1 2+2
3+1
5+0 4+0 5+0
14
A∗ Ejemplo
Abiertos Cerrados
1
0+2
1+1
2+1
1+3
2+2
3+1
4+0
4+1 0+2
0+2
1+1
2+1
3+1
1+3
4+1
3+2 1+1
2 3 8
1+3
4+1
3+2 1+1
1+1 1+1 1+3
2+1
4 5 9
2+1
2+1 2+1 2+2
3+1
6 7
3+1
3+1 3+1 3+2
1+3
10
2+2
4+1 4+1 → 3+1 4+1
3+1
11
4+0
5+0 4+0 5+0
14
Admisibilidad
∀n 0 ≤ h(n) ≤ h∗ (n)
} Por lo tanto, h(n) ha de ser un estimador optimista, nunca ha de sobreestimar
h∗ (n)
15
Admisibilidad
1
A 1
A
2 5
B C D 2
(1+2) (1+3) (1+5)
B C D
6 (1+2) (1+4) (1+5)
3
E F 3
(2+2) (2+2)
E H
(2+2) (2+0)
4 7
Objetivo
G H 4
(3+1) (3+1)
F
(3+1)
8
I J 5
(4+1) (4+0)
G
Objetivo (4+0)
Objetivo
h subestima h∗
h sobreestima h∗
h(B) = 2, que no es real, hemos perdido
si partiendo de D existiera un camino
tiempo pero acabaremos explorando otro
directo más corto nunca lo alcanzaríamos
camino (C)
Condición de Consistencia
18
Algoritmos más informados
} Si A∗1 es más informado que A∗2 entonces si el nodo n es expandido por A∗1 =⇒ n
es expandido por A∗2 (pero no al revés)
} Eso quiere decir que A∗1 expande menor número de nodos que A∗2
19
Algoritmos más informados
20
Algoritmos más Informados - 8 puzzle
Ocho puzzle
2 8 3 1 2 3
1 6 4 8 4
7 5 7 6 5
h0
h0 (n) = 0 Equivalente a anchura prioritaria, h0 admisible, muchas ge-
neraciones y expansiones
h1
h1 (n) = #piezas mal colocadas h1 admisible, h1 mas informado que h0
21
Algoritmos más Informados - 8 puzzle
h2
P di ≡ distancia entre posición de la pieza
h2 (n) = i∈[1,8] di
i y su posición final
h2 admisible, h2 no más informado que h1
h2 ([1, 2, 3, 4, 5, 6, 7, ∅, 8]) = h1 ([1, 2, 3, 4, 5, 6, 7, ∅, 8]) = 1
h3
P P
h3 (n) = i∈[1,8] di + 3 · S(n) ; con S(n) = i∈[1,8] si
0 si pieza i no en el centro y sucesora correcta
si = 1 si pieza i en el centro
2 si pieza i no en el centro y sucesora incorrecta
0+2 (1,3,8)
} Similar a ID (es decir iteración de
búsqueda en profundidad con un límite en
la búsqueda) (2,4,9) 1+1 1+2 (6,12)
26
Best First Recursivo
} Es una implementación del Best First recursiva con coste lineal en espacio O(rp)
} Olvida una rama cuando su coste supera la mejor alternativa
} El coste de la rama olvidada se almacena en el padre como su nuevo coste
} La rama es reexpandida si su coste vuelve a ser el mejor (regeneramos toda la
rama olvidada)
27
Best First Recursivo - Algoritmo
29
Best First Recursivo - Ejemplo
18 8 12
29
Best First Recursivo - Ejemplo
2
18 8 12
18 11 19
29
Best First Recursivo - Ejemplo
2
18 8 12
3
18 11 19
17 20
29
Best First Recursivo - Ejemplo
2
18 8 12
3
18 17 19
29
Best First Recursivo - Ejemplo
2
18 17 12
29
Best First Recursivo - Ejemplo
2 4
18 17 12
20 21
29
Best First Recursivo - Ejemplo
5
18 17 20
18 17 19
29
Best First Recursivo - Ejemplo
5
18 17 20
6
18 17 19
17 20
29
Best First Recursivo - Ejemplo
5
18 17 20
6
18 17 19
7
17 20
17
29
Best First Recursivo - Ejemplo
5
18 17 20
6
18 17 19
7
17 20
8
17
29
Best First Recursivo
30
A∗ con memoria limitada (MA∗ )
31