Вы находитесь на странице: 1из 8

Asignatura: Inteligencia Artificial

Conferencia # 7: Bsqueda heurstica


Analicemos el problema del vendedor ambulante. Para resolverlo usando alguna de las tcnicas de bsqueda
a ciegas estudiadas, se explorara el rbol de todos los posibles caminos y se devolvera aquel de menor
longitud. Si existen N ciudades, el nmero de caminos diferentes entre ellas es (N-1)!. Explorar cada camino
nos tomara un tiempo proporcional a N y, por tanto, el tiempo total sera proporcional a N!. Tomando 10
ciudades tardaramos un tiempo de 10!=3 628 000 para solucionar el problema. Este fenmeno se llama
explosin combinatoria.
Para solucionar eficientemente la mayora de los problemas difciles, a menudo es necesario comprometer
los requerimientos de movilidad y sistematicidad, y construir una estructura de control que, aunque no nos
garantice que encontremos la mejor respuesta, por lo menos proporcione una respuesta suficientemente buena.
1. Definicin de heurstica.
La palabra heurstica viene del griego heuriskein que significa descubrir. Ella es tambin el origen de
eureka, que se deriva de la famosa exclamacin de Arqumedes eureka (lo encontr), que lanz al descubrir
un mtodo para determinar la pureza del oro. Otro libro dice que fue cuando Arqumedes sali desnudo
corriendo por la calle gritando eureka cuando descubri el principio de flotacin mientras estaba en el bao.
Feigenbaum y Feldman la definen as: Una heurstica (regla heurstica o mtodo heurstico) es una regla para
engaar, simplificar o para cualquier otra clase de ardid, la cual limita drsticamente la bsqueda de
soluciones en grandes espacios de solucin.
La posibilidad de efectuar la bsqueda de una forma ms eficiente se basa en el uso de alguna informacin
especfica para el problema a solucionar. Esta informacin, aunque imprecisa e incompleta, permite distinguir
cules de los nodos dirigen mejor el avance hacia la meta y permite realizar este avance siempre en la
direccin que momentneamente tiene la mejor perspectiva. Se llama bsqueda heurstica a los mtodos de
bsqueda que usan este tipo de informacin. Precisamente por esto a estos mtodos, generalmente, se les
llaman mtodos fuertes. Las tcnicas heursticas son como las guas tursticas: son buenas cuando apuntan a
direcciones interesantes y son malas cuando apuntan a callejones sin salida. Usando buenas tcnicas
heursticas, podemos esperar lograr buenas soluciones a problemas difciles, como el del vendedor ambulante,
en un tiempo menor que el exponencial.
Analicemos un ejemplo de heurstica. Supongamos que un hombre se encuentra en una extensa llanura y
tiene sed. Caminando ha llegado a una pequea elevacin que es la nica en esa regin y se sube a ella. Su
objetivo es, por supuesto, encontrar agua. Desde la elevacin el hombre observa el panorama que se presenta
en la figura 1. Qu direccin debe seguir para hallar el agua?. Evidentemente la vegetacin verde es un
indicio de que en esa zona hay humedad, por lo que es muy probable que exista agua en la superficie o
subterrnea. Por otro lado, el movimiento de animales puede indicar que ellos se dirigen all a beber, por lo
que, posiblemente, el agua est en la superficie. El hombre, al usar esta informacin, puede decidir dirigirse
primero hacia el norte, y si no encuentra solucin, o sea, no halla agua, dirigirse al oeste. En este caso, la
vegetacin verde y el movimiento de animales han sido utilizadas como heurstica.
Argumentos a favor del uso de tcnicas heursticas
- Sin ellas estaramos atrapados en la explosin combinatoria.
- Pocas veces necesitamos la solucin ptima, usualmente una buena aproximacin satisface nuestras
exigencias. De hecho, en la vida real las personas, generalmente, no buscan la mejor solucin a un problema;
tan pronto como encuentran una, abandonan la bsqueda. Por ejemplo, al tratar de parquear un carro, cuando
se encuentra un espacio disponible se parquea, aunque ms adelante exista uno mejor.
- Aunque las aproximaciones producidas por ellas pueden, en el peor de los casos, no ser muy buenas, los
peores casos surgen raramente en el mundo real.
Esto conduce a otra forma de definir la I.A., como el estudio de tcnicas para resolver problemas
exponencialmente difciles en un tiempo polinomial explotando el conocimiento sobre el dominio del
problema.

