Diferencia entre revisiones de «Inteligencia artificial para videojuegos/Estrategias de búsqueda informada»
Contenido eliminado Contenido añadido
Correcciones de formato |
Sin resumen de edición |
||
Línea 1:
Las estrategias de búsqueda informada se basan en aplicar un conocimiento al proceso de búsqueda para hacerlo
Por lo tanto:
Línea 8:
== Concepto de heurística ==
Del griego heuriskein, descubrir. En nuestro caso es la función que nos
La función heurística:
Línea 18:
== Primero el mejor (Best First Search) ==
Analizar preferentemente los mejores nodos. Para saber
== Primero el mejor - Voraz (Greedy BFS) ==
Línea 25:
* No es completa, una mala heurística podría hacer tomar un camino infinito.
* No es óptima, no garantiza soluciones con el menor número de operaciones.
* La complejidad espacio-temporal es de 0(r ^m), donde ''r'' es el factor de ramificación y ''m'' la profundidad del árbol de búsqueda.
Sin embargo escogiendo una buena función heurística
== A Estrella (A*) ==
Algoritmo basado en el primero el mejor.
Es uno de los algoritmos más populares para encontrar caminos y grafos.
A diferencia de otras técnicas transversales, tienen "cerebros". Lo que significa
Nosotros estaremos en un nodo inicial y debemos dirigirnos a un nodo final. En cada paso el resultado de la función del
Definamos ahora ''g'' y ''h'':
'''g''' =
'''h''' = el coste del movimiento estimado para pasar de ese nodo dado al destino final.Esto a menudo se conoce como la heurística, que no es más que una especie de suposición inteligente. Realmente no sabemos la distancia real hasta que encontramos el camino.
La cola a la hora de ir sacando nodos
Un ejemplo de esto son los mapas cuadriculados
== Heurísticas ==
Hemos visto como ''f'' es la función que evalúa el coste total de la función.
Sin embargo
En cualquier caso podemos diferenciar entre calcular ''h'' exacta o una aproximación a esta, lo cual nos supone menos tiempo, ejemplo de ambas son:▼
▲Sin embargo como calculamos la heurística, h. Existen muchas heurísticas, algunas pueden partir del coste de subproblemas del problema original, otras parten de la experiencia de intentos fallidos.
▲En cualquier caso podemos diferenciar entre calcular h exacta o una aproximación a esta, lo cual nos supone menos tiempo, ejemplo de ambas son:
▲Distancia Maniatan, Distancia Diagonal y distancia Euclídea.
▲Aplicado por ejemplo al algoritmo a*:
* Manhattan Distance:
Línea 61 ⟶ 60:
h = abs (current_cell.x – goal.x) + abs (current_cell.y – goal.y)
Cuando te puedes mover en cuatro direcciones (right, left, top, bottom).
Línea 71 ⟶ 70:
h = max {abs (current_cell.x – goal.x), abs (current_cell.y – goal.y)}
Cuando te puedes mover en ocho direcciones
Línea 81 ⟶ 80:
h = sqrt ((current_cell.x – goal.x)2 + (current_cell.y – goal.y)2)
Cuando te puedes en cualquier dirección
|