2. BÚSQUEDA CIEGA
Sólo utiliza información acerca de si un estado es o no objetivo
para guiar su proceso de búsqueda.
Antes de explicar los tipos de búsqueda ciega, convendría dar una
serie de definiciones:
Expandir un nodo: obtener los posibles hijos de un nodo a partir
de la aplicación de los distintos operadores sobre él.
Nodo cerrado: Se han aplicado todos los posibles operadores
sobre él, obteniéndose todos sus posibles hijos.
3. BÚSQUEDA CIEGA
Nodo abierto: No han actuado todos los posibles operadores,
con lo que podrían obtenerse nuevos hijos aplicando los
operadores restantes.
TIPOS DE BÚSQUEDA CIEGA:
Búsqueda en amplitud.
Búsqueda en profundidad.
Búsqueda en profundidad progresiva.
Búsqueda bidireccional.
4. Búsqueda heurística
• Las técnicas de búsqueda heurística usan el conocimiento del
dominio para adaptar el solucionador y, de esta manera, éste
sea más potente y consiga llegar a la solución con mayor
rapidez. Por tanto, estas técnicas utilizan el conocimiento para
avanzar buscando la solución al problema.
• Definiciones:
- Costo del camino: coste necesario para ir del nodo raíz al
nodo meta por dicho camino.
- Costo para hallar la solución: coste necesario para encontrar
el camino anteriormente definido.
-Potencia heurística: capacidad de un método de exploración
para obtener la solución con un coste lo más bajo posible.
5. Función de evaluación heurística
• Definición: es una aplicación del espacio de estados con el
espacio de los números reales
F(estado) => n
• n representa lo cercano que esta el estado con el que se ha
aplicado la función de evaluación de la solución final.
• Es muy importante mantener un equilibrio entre la eficiencia
de la función y su complejidad. No debemos tener una función
de evaluación demasiado complicada, ni tampoco una
demasiado sencilla pero que no avance prácticamente nada en
el problema. En caso de no mantener este equilibrio se podría
producir explosión combinatoria.
6. Búsqueda con adversos
La búsqueda con adversos (juego contra un oponente) analiza
los problemas en los que existe mas de un adversario
modificando el estado del sistema.
Hay dos operadores:
- el que lleva el problema a la mejor situación (jugada
nuestra)
- el que lleva el problema a la peor situación (jugada
de nuestro adversario)
7. Búsqueda con adversos:
Algoritmo MINIMAX
- Minimax es un método de decisión para minimizar la pérdida
máxima esperada en juegos con adversario y con información
perfecta.
- Minimax es un algoritmo recursivo.
- El funcionamiento de Minimax puede resumirse como elegir
mejor movimiento para ti mismo suponiendo que tu
contrincante escogerá el peor para ti.
8. Búsqueda con adversos:
Algoritmo MINIMAX
El algoritmo explorará los nodos del árbol asignándoles un
valor numérico mediante una función de evaluación,
empezando por los nodos terminales y subiendo hacia la raíz.
La función de evaluación definirá lo buena que es la posición
para un jugador cuando la alcanza. Ejemplo: en el ajedrez los
posibles valores son (+1,0,-1) que se corresponden con ganar,
empatar y perder respectivamente. Esto será diferente para
cada juego.
9. Ejemplo MINIMAX
A
B C D
E F G H I J
7 8 0 6 5 9
Min(7,8) Min(0,6) Min(5,9
)
7 0 5
Max(7,0,5)7
10. Búsqueda con adversos:
Poda Alfa-Beta
Se aplica en técnicas con adversos y se usa para reducir el
coste computacional de MINIMAX podando las ramas que
nos llevan a una solución peor que las ya encontradas.
Llamaremos valores alfa a los valores calculados hacia atrás
de los nodos max. Los valores alfa de los nodos max nunca
pueden decrecer.
Llamaremos valores beta a los valores calculados hacia atrás
en los nodos min. Los valores min nunca pueden crecer.
11. Búsqueda en espacios de estados
Espacio de estados: modelo del mundo representado por
un grafo
12. Búsqueda en amplitud
Este método va construyendo un grafo de estados explicito
mediante la aplicación de los operadores disponibles al nodo
inicial, después aplica los operadores disponibles a los nodos
sucesores directos del nodo inicial, y así sucesivamente. Este
procedimiento de búsqueda actúa de manera uniforme a
partir del nodo inicial.
Este tipo de búsqueda consiste en ir explorando el árbol por
ramas del mismo nivel, es decir, no se podrá explorar una
rama superior si la rama inferior no se ha explorado por
completo.
13.
14. Búsqueda en profundidad
En este proceso de búsqueda se genera sólo un sucesor del nodo
en cada paso, es decir, cada vez que se obtiene un nuevo
sucesor, se le aplica a este un nuevo operador y se obtiene un
nuevo sucesor, y así sucesivamente. En este tipo de búsqueda se
avanza por una sola rama del árbol hasta que se encuentre una
solución o hasta que se llegue a un callejón sin salida [3]. En el
caso de llegar a un callejón sin salida se retorna hasta la raíz para
iniciar una nueva búsqueda. La búsqueda en profundidad
necesita menos memoria ya que sólo almacena los nodos del
camino que se siguen en ese instante. Esto contrasta con la
búsqueda en anchura en la cual debe almacenarse todo el árbol
que haya sido generado hasta ese momento.