Sie sind auf Seite 1von 14

Tema 2.

3: Bsqueda informada con AIMA

2. Resolucin de problemas con estrategias de bsqueda


Uso de librera AIMA para ejecutar bsquedas informadas

IA UCM, curso 2012-13

--- Mtodos informados o heursticos -- Mtodos no informados Muy ineficientes en la mayora de los casos Ante la explosin combinatoria, la fuerza bruta es impracticable Mtodos informados Orientan la bsqueda aplicando conocimiento del dominio
sobre la proximidad de cada estado a un estado objetivo, guiando as la bsqueda hacia el camino ms prometedor

eleccin informada del siguiente paso: qu nodo es ms prometedor No genera nodos no prometedores y as mejora rendimiento Puede encontrar una solucin aceptablemente buena en tiempo razonable

Evita la explosin combinatoria podando el rbol de bsqueda


Limitaciones
No garantizan encontrar solucin, aunque existan soluciones Algunos no garantizan soluciones con buenas propiedades

IA UCM, curso 2012-13

que sean de longitud mnima o de coste ptimo


Tema 2.3. (Bsqueda informada AIMA) - 2

Heursticas
Heurstica: tcnica que mejora la eficiencia de la bsqueda Pudiendo sacrificar la completitud y la optimalidad
posibilidad de fallar (no encontrar solucin, habindola) o de encontrar soluciones no ptimas

Utiliza conocimiento especfico del dominio del problema


ms all de la definicin del problema en s mismo

Proporciona consejos
Eleccin del sucesor ms prometedor de un estado Orientando acerca del orden de los sucesores de un estado Tiene efectos locales en cada paso del algoritmo

Mtodo de bsqueda heurstica Algoritmo que usa una heurstica en la bsqueda en el espacio de estados Importante seleccionar una funcin heurstica adecuada.
Cmo escoger una buena?
IA UCM, curso 2012-13 Tema 2.3. (Bsqueda informada AIMA) - 3

Funcin heurstica
Funcin heurstica h'
Asocia a cada estado del espacio de estados una cierta cantidad numrica que evala de algn modo lo prometedor que es ese estado para alcanzar un estado objetivo Esto sirve para seleccionar el estado con mejor valor heurstico Dos posibles interpretaciones
Estimacin de la "calidad" de un estado

Los estados de mayor valor heurstico son los preferidos Los estados de menor valor son los preferidos Un cambio de signo permite pasar de una perspectiva a la otra

Estimacin de la cercana / distancia de un estado a un estado objetivo

Ambos puntos de vista son complementarios

Convenio: asumiremos la 2 interpretacin


Valores no negativos, el mejor es el menor, objetivos valor heurstico 0

IA UCM, curso 2012-13

Tema 2.3. (Bsqueda informada AIMA) - 4

Ejemplo: heursticas para el 8-puzzle

Estado inicial

Estado objetivo

IA UCM, curso 2012-13

Tema 2.3. (Bsqueda informada AIMA) - 5

Ejemplo: heursticas para el 8-puzzle


ha = suma las distancias de las fichas a sus posiciones en el tablero objetivo Como no hay movimientos en diagonal, se suman las distancias horizontales y verticales Llamada distancia de Manhattan, distancia taxi o distancia en la ciudad
Ejemplo: 1+1+0+0+0+1+1+2 = 6

hb = n de fichas descolocadas (respecto al tablero objetivo) Es la heurstica ms sencilla y parece bastante intuitiva
Ejemplo: 5

Pero no usa la informacin relativa al esfuerzo (n de movimientos) necesario para llevar una ficha a su sitio
IA UCM, curso 2012-13 Tema 2.3. (Bsqueda informada AIMA) - 6

Ejemplo: heursticas para el 8-puzzle


Ninguna de estas dos heursticas le da la importancia que merece a la dificultad de la inversin de fichas
Si 2 fichas estn dispuestas de forma contigua y han de intercambiar sus posiciones, ponerlas en su sitio supone ms de 2 movimientos

hc = el doble del n de pares de fichas a invertir entre s


Esta heurstica tambin es pobre, puesto que se concentra demasiado en un cierto tipo de dificultad En particular, tendrn valor 0 muchos tableros que no son el objetivo Lo que suele hacerse con este tipo de heursticas es incorporarlas a la funcin heurstica final
Ejemplo: 2*1 = 2 1 8 7
IA UCM, curso 2012-13

2 5

3 4 6
Tema 2.3. (Bsqueda informada AIMA) - 7

Ejemplo: heursticas para el 8-puzzle


hd (n) = ha (n) + hc (n)
Es la heurstica ms fina, pero requiere un mayor esfuerzo de clculo An podra mejorarse...

ha
6

hb
5

hc
0

hd
6

IA UCM, curso 2012-13

