Академический Документы
Профессиональный Документы
Культура Документы
NORTE
Vegetacin verde
Movimiento de animales
OESTE
Vegetacin verde
ESTE
HOMBRE
Vegetacin amarilla
SUR
Vegetacin amarilla
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
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
A
(7)
(5) B
(3) C
(4) D
(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)
3
8
nodo muerto
10