NORTE
Vegetacin verde
Movimiento de animales
OESTE
Vegetacin verde

ESTE
HOMBRE

Vegetacin amarilla

SUR
Vegetacin amarilla

Fig. 1. Panorama visto por el hombre desde la elevacin.


Formas de incorporar la informacin heurstica en un procedimiento de bsqueda
- En las reglas mismas. Por ejemplo, las reglas para el problema del ajedrez pueden describir no solamente el
conjunto de movimientos legales, sino tambin un conjunto de movimientos sensatos segn el escritor de
las reglas.
- Como una funcin heurstica que evale los estados individuales del problema y determine hasta qu punto
son deseables. Las funciones heursticas bien diseadas guan eficientemente el proceso de bsqueda en la
direccin ms provechosa. El programa que las utilice puede intentar minimizar dicha funcin o maximizarla
segn sea apropiado. Ejemplos de funciones heursticas son las siguientes:
Ajedrez: la ventaja de piezas nuestras sobre el oponente.
Rompecabezas de 8 piezas: el nmero de baldosas colocadas correctamente.
Vendedor Ambulante: la suma de las distancias recorridas hasta ahora o tomar la distancia ms pequea de
entre las de los sucesores del nodo actual.
Titafor: Puntuacin otorgada de la siguiente forma: un punto para cada fila, columna o diagonal en donde
podamos ganar y en la que tengamos una pieza y dos puntos para cada fila, columna o diagonal que sea
posible ganadora y en la que tengamos 2 piezas.
El papel exacto de las funciones heursticas se estudiarn en cada uno de los mtodos de bsqueda heurstica.
2. Bsqueda avara (greedy).
Este mtodo consiste en realizar en cada momento la transicin hacia el estado que se encuentre ms cerca del
estado objetivo. Para esto se define una funcin heurstica que estime el costo de llegar de un estado al estado
objetivo. Esta funcin heurstica h puede ser cualquiera, pero debe cumplir que h(n) = 0 si n es el nodo
objetivo.
Ejemplo: Bsqueda de la ruta ms corta entre las ciudades Santiago y Morn. (Ver figura 2. ) Supongamos
que h es la distancia en lnea recta entre las dos ciudades. La ruta sera: Stgo, Bayamo, Holgun, Morn.
En general este mtodo tiene un comportamiento bastante bueno y logra la solucin de forma rpida.
Deficiencias de la bsqueda avara
- No siempre la solucin encontrada es la ptima. Ver ejemplo anterior. Note que esta ruta no es la ptima
(la mejor sera Stgo, Bayamo, Tunas, Camagey, Morn que tiene 32 km menos).
- Es incompleta, pues puede recorrer una ruta infinita y nunca llegar a la solucin. Ejemplo: si se quisiera
la ruta entre Mtzas y Morn, la funcin heurstica aconseja tomar primero C.Hab. que conduce a un
callejn sin salida pues se mantiene todo el tiempo entre estas dos ciudades. Este problema de que puede

no terminar nunca, se debe a que como el algoritmo slo almacena el estado actual no tiene manera de
saber dnde ha estado y puede caer en un ciclo. Una forma de solucionar esta dificultad es mantener una
lista de estados visitados y nunca revisitar uno de stos, lo cual garantiza que el algoritmo terminar
siempre que el espacio de estados del problema sea finito.
Contramaestre
75
Stgo