Tema 2.3. (Bsqueda informada AIMA) - 8

--- Bsquedas primero el mejor -- Primero el aparentemente mejor, el nodo ms prometedor Si supiramos cul es el mejor nodo para expandir en cada paso, esto no sera una bsqueda sino una marcha directa al objetivo Seleccin del siguiente nodo a expandir en base a
una funcin de evaluacin f '(n) que tenga en cuenta una estimacin del coste h(n) necesario para llegar a una solucin a partir de ese nodo n

Se usa una estimacin en lugar de criterios fijos (1 profundidad o anchura) El nodo seleccionado ser aquel que minimice la funcin de evaluacin Gestin de abiertos: cola de prioridad, ordenada por el valor de la funcin de evaluacin Asumiremos que el coste de los operadores nunca puede ser negativo

IA UCM, curso 2012-13

Tema 2.3. (Bsqueda informada AIMA) - 9

Bsquedas primero el mejor


La funcin f ' puede ser bsicamente de dos tipos: 1. Una funcin que considere exclusivamente lo que falta el coste mnimo estimado para llegar a una solucin a partir del nodo n f '(n) = h'(n) => bsqueda voraz 2. Una funcin que considere el coste total estimado del camino desde el nodo inicial a un nodo objetivo que pase el nodo n La funcin f ' est formada por dos componentes:
g(n) = coste del camino desde nodo inicial hasta n

No es una estimacin, sino un coste real calculado exactamente

h'(n) = coste mnimo estimado para llegar a nodo objetivo desde n

Es la bsqueda A*
IA UCM, curso 2012-13 Tema 2.3. (Bsqueda informada AIMA) - 10

Bsqueda heurstica en AIMA


Hay que definir la funcin que calcula la heurstica h
Creando una clase que implemente la interfaz HeuristicFunction Hay que implementar el mtodo public double h(Object state)
Que determina el valor de la heurstica asociado al estado state.

8-puzzle (2 posibles heursticas)


Distancia de Manhattan
ManhattanHeuristicFunction.java

public class ManhattanHeuristicFunction implements HeuristicFunction

Piezas descolocadas
MisplacedTileHeuristicFunction.java

public class MisplacedTileHeuristicFunction implements HeuristicFunction

IA UCM, curso 2012-13

Tema 2.3. (Bsqueda informada AIMA) - 11

Ejecutar una Demo de Bsqueda: uso de la clase Problem


EightPuzzleDemo.java El main() llama a este mtodo: private static void EightPuzzleAStarSearchDemo() System.out.println("\nEightPuzzleAStarSearchDemo -->");
try Problem problem = new Problem(estadoInicial, <- estado inicial EightPuzzleFunctionFactory.getActionsFunction(), EightPuzzleFunctionFactory.getResultFunction(), new EightPuzzleGoalTest()); // como no hay funcin de coste en el constructor se usa el coste por defecto Search search = new AStarSearch(new GraphSearch(), // bsqueda A* con grafo new EightPuzzleHeuristicFunction()); SearchAgent agent = new SearchAgent(problem, search); printActions(agent.getActions()); printInstrumentation(agent.getInstrumentation()); catch (Exception e) e.printStackTrace();
IA UCM, curso 2012-13 Tema 2.3. (Bsqueda informada AIMA) - 12

Resumen de Algoritmos de AIMA vistos en teora


Informados (package aima.core.search.informed)
Voraz: GreedyBestFirstSearch.java (f '(n) = h'(n) )
GraphSearch TreeSearch

A*: AStarSearch.java (f '(n) = g(n) + h'(n) )


GraphSearch TreeSearch

IA UCM, curso 2012-13

Tema 2.3. (Bsqueda informada AIMA) - 13

A*in AIMA
function A*-GRAPH-SEARCH(problem) returns a solution, or failure * node <- a node with STATE = problem.INITIAL-STATE, ESTIMATED-COST = 0 * frontier <- a priority queue ordered by ESTIMATED-COST, with node as the only element * explored <- an empty set * loop do * * * * * * * * * * if EMPTY?(frontier) then return failure node <- POP(frontier) // chooses the lowest-cost node in frontier if problem.GOAL-TEST(node.STATE) then return SOLUTION(node) add node.STATE to explored for each action in problem.ACTIONS(node.STATE) do child <- CHILD-NODE(problem, node, action) if child.STATE is not in explored or frontier then frontier <- INSERT(child, frontier) else if child.STATE is in frontier with higher ESTIMED_COST then replace that frontier node with child

* </code> * The algorithm is identical to the general graph search algorithm, except for the use of a priority queue and the addition of an extra check in case a shorter ESTIMED_COST to a frontier state is discovered.

IA UCM, curso 2012-13

Tema 2.3. (Bsqueda informada AIMA) - 14

Das könnte Ihnen auch gefallen