Bonjour,
j'utilise l'algorithme A-star pour trouver des chemins sur une map 2D case par case comportant des obstacles (un grand nombre de murs semblables à un labyrinthe).
Dans tous les cas, un chemin est trouvé d'un point A à un point B, en passant par des cases connues de l'unité se déplaçant.
rappel: pour choisir un pas dans la construction de l'itinéraire, A-star favorise la prochaine case par son coût (distance depart -> point + point -> arrivée).
Dans certains cas, A-star part dans une direction qui semble au premier abord avantageuse qui finalement ne permet pas d'atteindre l'arrivée. L'algorithme peut ensuite revenir sur ses pas et finir par trouver le bon chemin qui ne partait pas tout de suite vers l'arrivée.
Problème: Il arrive qu'un chemin commence en se dirigeant au plus pres de l'arrivée et y finit par y aboutir après un long parcours. Cependant il peut exister un chemin beaucoup plus court qui necessitait cependant de partir dans le sens opposé à l'arrivée (dans un premier temps).
A-star ne détecte pas cette solution (sauf erreur de ma part ..).
Comment y remédier ? sans avoir à étudier tous les chemins possibles de la carte (algo de dijkstra) ?
Une aide ou une idée seraient les bienvenues ...
Merci
Partager