Está en la página 1de 14

Bsqueda Heurstica III

Pedro Meseguer IIIA-CSIC Bellaterra, Spain pedro@iiia.csic.es

Bsqueda heurstica
Bsqueda informada por la funcin heurstica f(n) Algoritmos: esquema primero el mejor (best-first)
Coste uniforme f(n) = g(n) Bsqueda heurstica pura f(n) = h(n) A* f(n) = g(n) + h(n) A* con heursticas admisibles

Evaluacin:
calidad solucin: ptimo? coste en tiempo: proporcional a los nodos generados coste en memoria: proporcional a los nodos almacenados
Bsqueda Heurstica 2

rboles y grafos
un solo camino para cada nodo varios caminos para cada nodo

BSQUEDA EN RBOL Algoritmo ms simple No detectan repetidos: si aparece un nodo ya expandido, se expande de nuevo (tiempo)

BSQUEDA EN GRAFO Algoritmo ms complejo Almacenan nodos ya expandidos, para detectar repetidos (gastan memoria)
3

Bsqueda Heurstica

Coste en arcos
Arcos:
en bsqueda ciega, suponemos cada arco cuesta 1 solucin ptima: ms cercana a la raz ahora arcos con costes arbitrarios (mnimo e > 0) camino ptimo: mnimo coste a una solucin
a 2 1

b
1 2 1

c
3

soluciones

4
4

Bsqueda Heurstica

Funciones de coste
g(n): suma de costes desde la raz hasta n h(n): estimacin de coste mnimo desde n hasta una solucin
f(n) = g(n) f(n) = h(n) g(n) f(n) = g(n) + h(n) h(n)

Bsqueda Heurstica

Esquema de primero el mejor (best-first) (bsqueda en rbol)


1. L nodo raz. 2. Si L vaco, fallo, stop. Sino, n extrae -mnimo-f(L) 3. Si n es solucin, retornar el camino desde la raz, stop. Sino, generar los sucesores de n. 4. Aadir a L los sucesores de n, etiquetando sus respectivos caminos desde la raz. Ir a 2.

Bsqueda Heurstica

Diferencias con bsqueda ciega


1. L nodo raz.

Siguiente nodo: en lugar de escoger el primero de L, se escoge el de mnimo coste

2. Si L vaco, fallo, stop. Sino, n extrae -mnimo-f(L) 3. Si n es solucin, retornar el camino desde la raz, stop. Sino, generar los sucesores de n. 4. Aadir a L los sucesores de n, etiquetando sus respectivos caminos desde la raz. Ir a 2. Test de solucin: no se No hay orden al hace al generar el nodo aadir sucesores sino al expandir el nodo
Bsqueda Heurstica 7

Test al expandir
f(n) = g(n) s: inicio g: objetivo
1

s
2

a
3

b g
1

como rbol

s
1 2

a 3 g

b
1

1. expandimos s, L = {a(1), b(2)} 2. expandimos a, L = {b(2), g(4)}

camino s-a-g, coste = 4


3. expandimos b, L = {g(3), g(4)} 4. expandimos g(3), solucin

camino s-b-g, coste = 3


Bsqueda Heurstica 8

Coste uniforme f(n) = g(n)


Calidad de la solucin: encuentra camino de mnimo coste
Tiempo: c : coste de la solucin e : mnimo coste de un arco antes de la solucin, expandir todos los nodos con coste c (caso peor) complejidad O(b c/e) Espacio: si todos los arcos cuestan lo mismo: degenera en anchura complejidad O(b c/e)
Bsqueda Heurstica 9

f(n) = h(n)
Bsqueda heurstica pura (pure heuristic search)
3

f(n)
coste arco = 1
4 1

2 1 1 1 1

No es completo en grafos infinitos


Bsqueda Heurstica 10

infinita

f(n) = h(n)
Bsqueda heurstica pura (pure heuristic search)
3

f(n)
coste arco = 1
4 1

2 1 1 1 1

No encuentra la solucin ptima


Bsqueda Heurstica 11

A*:

f(n) = g(n) + h(n)


0+3

Problema: h(n) no incluye el coste del camino ya recorrido Solucin: f(n) = g(n) + h(n)
f(n)
coste arco = 1
1+2 2+1 3+1 4+1 5+1 1+4 2+1 3+0

Es completo en grafos infinitos


Bsqueda Heurstica 12

infinita

A*:

f(n) = g(n) + h(n)


0+3

f(n)
coste arco = 1
1+10 2+1 3+0

1+2 2+1 3+1 4+1 5+1 6+1


Bsqueda Heurstica

No encuentra la solucin ptima


13

A*:

h admisible

h(n): estimacin de coste mnimo desde n hasta una solucin h*(n): coste mnimo desde n hasta una solucin h admisible ssi h(n) h*(n) n Si h admisible, A* encuentra la solucin ptima

Bsqueda Heurstica

14

A*:
f(n)
coste arco = 1

h admisible
si admisible h(n) 10
0+3

1+2 2+1 3+1 4+1 5+1 6+1


Bsqueda Heurstica

1+10 2+1 3+0

1+2

Encuentra la solucin ptima


15

