26.04.2013 Views

“Búsqueda Heurística” (1ª parte) - Grupo de Inteligencia Artificial

“Búsqueda Heurística” (1ª parte) - Grupo de Inteligencia Artificial

“Búsqueda Heurística” (1ª parte) - Grupo de Inteligencia Artificial

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Tema 2: Agentes basados en Búsqueda<br />

Resumen:<br />

2. Agentes basados en búsqueda<br />

2.1. Búsqueda en espacios <strong>de</strong> estados<br />

2.2 Búsqueda no-informada<br />

2.3. Búsqueda heurística<br />

2.4. Búsqueda multiagente<br />

2.5. Búsqueda con espacios estructurados<br />

– 2 –<br />

<strong>Inteligencia</strong> <strong>Artificial</strong><br />

4º Ing. Sup. Inf.


Búsqueda en amplitud: análisis<br />

Ventajas:<br />

• completo:<br />

– siempre se encuentra un nodo meta si existe<br />

• óptimo (para operadores <strong>de</strong> coste uno):<br />

– siempre se encuentra el nodo meta menos profundo<br />

Problemas:<br />

• Complejidad<br />

– exponencial en espacio y en tiempo incluso en el<br />

mejor caso<br />

• Optimalidad (para el problema general)<br />

– No es óptimo para operadores cualesquiera<br />

– 3 –<br />

<strong>Inteligencia</strong> <strong>Artificial</strong><br />

4º Ing. Sup. Inf.


Estado: estancia en una ciudad<br />

Coste <strong>de</strong> un operador: distancia por<br />

carretera a la ciudad vecina<br />

Problema <strong>de</strong> encontrar rutas<br />

Ora<strong>de</strong>a<br />

Zerind 71<br />

75<br />

151<br />

Arad<br />

140<br />

Sibiu 99<br />

118<br />

80<br />

Rimnicu<br />

Timisoara<br />

97<br />

Neamt<br />

Fagaras<br />

211<br />

87<br />

142<br />

Iasi<br />

92<br />

Vaslui<br />

111<br />

70<br />

75<br />

Dobreta<br />

Lugoj<br />

146<br />

Mehadia<br />

120<br />

Pitesti<br />

138<br />

Caiova<br />

101<br />

98<br />

85<br />

Urziceni<br />

Bucarest<br />

90<br />

Giurgiu<br />

Hirsova<br />

86<br />

Eforie<br />

– 4 –<br />

Operadores: ir a una ciudad vecina<br />

Coste <strong>de</strong> un plan: suma <strong>de</strong> distancias<br />

entre las ciuda<strong>de</strong>s visitadas<br />

<strong>Inteligencia</strong> <strong>Artificial</strong><br />

4º Ing. Sup. Inf.


118<br />

Z<br />

75<br />

A<br />

T<br />

71<br />

111<br />

75<br />

D<br />

O<br />

140<br />

70<br />

L<br />

M<br />

Problema:<br />

Problema <strong>de</strong> encontrar rutas: ejemplo<br />

151<br />

120<br />

S<br />

80<br />

R<br />

146<br />

C<br />

99<br />

97<br />

138<br />

P<br />

F<br />

101<br />

211<br />

G<br />

90<br />

B<br />

– 5 –<br />

N<br />

85<br />

• los métodos <strong>de</strong> búsqueda no informados encuentran el nodo meta <strong>de</strong><br />

menor profundidad; éste pue<strong>de</strong> no ser el nodo meta <strong>de</strong> coste mínimo<br />

U<br />

87<br />

142<br />

I<br />

98<br />

92<br />

V<br />

H<br />

86<br />

E<br />

Ejemplo:<br />

• p 1 = A-S-F-B<br />

c(p 1 ) = 450<br />

• prof.(B p1 ) = 3 < 4 = prof.(B p2 ) / c(p1) = 450 > 418=c(p2)<br />

• p 2 = A-S-R-P-B<br />

c(p 2 ) = 418<br />

