Está en la página 1de 25

BÚSQUEDA

INFORMADA
O
HEURÍSTICA
BÚSQUEDA PRIMERO EL MEJOR
Basadas en búsqueda de coste uniforme,
selecciona el siguiente nodo a expandir
mediante una función de evaluación f(n)
que se implementa dentro la lista de
prioridad.
f(n) = g(n)+h(n)
FUNCIÓN DE EVALUACIÓN
Calcula un coste estimado.
Selecciona nodo con menor coste.
Si hay empate, el más nuevo.
Compuesta de una combinación de:
Función Coste: g(n) (no negativo)
Función Heurística: h(n)
Normalmente, Suma: f(n)= g(n)+h(n)
Alternativa: suma ponderada f(n) = w g(n)+w h(n)
Que son las heurísticas?
“Son criterios, métodos, o principios para decidir cuál entre
múltiples alternativas de líneas de acción promete ser la más
efectiva para alcanzar una meta. Representan un balance entre
dos requerimientos: la necesidad de hacer los criterios simples y
al mismo tiempo, el deseo de que discriminen correctamente
entre elecciones buenas y malas”. Judea Pearl
"Un proceso que puede resolver un problema dado, pero
que no ofrece ninguna garantía de que lo hará, se llama
una heurística para ese problema". Newell, Shaw y Simón,
1963
Ejemplos de algunas funciones heurísticas:
Basada en la distancia Manhattan permite movimientos
horizontal y vertical
(c-a) + (d-b)
b) Basada en la distancia euclidiana la distancia entre dos
puntos es la recta
√(c-a)2+(d-b)2.
c) Para llegar de un punto de la ciudad a otro nos puede servir como heurística la
información de una brújula
d) En el caso anterior nos vendría mejor la información que nos proporciona un
GPS
CARACTERÍSTICAS
No garantizan que se encuentre una solución, aunque esta
exista
Si encuentran una solución, no necesariamente esta es la
óptima
En algunas ocasiones encontraran una solución en un
tiempo razonable
En general los métodos heurísticos son mejores a los
métodos no informados en la aplicación de problemas
complejos.
FUNCIONES HEURISTICAS

H1 número de piezas mal colocadas =8


H2 suma de las distancias de las piezas a sus posiciones en el
objetivo. (Manhattan)
3 1 2 2 2 3 3 2 = 18
Funciones heurísticas
Encontrar una buena heurística para un problema
• Utilizar Problema relajado - menos restricciones impuestas a los
operadores.- El costo de una solución exacta a un problema
relajado es a menudo una buena heurística para el problema
original.
Siempre será mejor usar una función heurística mayor, sin
sobreestimar - heurística compuesta - h(n) = max(h1(n), ..., hm(n))
La evaluación heurística debiera ser eficiente.
Costo de búsqueda  hay que considerar también el costo de usar
h en un nodo
BÚSQUEDA A*
Tiene en cuenta el coste del camino recorrido y el
coste de la heurística.

El siguiente nodo a expandir es el que tenga menor


coste estimado por la función de evaluación:

f(n)=g(n)+h(n)
4 1 3 G(n) = 1
H(B) = Heuristica Distancia Manhatan EXPANDIDOS: A,B,E,F,I
2 5
A H(C) = F(N) = G(N)+H(N)
7 8 6 H(D) =
H(E) = H(F) = H(G) =

1 3 4 1 3 4 1 3
4 2 5 7 2 5 2 5
7 8 6 8 6 7 8 6

BA (1+4) CA (1+6) DA (1+5)


1 3 4 1 3 4 1 3
4 2 5 7 2 5 2 5
7 8 6 8 6 7 8 6

EB (2+3) CA (1+6) DA (1+5)


1 2 3 1 3 4 1 3 1 3
4 5 4 2 5 2 5 4 2 5 1 2 3
7 8 6 7 8 6 7 8 6 7 8 6 4 5 6

FE (3+2) GE (3+4) CA (1+6) DA 1+5) 7 8


1 2 3 1 2 3 1 2 3 1 3 4 1 3 4 1 3
4 5 4 5 4 8 5 4 2 5 7 2 5 2 5
7 8 6 7 8 6 7 6 7 8 6 8 6 7 8 6

HF (4+3) IF (4+1) JF (4+2) GE (3+4) CA (1+6) DA (1+5)

1 2 1 2 3 4 1 3 4 1 3 1 3 4 1 3 4 1 3
4 5 3 4 5 6 7 2 5 2 5 4 2 5 7 2 5 2 5
7 8 6 7 8 8 6 7 8 6 7 8 6 8 6 7 8 6

KI (5+2) LI (5+0) HF (4+3) JF (4+2) GE (3+4) CA (1+5) DA (1+5)