151
Bayamo
140
80

118
Palma 111

138
San Luis

C. Hab.
99

97
Tunas

87

Holgun

92

211
101

Camagey

Mtzas

85

142

Las Villas

Ciego

Morn

Distancia en lnea recta a Morn: Stgo( 366), Contramaestre(374), Palma(329), Bayamo(253), Holgun(178),
Tunas(193), Camagey(101), C.Hab(224), Mtzas(226), Las Villas(299), San
Luis(160).
Figura 2. Problema de la ruta entre Stgo y Morn.
3. Bsqueda por el mejor nodo (best-first search).
La bsqueda por el mejor nodo es una forma de combinar las ventajas de las bsquedas en profundidad y de
anchura en un nico mtodo. En cada paso del proceso de bsqueda por el mejor nodo, seleccionamos el ms
prometedor de aquellos nodos que se han generado hasta el momento. Esto se realiza aplicando una funcin
heurstica apropiada a cada uno de ellos. Entonces expandimos el nodo elegido usando las reglas para generar
a sus sucesores. Si uno de ellos es una solucin podemos terminar. Si no, todos esos nodos se aaden al
conjunto de nodos generados hasta ahora. Se selecciona de nuevo el ms prometedor y el proceso contina.
Lo que sucede usualmente es que se realiza un proceso de bsqueda en profundidad mientras se explora una
rama prometedora. Como ocasionalmente no se encuentra solucin, se explora otra rama previamente
ignorada y que ahora parece ms prometedora.
En este mtodo de bsqueda la funcin heurstica que estima los mritos de cada nodo generado est
definida como:
f(n) = g(n) + h(n),
donde g(n) es una medida del costo del camino desde el nodo inicial al nodo actual n y h(n) es un estimado
del costo adicional de llegar desde el nodo n al nodo meta. g(n) no es, necesariamente, el costo del camino
ptimo desde el nodo inicial al nodo actual, pues puede haber caminos mejores no recorridos todava. g(n)
simplemente se calcula como la suma de los costos de los arcos del camino actual. La funcin h(n), sin
embargo, es tpicamente heurstica y explota el conocimiento sobre el domino del problema, ya que el
mundo entre el nodo n y el meta no ha sido explorado. Por supuesto, no existe un mtodo general para
construir h(n), sino que depende del problema particular.
Al algoritmo de bsqueda que utiliza la funcin f(n) se le llama algoritmo A. Este algoritmo no garantiza
encontrar el camino ptimo a la solucin, pues ste slo calcula un estimado del costo para alcanzar el nodo
objetivo.
Se puede definir la funcin f*(n) que, en cualquier nodo n, calcule el costo real del camino ptimo desde el
nodo inicial al nodo n (g*(n)) ms el costo del camino ptimo desde el nodo n al nodo objetivo (h*(n)), es
decir
f*(n) = g*(n) + h*(n),
donde h*(n) es una funcin de evaluacin heurstica admisible, o sea, n h*(n) es menor o igual que la
distancia real mnima a la meta. Es precisamente por esto que el algoritmo que usa este estimador garantiza

siempre encontrar, si existe, el camino ptimo a la solucin. A este algoritmo se le conoce con el nombre de
algoritmo A*.
La figura 3 muestra el principio de un procedimiento de bsqueda por el mejor nodo. Los nmeros que
aparecen al lado de los nodos son los valores de f(n). Note cmo en cada paso se selecciona el nodo de menor
valor de f(n), generando sus sucesores.
Paso 1

Paso 2

Paso 3

A
(3) B

(5) C

A
(1) D

(3)

(5) C

(4) E
Paso 4
A
B
(6) G

(5) H

(5)

C
(4)

(6) F

Paso 5

D
E

(6) F

B
(6) G

(5)

(5) C
H
(2)

D
E

(1)

(6) F
J