A* heursticas ms informadas
nodos (A*, h): nodos expandidos por A* con h
h1 y h2 admisibles, h2 es ms informada que h1 sii

h2(n) > h1(n) n

nodos (A*,h2) nodos (A*,h1)


nodos(A*,h2) nodos(A*,h1)

Bsqueda Heurstica

16

A* casos lmite
Heurstica nula
h(n) = 0 n
f(n) = g(n) A* degenera en bsqueda en anchura

Heurstica perfecta
h(n) = h*(n) n
f(n) = coste ptimo puede desarrollar todos los caminos con coste mnimo basta con un camino desempatar con g mayor

espacio exponencial
Bsqueda Heurstica 17

A* sobre grafos
rbol: un solo camino para cada nodo (supuesto hasta ahora)
Grafo: varios caminos para cada nodo (situacin real) Pregunta: podemos adaptar A* de rboles a grafos?
La primera vez que se genera n, hay un nico camino c1, coste g(c1) Se puede volver a generar n por otro camino c2, coste g(c2) g(c1) A* cmo puede manejar dos caminos con distinto coste si n an no ha sido expandido? n ya ha sido expandido?

Bsqueda Heurstica

18

A*: OPEN / CLOSED


OPEN:
sustutuye a la lista

A* almacena todo el espacio generado

L contiene todos los nodos generados pero no expandidos


CLOSED: contiene todos los nodos expandidos

n generado por camino c1,


se vuelve a generar n por camino c2 hay que quedarse con camino de menor coste si n OPEN, quedarse con camino min {g(c1) g(c2)} descendientes de n y actualizar su coste va camino c2
Bsqueda Heurstica

(sencillo) (tostn)
19

si n CLOSED , n ya ha sido expandido. Si g(c2) < g(c1), hay que ir a los

Consistencia y monotona
h consistente:

h(n) k(n,m) + h(m)

n, m,
k(n,m): mnima distancia entre n y m

h montona:

h(n) c(n,n) + h(n)

n, nsucc(n)

h montona f(n) f(n), no decrece en un camino consistencia monotona consistencia / monotona admisibilidad
Bsqueda Heurstica 20

Monotona y g(n)
Si h montona, g(n) = g*(n) (ptima) para nodos expandidos
c1 s m c2 n

Sea n open por c1, seleccionado para expansin, con g(n) > g*(n)

Existe c2 camino ptimo hasta n; sea m el ltimo nodo generado de c2 El camino c2 hasta m es ptimo: g(m)= g*(m). Cmo es f(m)?

f(m) = g*(m) + h(m) g*(m) + k(m,n) + h(n) = g*(n) + h(n) < g(n) + h(n) = f(n) consistencia
Contradiccin con que n sea el nodo con f mnima! Por lo tanto, g(n) = g*(n).
Bsqueda Heurstica 21

Monotona y A*
A* expande n: n pasa de OPEN a CLOSED h montona:
todo n expandido tiene g(n) = g*(n) (ptima) todo n CLOSED tiene g(n) = g*(n) (ptima)

Por tanto: si n CLOSED, su camino es el ptimo


A* sobre grafos no ha de propagar el coste de descubrir mejores caminos para los nodos ya expandidos.
Bsqueda Heurstica 22

A*: path-max
Es posible generar heursticas montonas? S. Supongamos h admisible pero no montona Redefinimos f como
f(n) = max ( f(n), g(n) + h(n) ) nsucc(n)

f es no decreciente, genera una nueva h montona

Bsqueda Heurstica

23

A* sobre grafos
1. OPEN nodo raz 2. Si OPEN vaca, fallo, stop. Sino, n extrae-mnimo-f(OPEN ) 3. Si n es objetivo, xito, stop. Sino, aadir n a CLOSED y generar los sucesores de n (expansin de n). 4. Para cada sucesor n hacer: 4.1 Si n OPEN, reetiquetar n con el camino ms corto desde la raz. 4.2 Si n CLOSED, ignorar n. 4.3 Si n OPEN y n CLOSED, aadir n a OPEN, etiquetndolo con su camino desde la raz. 4.4 Ir al paso 2.

Bsqueda Heurstica

24

A*: contornos
Si h montona, la secuencia de nodos expandidos tiene
0+2 (1)

f no decreciente
(2) 1+1 (3) 1+1 1+3 (8)

(4) 2+1 (6) 3+1 4+1 5+0

(5) 2+1 (7) 3+1 4+1 3+1 (10) 4+0 (11)


Bsqueda Heurstica

2+2 (9) 3+2 4+1 5+0


25

A*: contornos
Nodos estticamente ordenados por f
f2 f3 f1

Si h montona, A* expande todos los nodos en el nivel fi antes de expandir los de fi+1
f5
Bsqueda Heurstica 26

f4

A* resumen
A* = primero el mejor con f(n) = g(n) + h(n) Completo Si h admisible, A* encuentra solucin ptima
Heursticas ms informadas menos nodos Si h no es admisible por , A* se pasa en solucin ptima por

No hay otro algoritmo que lo haga mejor con la misma informacin Degenera en consumo exponencial de memoria
Bsqueda Heurstica 27

También podría gustarte