4 1 3 1 3 1 3 1 2 3 1 2 3 1 2 3
2 5 4 2 5 4 2 5 4 5 4 5 4 5 6
7 8 6 7 8 6 7 8 6 7 8 6 7 8 6 7 8
1 2 3
A) B E F I L
4 5 6
7 8 9
MEDIDAS DE RENDIMIENTO
COMPLETO: Si, si existe la solución la encuentra
ÓPTIMO: Si. En árboles, si la heurística es admisible y el grafo es
consistente.
f(n)<C*; f(n)=C* donde C* Coste del camino óptimo
COMPLEJIDAD:
Tiempo
O(bd) con una buena heurística puede llegar a ser polinómico
Espaci0
O(bd)
ANÁLISIS
VENTAJAS
Admite costes variables de acciones
Evita caminos inútiles (poda)
Reduce complejidad con buena heurística
Es completo y óptimamente eficiente

DESVENTAJAS
- Tiene complejidad exponencial, sobre todo en el espacio
BÚSQUEDA GREEDY, AVARA
No tiene en cuenta el coste del camino
recorrido, expande el nodo más cercano a la
solución:

f(n)=h(n) [g(n)=0]
funcion BUSQUEDA-VORAZ(problema) devuelve solución a fallo
nodo-raíz CREAR-NODO-RAIZ(problema)
frontera CREAR-PRIORIDAD()
fronteraAGREGAR(nodo-raíz)
exploradaCREAR-CONJUNTO()
repetir
si frontera.ESTA-VACIA() entonces devuelve fallo
nodofrontera.POP()
si problema.ES-OBJETIVO(nodo.ESTADO) entonces devolver nodo
explorada.AGREGAR(nodo)
por cada acción en problema.ACCIONES(nodo.ESTADO) hacer
hijo CREAR-NODO-HIJO(problema, nodo, acción)
si hijo.ESTADO no esta en explorada y
hijo.ESTADO no esta en frontera.ESTADOS() entonces
frontera.AGREGAR(hijo)
sino
nodo-frontera frontera.BUSCAR(hijo.ESTADO)
si hijo.VALOR  nodo-frontera.VALOR entonces
nodo-fronterahijo
MEDIDAS DE RENDIMIENTO
COMPLETO:
No, puede caer en callejones sin salida y aportar solución

ÓPTIMO:
No, aunque encuentre solución puede no ser la óptima ya que no tiene en
cuenta los costes de las acciones

COMPLEJIDAD:
Tiempo O(bd)
Espacio O(b*d) (va a depender de la heurística)
ANÁLISIS
VENTAJAS
Admite costes variables de acciones
Reduce complejidad con buena heurística
Evita visitar demasiados caminos inútiles

DESVENTAJAS
No es completo, ni óptimo
No tiene en cuenta los costes de las acciones
BUSQUEDA IDA*
• El algoritmo IDA* es una combinación del los algoritmos
búsqueda en profundidad y A*
• Ordena los nodos según el valor de f(n) = g(n) + h(n), pero al
expandir un nodo excluye como sucesores a aquellos nodos
cuyo coste supere una cota prefijada.
• Fase de reiteración: Si todos los candidatos a sucesores han
superado la cota, toma como nueva cota el coste del nodo
menos trangresor y relanza de nuevo el algoritmo.
función BÚSQUEDA-RECURSIVA-PRIMERO-MEJOR(problema) devuelve una solución, o fallo
BRPM(problema, HACER-NODO(ESTADO-INICIAL[problema]),∞)
función BRPM(problema,nodo,f_límite) devuelve una solución, o fallo y un nuevo límite f-costo
si TEST-OBJETIVO[problema](estado) entonces devolver nodo
sucesores ← EXPANDIR(nodo,problema)
si sucesores está vacío entonces devolver fallo, ∞
para cada s en sucesores hacer
f [s] ← max(g(s) h(s), f [nodo])
repetir
mejor ← nodo con f-valor más pequeño de sucesores
si f [mejor] > f_límite entonces devolver fallo, f [mejor]
alternativa ← nodo con el segundo f-valor más pequeño entre los sucesores
resultado,f [mejor] ← BRPM(problema,mejor,min( f_límite,alternativa))
si resultado fallo entonces devolver resultado
MEDIDAS DE RENDIMIENTO
COMPLETO:
Si

ÓPTIMO:
Encuentra la solución óptima

COMPLEJIDAD:
Tiempo O(bd)
Espacio O(b*d)
ANÁLISIS
VENTAJAS
Es completo
Es óptimo
Reduce el espacio de memoria

DESVENTAJAS
Tiene complejidad exponencial con respecto al tiempo
https://qiao.github.io/PathFinding.js/visual/
A partir del grafo del problema de las provincias del departamento i:
Aplicar los siguientes métodos:

Búsqueda en anchura
Búsqueda en profundidad
Búsqueda Costo uniforme
Búsqueda voraz
Búsqueda A*
Búsqueda IDA*
Dando el estado inicial y el estado final

También podría gustarte