2. Búsqueda A*
(A Star)
Algoritmo:
1.Crear una lista con el nodo raíz.
2.Hasta que la lista esté vacía o sea alcance la meta:
Si el primer elemento es la meta, ir al paso 3.
Sino, eliminar el primer elemento de la lista y agregar sus hijos sumando
g + h(heurística 1).
Ordenar los elementos de acuerdo al costo y eliminar los repetidos de
costo mayor (heurística 2).
3.Expandir todos los nodos con costo menor que el nodo meta.
3. Búsqueda A*
(A Star)
• Definiremos una función heurística f como la suma de dos funciones
g y h:
• Función g: es una medida del coste para ir desde el estado inicial hasta el
nodo actual (suma de los costes o valores heurísticos de todos los nodos).
• Función h: es una estimación del coste adicional necesario para alcanzar un
nodo objetivo a partir del nodo actual, es decir, es una estimación de lo que
me queda por recorrer hasta la meta.
• La función combinada f una estimación del coste necesario para alcanzar un
estado objetivo por el camino que se ha seguido para generar el nodo actual
(si se puede generar por varios caminos el algoritmo se queda con el mejor).
NOTA: los nodos buenos deben poseer valores bajos
4. Búsqueda A*
(A Star)
• Usaremos dos listas de nodos (ABIERTA Y CERRADA)
• Abierta: nodos que se han generado y a los que se les ha aplicado la
función heurística, pero que aún no han sido examinados (es decir, no
se han generado sus sucesores). Es decir, es una cola con prioridad
en la que los elementos con mayor prioridad son aquellos que tienen
un valor más prometedor de la función heurística.
• Cerrada: nodos que ya se han examinado. Es necesaria para ver si
cuando se genera un nuevo nodo ya ha sido generado con
anterioridad.
5. Ejemplo
• Un sistema puede encontrarse en un conjunto de estados {S0, …., S8}.
Su estado inicial es S0 y los estados meta, S7y S8. Considérense los
siguientes operadores y costes asociados a cada operador:
OP1: S3→S8(coste 5) OP2: S2→S3(coste 25) OP3: S5→S3(coste 20)
OP4: S1→S2(coste 100) OP5: S4→S2(coste 80) OP6: S6→S7(coste 100)
OP7: S0→S1(coste 10) OP8: S0→S4(coste 10) OP9: S0→S5(coste 20)
OP10: S0→S6(coste 20)
• Considérense también los siguientes valores de la función heurística
h, que estima el menor coste desde cada nodo a un nodo meta:
h(S0) = 40 h(S3) = 10 h(S6) = 110
h(S1) = 20 h(S4) = 40 h(S7) = 0
h(S2) = 20 h(S5) = 100 h(S8) = 0
6. • Se tiene a S0 como nodo
inicial y a S1, S4, S5 y S6
como los nodos
directamente conectados
a el.
7. • Se agregan al recorrido
los nodos directamente
conectados a S0 junto
con sus costes (función
g(s) y con los valores de
la función heurística h(s).
• Se obtienen los valores
para la función f(s)
sumando los valores de
g(s) y h(s) que en este
caso serian: f(s1) =
30, f(s4) = 50, f(s5) = 120
y f(s6) = 130.
8. • El recorrido se continua
por el nodo cuya función
f(s) haya sido la menor.
En este caso es el nodo
S1 con función f(s) = 30.
• Se agregan los nodos
directamente conectados
a S1.
• El nodo agregado fue S2.
Se evalúa la función f(s)
que da como resultado
f(S2) = 120.
9. • Es necesario evaluar si
existe una mejor forma de
hacer el recorrido hasta el
nodo S2. para esto es
necesario saber si existen
otros nodos conectados
con S2, en este caso
existe uno el cual es S4.
• Se evalúa la función f(s)
para el recorrido desde
S4 hasta S2 calculando la
suma de g(s) + h(s). El
resultado de la operación
es 80 + 20 = f(S2) = 100.
10. • Se comprueba que el
recorrido entre S4 y S2
es mejor y se descarta el
recorrido de S1 a S2.
• Se agregan los nodos
directamente conectados
a S2. Para este caso se
tiene que S3 esta
directamente conectado.
• Se evalúa la función f(S3)
que resulta tener un valor
de 35.
11. • Como en el caso anterior
es necesario evaluar si
existen rutas alternas
para llegar a S3. Existe
una ruta que va desde S5
hasta S3.
• Se calcula el valor para
f(s) en el recorrido de S5
a S3. el resultado es f(S3)
= 30.
12. • Al existir una mejor ruta
para llegar a S3 se
descarta la que fue
anteriormente encontrada
y se sigue la nueva ruta.
• Se agregan los nodos
conectados a S3 y se
encuentra el nodo S8 el
cual es una meta con
valor h(S8) = 8 y cuyo
recorrido desde S3 da
como resultado 5 para la
función f(s).
• El algoritmo termina
cuando se encuentra una
meta. El coste total del
recorrido es de 20 + 20 +
5 = 45.
13. • El algoritmo termina
cuando se encuentra una
meta. El coste total del
recorrido es de 20 + 20 +
5 = 45.