<strong>Inteligencia</strong> <strong>Artificial</strong><br />

4º Ing. Sup. Inf.


Búsqueda <strong>de</strong> coste uniforme:<br />

• Inglés: uniform cost search<br />

• I<strong>de</strong>a:<br />

Búsqueda <strong>de</strong> coste uniforme<br />

– guiar la búsqueda por el coste <strong>de</strong> los<br />

operadores<br />

• Método:<br />

– g(n): coste mínimo para llegar<br />

<strong>de</strong>l nodo inicial al nodo n<br />

– expandir siempre el nodo <strong>de</strong> menor<br />

coste g primero<br />

• Algoritmo:<br />

– almacenar cada nodo con su valor g<br />

– insertar los nuevos nodos en abierta<br />

en or<strong>de</strong>n ascen<strong>de</strong>nte según su valor g<br />

– 6 –<br />

{búsqueda <strong>de</strong> coste uniforme}<br />

abierta ← s 0<br />

Repetir<br />

Si vacío?(abierta) entonces<br />

<strong>de</strong>volver(negativo)<br />

nodo ← primero(abierta)<br />

Si meta?(nodo) entonces<br />

<strong>de</strong>volver(nodo)<br />

sucesores ← expandir(nodo)<br />

Para cada n∈ sucesores hacer<br />

n.padre ← nodo<br />

ordInsertar(n,abierta,g)<br />

Fin {repetir}<br />

<strong>Inteligencia</strong> <strong>Artificial</strong><br />

4º Ing. Sup. Inf.


R<br />

g=220<br />

Ejemplo: Búsqueda <strong>de</strong> coste uniforme<br />

S<br />

g=140 g= 118<br />

A O F<br />

g=280 g=291 g =239<br />

S P C g=366<br />

g=300 g=317<br />

B<br />

g = 0<br />

T M<br />

g = 340 g= 299<br />

– 7 –<br />

Z<br />

g =75<br />

L A<br />

g=229 g=236<br />

. . .<br />

Z S<br />

g = 212 g= 292<br />

O A g=150<br />

g=146<br />

S Z T g=268<br />

g=290 g=225<br />

O A<br />

g=283 g=287<br />

O A<br />

g=296 g=300<br />

<strong>Inteligencia</strong> <strong>Artificial</strong><br />

4º Ing. Sup. Inf.


118<br />

Lógica <strong>de</strong> la búsqueda <strong>de</strong> coste uniforme<br />

Z<br />

75<br />

A<br />

T<br />

71<br />

111<br />

75<br />

D<br />

O<br />

140<br />

70<br />

L<br />

M<br />

g = 80<br />

151<br />

S<br />

120<br />

80<br />

R<br />

146<br />

C<br />

99<br />

97<br />

138<br />

P<br />

F<br />

101<br />

– 8 –<br />

211<br />

G<br />

90<br />

g = 120<br />

B<br />

N<br />

85<br />

U<br />

87<br />

142<br />

I<br />

98<br />

92<br />

V<br />

H<br />

86<br />

E<br />

g = 160<br />

<strong>Inteligencia</strong> <strong>Artificial</strong><br />

4º Ing. Sup. Inf.


Características <strong>de</strong> la búsqueda <strong>de</strong> coste uniforme<br />

Análisis:<br />

• La búsqueda <strong>de</strong> coste uniforme enumera sucesivamente todos los nodos <strong>de</strong>l<br />

espacio <strong>de</strong> estados por costes (valores <strong>de</strong> g) crecientes<br />

• La búsqueda <strong>de</strong> coste uniforme es completa:<br />

– al ser los costes números enteros positivos, la sucesión <strong>de</strong> valores <strong>de</strong> g no es acotada<br />

– por tanto, si un nodo meta existe en el espacio <strong>de</strong> estados, será expandido alguna vez<br />

• La búsqueda <strong>de</strong> coste uniforme es óptima:<br />

