13

Búsqueda A*

Embed Size (px)

Citation preview

Page 1: Búsqueda A*
Page 2: Búsqueda A*

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.

Page 3: Búsqueda A*

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

Page 4: Búsqueda A*

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.

Page 5: Búsqueda A*

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) = 110h(S1) = 20 h(S4) = 40 h(S7) = 0h(S2) = 20 h(S5) = 100 h(S8) = 0

Page 6: Búsqueda A*

• Se tiene a S0 como nodo inicial y a S1, S4, S5 y S6 como los nodos directamente conectados a el.

Page 7: Búsqueda A*

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

Page 8: Búsqueda A*

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

Page 9: Búsqueda A*

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

Page 10: Búsqueda A*

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

Page 11: Búsqueda A*

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

Page 12: Búsqueda A*

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

Page 13: Búsqueda A*

• El algoritmo termina cuando se encuentra una meta. El coste total del recorrido es de 20 + 20 + 5 = 45.