Fig. 3. Un ejemplo de bsqueda por el mejor nodo.


Para implementar este algoritmo hay que mantener, adems de la lista de nodos visitados, una lista de nodos
generados pero no visitados. Esta lista permite al algoritmo retomar un camino que fue abandonado
temporalmente por otro que pareca ms promisorio. Este mtodo de bsqueda consiste en: el mejor nodo de
la lista de nodos generados y no visitados (inicialmente el nodo raz) se expande generando sus sucesores y se
colocan en la lista de nodos visitados; la funcin de evaluacin heurstica se aplica a todos los sucesores y
ellos son insertados en la lista de nodos no visitados en orden de su costo. En el ciclo siguiente se selecciona
el mejor nodo de esta lista para ser procesado.
Algoritmo
Nodo:= Nodo Inicial
While not Objetivo(Nodo) do
Begin
Colocar Nodo en la lista de nodos visitados;
Para cada sucesor de Nodo do
Insertar en cola de prioridades segn f a (Sucesor, f(sucesor)); -> Lista de nodos no visitados
Nodo:= cabeza de la cola de prioridades;
End;
Por ejemplo, para el problema del rompecabezas de 8 piezas puede tomarse h*(n) como el nmero de piezas
que no estn en su posicin final. Otra variante, que contiene ms informacin heurstica pero requiere ms
clculos, es la suma de las distancias desde la posicin actual de cada pieza a su posicin correcta.

Ejemplo: Veamos nuevamente la figura 2. Si usamos como h la misma funcin anterior y como g la suma de
los costos (distancias) de las respectivas carreteras veremos como en este caso, el algoritmo A* s obtiene la
ruta ptima Stgo, Bayamo, Tunas, Camagey, Morn. El rbol desarrollado est en la figura 4.
Stgo
Bayamo
140+253
= 393
Stgo
280+366
= 646 Contram. Tunas
291+374 220+193
= 413
= 665
Bayamo
300+253
= 553

San Luis
358+160
= 518

Palma
Contramaestre
118+329 75+374
= 447
= 449
Holgun
239+178
= 417

Camagey
317+101
= 418

Morn

Figura 4. Algoritmo A* para el problema de la ruta Stgo- Morn.


Podemos hacer algunas observaciones interesantes sobre este algoritmo:
- Al incorporar g* en f* no siempre se elige como el siguiente nodo a expandir el que parece ms cercano a la
meta. Esto es til si nos preocupa el camino que elijamos. Si slo nos importa llegar a una solucin de la
forma que sea, ponemos g*=0 y con esto estamos eligiendo el nodo ms cercano a la meta (bsqueda avara).
Si queremos encontrar un camino en el menor nmero de pasos, entonces ponemos el costo de un nodo a su
sucesor constante igual a 1. Si el costo de los operadores vara, se refleja en cada nodo y se calcula el camino
de costo mnimo.
- Cuando h* = 0 y g* = d, donde d es el nivel de profundidad del nodo, el algoritmo A* es idntico al mtodo
de bsqueda primero a lo ancho.
En Bratko puede verse la implementacin de este algoritmo en PROLOG, as como su aplicacin para el
problema del rompecabezas de 8 piezas. En Rich 1era edicin pg. 87-93 puede verse bien desarrollado el
algoritmo A* para realizar la bsqueda por el mejor nodo en un problema de grafos.
La principal desventaja del algoritmo A* es el requerimiento de memoria para mantener la lista de nodos
generados no procesados, por lo que, en este aspecto, este algoritmo no es ms prctico que la bsqueda
primero a lo ancho. Una variante del mismo es:
- Mantener slo en la lista de nodos no visitados los mejores n nodos. El costo de esta tcnica es la prdida
de la solucin ptima, pues un nodo malo localmente se puede sacar de la lista y l podra conducir al ptimo
global. Esta tcnica se conoce como beam search.
4. Bsqueda heurstica en rboles y/o o algoritmo AO*.
Para encontrar soluciones en un rbol y/o necesitamos un algoritmo similar al A*, pero con la capacidad de
manejar los arcos Y apropiadamente. Este algoritmo debera encontrar un camino desde del nodo inicial a un
conjunto de nodos que representan los estados meta. Ntese que puede ser necesario obtener ms de un estado
meta, pues cada rama de un arco Y puede conducir a su propio nodo meta.
Para ver por qu el algoritmo A* no es adecuado para la bsqueda en rboles y/o, consideremos la figura 5.
Los nmeros representan el valor de f* en cada nodo. El problema radica en que la eleccin del nodo a
expandir no slo depende del valor de f* en ese nodo, sino tambin de si ese nodo es parte del mejor camino
actual a partir del nodo inicial. El nodo simple ms prometedor es C, pero no forma parte del mejor camino
actual, pues hay que incluir al nodo D.

