“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
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.