– Al expandir todos los nodos <strong>de</strong>l espacio <strong>de</strong> estados por valores crecientes <strong>de</strong> g,<br />

cuando se expan<strong>de</strong> el primer nodo meta, éste será el nodo meta <strong>de</strong> menor valor <strong>de</strong> g,<br />

es <strong>de</strong>cir <strong>de</strong> menor coste<br />

– 9 –<br />

<strong>Inteligencia</strong> <strong>Artificial</strong><br />

4º Ing. Sup. Inf.


Tema 2: Agentes basados en Búsqueda<br />

Resumen:<br />

2. Agentes basados en búsqueda<br />

2.1. Búsqueda en espacios <strong>de</strong> estados<br />

2.2 Búsqueda no-informada<br />

2.3. Búsqueda heurística<br />

2.4. Búsqueda multiagente<br />

2.5. Búsqueda con espacios estructurados<br />

– 11 –<br />

<strong>Inteligencia</strong> <strong>Artificial</strong><br />

4º Ing. Sup. Inf.


118<br />

Z<br />

75<br />

A<br />

T<br />

71<br />

111<br />

Función heurística para encontrar rutas<br />

75<br />

D<br />

O<br />

140<br />

70<br />

L<br />

M<br />

151<br />

120<br />

S<br />

80<br />

R<br />

146<br />

C<br />

99<br />

97<br />

138<br />

P<br />

F<br />

101<br />

211<br />

G<br />

90<br />

– 14 –<br />

B<br />

N<br />

85<br />

U<br />

87<br />

142<br />

I<br />

98<br />

92<br />

V<br />

H<br />

86<br />

E<br />

h *<br />

A 366<br />

B 0<br />

C 160<br />

D 242<br />

E 161<br />

F 178<br />

G 77<br />

H 151<br />

I 226<br />

L 244<br />

M 241<br />

N 234<br />

O 380<br />

P 98<br />

R 193<br />

S 253<br />

T 329<br />

U 80<br />

V 199<br />

Z 374<br />

<strong>Inteligencia</strong> <strong>Artificial</strong><br />

4º Ing. Sup. Inf.


I<strong>de</strong>a:<br />

Búsqueda A *<br />

• minimizar el coste estimado total <strong>de</strong> un camino en el árbol <strong>de</strong> búsqueda<br />

• combinar<br />

– el coste para llegar al nodo n (se conoce exactamente: g), y<br />

– el coste aproximado para llegar a un nodo meta <strong>de</strong>s<strong>de</strong> el nodo n<br />

(estimado por la función heurística h * )<br />

Función heurística <strong>de</strong> A * :<br />

– f (n) = g(n)+h(n): coste real <strong>de</strong>l plan (camino) <strong>de</strong> mínimo coste que pasa por n<br />

– f * (n) = g(n)+h * (n): estimación <strong>de</strong> f<br />

Estrategia A * :<br />

• entre las hojas <strong>de</strong>l árbol <strong>de</strong> búsqueda, elegir el nodo <strong>de</strong> valor f * mínimo<br />

– 15 –<br />

<strong>Inteligencia</strong> <strong>Artificial</strong><br />

4º Ing. Sup. Inf.


Algoritmo A* :<br />

• se basa en la búsqueda general<br />

• almacenar el valor g <strong>de</strong> cada nodo<br />

expandido<br />

• mantener la lista abierta or<strong>de</strong>nada<br />

por valores crecientes <strong>de</strong> f *<br />

• insertar nuevos nodos en abierta<br />

según sus valores f *<br />

El Algoritmo A *<br />

– 16 –<br />

{A*}<br />

abierta ← s 0<br />

Repetir<br />

Si vacío?(abierta) entonces<br />

<strong>de</strong>volver(negativo)<br />

nodo ← primero(abierta)<br />

Si meta?(nodo) entonces<br />

<strong>de</strong>volver(nodo)<br />

sucesores ← expandir(nodo)<br />

Para cada n∈sucesores hacer<br />

n.padre ← nodo<br />