A
(7)
(5) B

(3) C

(4) D

Fig. 5. Un rbol y/o donde no es posible utilizar A*.


Los nodos de un rbol y/o pueden ser clasificados en:
- nodos primitivos: son los que se corresponden con problemas que se resuelven directamente.
- nodos muertos: son los que se corresponden con problemas no descomponibles y que no tienen solucin.
- nodos intermedios.
Para cada uno de ellos el estimado heurstico h*(n) se puede definir como:
- Si n es un nodo primitivo, entonces h*(n) = 0
- Si n es un nodo muerto, entonces h*(n) =
- Si n es un nodo intermedio con j conectores, entonces h*(n) es el mnimo de los costos calculados para
cada uno de los j conectores. Si el conector es Y, entonces su costo es

(cos to(n, n

) + h * ( nk )),

donde k es el nmero de nodos del conector. Si por el contrario, el conector es O, entonces su costo es
costo(n, nk) + h*(nk).
Para estimar la bondad de un nodo slo se usa h*. No se usa g* como en el algoritmo A*, pues no es posible
calcular tal valor nico, ya que puede haber muchos caminos para un mismo nodo y adems, tampoco es
necesario, porque la travesa hacia abajo del mejor camino conocido garantiza que slo aquellos nodos que
estn en el mejor camino sern considerados para la expansin.
Si quisiramos implementar este algoritmo usando un grafo y/o es necesario realizar tres cosas en cada paso:
- Atravesar el grafo comenzando por el nodo inicial y siguiendo el mejor camino actual, acumulando el
conjunto de nodos que van en ese camino y an no han sido expandidos.
- Seleccionar uno de estos nodos no expandidos y expandirlo. Aadir sus sucesores al grafo y calcular h* para
cada uno de ellos.
- Cambiar la h* estimada del nodo recientemente expandido para reflejar la nueva informacin proporcionada
por sus sucesores. Propagar este cambio hacia atrs a travs del grafo. Para cada nodo que se visita mientras
se va avanzando en el grafo, decidir cul de sus arcos sucesores es ms prometedor y marcarlo como parte del
mejor camino actual, lo cual cambiar el mejor camino actual.
En Rich 1era edicin puede verse los pasos de este algoritmo expresados ms detalladamente. Bratko contiene
una implementacin del mismo en PROLOG.
La figura 6 muestra un ejemplo de una traza de este algoritmo. Los nmeros entre parntesis indican el valor
de h* en los nodos y los que no tienen parntesis, indican los costos de los arcos. Los nodos encerrados entre
dos crculos son nodos primitivos.
El algoritmo AO* no sirve cuando entre los subproblemas hay interacciones.
Diferencias entre el algoritmo A* y el AO*
En el algoritmo A* el camino deseado de un nodo a otro siempre era el de menor costo. Pero ste no es
siempre el caso cuando se est buscando en un rbol y/o. Un ejemplo de esto se muestra en la figura 7. El
nuevo camino al nodo 5 es ms largo que yendo a travs del nodo 3. Pero el camino por el nodo 3 no lleva a
solucin, pues necesita tambin una solucin del nodo 4, la cual no existe. Por tanto el camino a travs del
nodo 10 es mejor.

