Je suis en ce moment sur le développement d'un jeu et je cherche également à augmenter les performances d'un tel algorithme.
Pour l'instant, je fais une version c# (plus facile à débugger et pour estimer les performances ), je pense que je vais le porter en c quand ce sera fini.
A lors actuel, j'en suis encore côté maths et non code, j'essaierai de m'en rappeler et de te prévenir quand j'aurai numérisé mes travaux.
Je travaille en fait sur un algorithme qui n'est pas sûr à 100% ( j'estime 99.9% de réussite ) mais qui décuple au moins la vitesse de calcul ( le code final risque de tenir en très peu de lignes... ).
Le principe est le suivant ( en très gros ), ça fonctionne pour un terrain fait de cases mais tu peux facilement l'adapter à un réseau de chemins pondérés :
Tu commence par définir les noeuds ( les points de ton réseau ).
Tu pars du départ et tu calcules la distance qui te sépare de l'arrivée selon différents angles dans chacune des dimensions.
Tu empreintes le chemin le plus proche de la direction pour laquelle la distance est la moindre, cela jusqu'au noeud suivant.
Tu recommence jusqu'à tomber sur l'arrivée avec 99.9% de chances d'y arriver selon le plus court chemin.
Comme tu peux sûrement le remarquer, j'en suis encore au stade géométrique, mais une fois optimisé, ça devrait pouvoir rapidement s'algébriser.
En espérant t'avoir aidé.