ordInsertar(n,abierta, f * )<br />

Fin {repetir}<br />

<strong>Inteligencia</strong> <strong>Artificial</strong><br />

4º Ing. Sup. Inf.


A<br />

f * = 280+366<br />

= 646<br />

S B<br />

f * = 338+253<br />

= 591<br />

f * = 450+0<br />

= 450<br />

S<br />

f * = 140+253<br />

= 393<br />

F O R<br />

f * = 239+178<br />

= 417<br />

Ejemplo: Búsqueda A *<br />

f * = 146+380<br />

= 526<br />

– 17 –<br />

T<br />

f * = 118+329<br />

= 447<br />

f * = 220+193<br />

= 413<br />

Z<br />

f * = 75+374<br />

= 449<br />

C f P S * f = 300+253<br />

* = 366+160 f * = 317+98<br />

= 526<br />

f * = 0+366<br />

= 366<br />

f * = 414+193<br />

= 607<br />

= 415<br />

f * = 455+160<br />

= 615<br />

R C B<br />

= 533<br />

f * = 418+0<br />

= 418<br />

<strong>Inteligencia</strong> <strong>Artificial</strong><br />

4º Ing. Sup. Inf.


f *<br />

f * (n j )<br />

Valores <strong>de</strong> f * en árboles <strong>de</strong> búsqueda A *<br />

Tipos <strong>de</strong> variación <strong>de</strong> los valores <strong>de</strong> f * a lo largo <strong>de</strong> un camino <strong>de</strong>s<strong>de</strong><br />

la raíz hasta un nodo n j<br />

n 1<br />

n j<br />

f *<br />

f * (n j )<br />

n 1<br />

– 18 –<br />

n j<br />

f *<br />

f * (n j )<br />

h * consistente<br />

(a) variable (b) acotado por f * (n j ) (c) monótono creciente<br />

n 1<br />

n j<br />

<strong>Inteligencia</strong> <strong>Artificial</strong><br />

4º Ing. Sup. Inf.


Definición:<br />

Funciones heurísticas consistentes<br />

Si para todo nodo n i y todo sucesor n j <strong>de</strong> n i se cumple que<br />

h * (n i ) – h * (n j ) ≤ c(n i ,n j )<br />

entonces h * es consistente<br />

Interpretación intuitiva:<br />

• h * estima también implícitamente el<br />

coste <strong>de</strong> cada operador<br />

• h * es consistente si subestima el coste<br />

<strong>de</strong> todos los operadores<br />

Nótese:<br />

– 19 –<br />

h * (n i )<br />

h * (n i )- h*(n j )<br />

h * (n j )<br />

• Si h * es consistente, entonces también es optimista<br />

• Pero existen funciones heurísticas h * optimistas que no son consistentes<br />

n i<br />

n j<br />

n g<br />

c(n i ,n j )<br />

<strong>Inteligencia</strong> <strong>Artificial</strong><br />

4º Ing. Sup. Inf.


Monotonía <strong>de</strong> f * con función heurística consistente<br />

Lema 1: Si h * es consistente, entonces f * crece <strong>de</strong> forma monótona en<br />

todos los caminos <strong>de</strong>l árbol <strong>de</strong> búsqueda, es <strong>de</strong>cir: si n j es<br />

sucesor <strong>de</strong> n i , entonces<br />

f * (n j ) ≥ f * (n i )<br />

Prueba:<br />

h * (n j ) ≥ h * (n i ) – c(n i ,n j )<br />

h * (n j ) + g(n j ) ≥ h * (n i ) + g(n j ) – c(n i ,n j )<br />

h * (n j ) + g(n j ) ≥ h * (n i ) + g(n i ) + c(n i ,n j ) – c(n i ,n j )<br />

f * (n j ) ≥ f * (n i )<br />

Corolario 1: Sea n m el mejor nodo meta. Si h * es consistente, entonces el<br />

algoritmo A * expan<strong>de</strong> todos los nodos n i tal que<br />