Paso 1

Paso 2

a
1

a (2)
3

(1) b

(3)
Paso 3
1
(3) b
1
d

Paso 4

a (4)
3

1
c (3)

(9) b
1

(0) (1) e

a (6)
3
c (3)

d (0)

e (7)
6
(1) h

Paso 5
1
(9) b
1
(0) d

a (8)
3
1

(7) e
6
(1) h

c (5)
1

f (2)
2 3

g (0)

(0) i

j (1)

Fig. 6. Una traza del algoritmo AO*.


1
2
7

3
8

nodo muerto

10

Fig. 7. Ejemplo que muestra las diferencias entre A* y AO*.


5. Bsqueda por ascenso de cima (hill-climbing).
[Tomado de Data Mining. Pieter Adriaans, Dolf Zantinge. Addison-Wesley longman 1996 y de IA: un
enfoque moderno]

Es de ascenso de cima si la funcin de evaluacin de estado expresa calidad y se llama de disminucin de


gradiente si esta funcin es de costo.
Una popular metfora para esta bsqueda es el canguro en la niebla. Suponga un canguro en un lugar
desconocido con la tarea de encontrar la cima ms alta. Como hay poca visibilidad por la niebla, l identifica
el punto ms alto que l ve y hacia all salta. Desde esta nueva posicin repite el proceso hasta que no haya un
punto ms alto. Por supuesto, no garantiza el ptimo; depende de las caractersticas del relieve concreto. Si el
relieve es suave y existe un ptimo visible se llega a l. Pero si es suave y existen muchos puntos similares
puede no llegarse. Lo mismo ocurre si existen muchos picos altos y el relieve es muy abrupto. En estos casos
se llega a ptimos locales. Una solucin es el paralelimo: colocar varios canguros que exploren el espacio de
bsqueda. La posibilidad de que uno alcance el punto ms alto aumenta.
El algoritmo hill-climbing es un algoritmo de mejoramiento iterativo. Ellos se caracterizan porque la misma
descripcin del estado contiene toda la informacin necesaria para encontrar una solucin. Es irrelevante la
ruta a travs de la cual se obtiene la solucin. La idea bsica consiste en empezar con una configuracin
completa y efectuar modificaciones para mejorar su calidad.
Algoritmo
1- Actual:= Estado inicial del problema
2- Siguiente:= sucesor de actual con mayor valor
3- Si valor(siguiente) < valor(actual) ent
Devuelve actual y TERMINAR
sino
Actual:= siguiente
Ir al paso 2.
Este algoritmo termina cuando se llega a un punto donde no se puede obtener un mejor valor. Al
implementarse se hace con un ascenso de cima con reinicio aleatorio, es decir, se ejecuta el algoritmo varias
iteraciones comenzando desde estados iniciales generados aleatoriamente y se guarda el mejor estado
producido.
Desventajas:
- Mximos locales: Es una cima cuya altura es inferior a la cima ms alta de todo el espacio de estados.
Una vez que ha alcanzado un mximo local, el algoritmo para, aunque esta solucin est muy lejos de ser
satisfactoria.
- Planicie: son reas del espacio de estados en donde la funcin de evaluacin bsicamente es plana. La
bsqueda realizar un paseo al azar. En todos los estados la funcin de evaluacin da un valor muy
similar y entonces se escoger cualquiera.
Por ejemplo: en el problema de las 8 reinas se empieza con 8 reinas situadas en el tablero y se procede,
entonces a desplazar las reinas buscando disminuir la cantidad de posibles ataques. Los operadores seran
mover las reinas a otra posicin de su columna de manera que la cantidad de ataques sea mnima.

Вам также может понравиться