f * (n i ) ≤ f * (n m )<br />

– 20 –<br />

<strong>Inteligencia</strong> <strong>Artificial</strong><br />

4º Ing. Sup. Inf.


Cota <strong>de</strong> f * con función heurística optimista<br />

Lema 2: Sea camino_a(n m ) el conjunto <strong>de</strong> nodos en el camino <strong>de</strong>s<strong>de</strong> la raíz a un<br />

un nodo meta n m cualquiera. Si h * es optimista, entonces para todos los<br />

Prueba:<br />

nodos n j ∈camino_a (n m) se verifica que<br />

f * (n j ) ≤ f * (n m )<br />

f * (n m ) = g(n m )+h * (n m ) = g(n m ) (dado que h * es optimista)<br />

= c(n i ,n 2 )+...+c(n j-1 ,n j )+c(n j ,n j+1 )+...+c(n m-1 ,n m ) (<strong>de</strong>finición <strong>de</strong> g)<br />

f * (n m ) ≥ c(n 1 ,n 2 )+...+c(n j-1 ,n j )+h(n j ) (<strong>de</strong>finición <strong>de</strong> h)<br />

f * (n m ) ≥ c(n 1 ,n 2 )+...+c(n j-1 ,n j )+h * (n j ) (dado que h * es optimista)<br />

f * (n m ) ≥ g(n j )+h * (n j ) (<strong>de</strong>finición <strong>de</strong> g y f * )<br />

f * (n m ) ≥ f * (n j ).<br />

– 22 –<br />

<strong>Inteligencia</strong> <strong>Artificial</strong><br />

4º Ing. Sup. Inf


f * (n j )<br />

f *<br />

n 1<br />

Valores <strong>de</strong> f * en árboles <strong>de</strong> búsqueda A *<br />

f *<br />

f *<br />

(a) variable (b) acotado por f * (nm ) (c) monótono creciente<br />

n j<br />

h * optimista<br />

(nodos cualesquiera)<br />

f * (n m )<br />

n 1<br />

h * optimista<br />

(nodos meta)<br />

– 23 –<br />

n j<br />

f * (n j )<br />

n 1<br />

h * consistente<br />

Corolario 2: Sea n m el mejor nodo meta, y camino_a(n i ) el conjunto <strong>de</strong> nodos<br />

n j en el camino <strong>de</strong>s<strong>de</strong> la raíz a un nodo n i cualquiera (n i incluido). Si h * es<br />

optimista, entonces el algoritmo A * expan<strong>de</strong> todos los nodos n i tal que<br />

∀n j ∈camino_a (n i ). f * (n j ) ≤ f * (n m )<br />

n j<br />

<strong>Inteligencia</strong> <strong>Artificial</strong><br />

4º Ing. Sup. Inf


Optimalidad <strong>de</strong> A *<br />

Teorema 1: Si h * es optimista, entonces el método A * es óptimo<br />

Prueba:<br />

Sean n m1 y n m2 dos nodos meta cualesquiera distintos, y n m1 el nodo meta <strong>de</strong> menor coste<br />

(es <strong>de</strong>cir: g(n m1 )


Completitud <strong>de</strong> A *<br />

Teorema 2: El método A * es completo<br />

Prueba:<br />

• sea n m un nodo meta y camino_a(n m ) el conjunto <strong>de</strong> nodos en el camino <strong>de</strong><br />

la raíz a n m . Suponga que n m no es encontrado por el método A *<br />

– ya que el número <strong>de</strong> sucesores <strong>de</strong> un nodo es finito, <strong>de</strong>be haber un camino<br />

infinito p, tal que se expan<strong>de</strong>n todos los nodos n i <strong>de</strong> p antes <strong>de</strong> n m<br />

– la secuencia <strong>de</strong> valores <strong>de</strong> g a lo largo <strong>de</strong> p aumenta estrictamente (el coste <strong>de</strong><br />

los operadores es > 0) y dado que por <strong>de</strong>finición h * (n) ≥ 0, existe algún nk en<br />

*<br />

*<br />

*<br />

p con<br />

f<br />

( n<br />

k<br />

) =<br />

g(<br />

n<br />

k<br />

) + h ( n ) ><br />

k<br />

n<br />

j ∈<br />

max<br />

camino<br />

_ a(<br />

n<br />

– el algoritmo expan<strong>de</strong> los nodos sucesivamente por valores <strong>de</strong> f * crecientes,<br />

por lo que todos los nodos en el camino a n m (incluido n m ) son expandidos<br />

antes que el nodo n k<br />

• contradicción; en consecuencia, el método A * encuentra el nodo meta n g<br />

– 25 –<br />

m<br />

[ f ( n ) ]<br />

)<br />

j<br />

<strong>Inteligencia</strong> <strong>Artificial</strong><br />

4º Ing. Sup. Inf


Ejercicio 3.1<br />

Búsqueda <strong>de</strong> coste uniforme:<br />

Aplique la búsqueda <strong>de</strong> coste uniforme para<br />

encontrar una ruta <strong>de</strong> Pitesti (P) a Fagaras (F).<br />

Desarrolle el árbol <strong>de</strong> búsqueda generado por<br />

dicho algoritmo, asumiendo que se evitan<br />

ciclos simples. Indique el valor g <strong>de</strong> cada<br />

nodo, así como el or<strong>de</strong>n en el que se expan<strong>de</strong>n<br />

los nodos.<br />

– 26 –<br />

<strong>Inteligencia</strong> <strong>Artificial</strong><br />

4º Ing. Sup. Inf.


Algoritmo A * :<br />

Ejercicio 3.2<br />

Suponga el mundo <strong>de</strong> los bloques con el estado<br />

inicial y el estado meta que se muestran al lado.<br />

Se trata <strong>de</strong> aplicar algoritmo A* a este problema,<br />

suponiendo que se filtran ciclos simples. Como<br />

función heurística consistente, use el número <strong>de</strong><br />

bloques <strong>de</strong>scolocados.<br />

a) Desarrolle el árbol <strong>de</strong> búsqueda que genera el<br />

algoritmo A*, incluyendo los valores <strong>de</strong> g, h * , y f<br />

* <strong>de</strong> cada nodo. Indique el or<strong>de</strong>n en que se<br />

expan<strong>de</strong>n los nodos<br />

b) Ponga el estado <strong>de</strong> la lista abierta en cada paso<br />

<strong>de</strong>l algoritmo<br />

– 27 –<br />

Estado inicial<br />

C<br />

A B<br />

Estado meta<br />

A<br />

B<br />

C<br />

<strong>Inteligencia</strong> <strong>Artificial</strong><br />

4º Ing. Sup. Inf.


Optimalidad <strong>de</strong>l algoritmo A *<br />

Ejercicio 3.3<br />

El grafo que se muestra al lado <strong>de</strong>scribe un<br />

problema <strong>de</strong> búsqueda. Suponga que A es el<br />

estado inicial y que F y E son estados meta.<br />

Los arcos están etiquetados con el coste real<br />

<strong>de</strong> los operadores. h * es una función heurística<br />

a) Desarrolle el árbol <strong>de</strong> búsqueda que genera el<br />

algoritmo A * . Indique el or<strong>de</strong>n en que se<br />

expan<strong>de</strong>n los nodos ¿Cuál <strong>de</strong> los nodos meta<br />

se encuentra primero?<br />

b) ¿La función heurística es consistente y/o<br />

optimista? Argumente su respuesta.<br />

– 28 –<br />

7<br />

B<br />

F<br />

4<br />

A<br />

3<br />

C<br />

D<br />

E<br />

4<br />

3<br />

h *<br />

A 8<br />

B 6<br />

C 6<br />

D 5<br />

E 0<br />

F 0<br />

<strong>Inteligencia</strong> <strong>Artificial</strong><br />

4º Ing. Sup. Inf.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!