Bonjour !
J'ai cod� un algorithme A* qui fonctionne tr�s bien, mais que j'aimerais optimiser car il devra � terme tourner sur une Raspberry Pi. Le temps d'initialisation (chargement de graphe par exemple) peut �tre long tant que les recherches de chemin derri�re sont rapides. L'objectif serait d'obtenir une recherche de chemin sur une surface de 200*300 avec des pas de 20, en plus d'un lissage post A* afin d'�viter les d�placements saccad�s. Est-ce r�aliste de viser un temps de calcul de l'ordre de la demi-seconde ?
J'avais au d�part une cr�ation � la vol�e des noeuds � chaque recherche de chemin, que j'ai modifi� pour qu'ils soient tous cr��s dans le constructeur. J'ai rang� les noeuds dans un std::vector, et je les retrouve � l'aide de leur id.
Je me demandais si ce ne serait pas plus int�ressant de cr�er un tableau � deux dimensions dans lequel je placerais les noeuds � la case correspondant � leur coordonn�e sur la surface, quitte � diviser les coordonn�es par 20 (le pas) afin d'�viter les cases de tableau vides ?
Afin d'assurer l'absence de fuite de m�moires, j'utilise des shared_ptr pour manipuler les noeuds, est-ce que cela all�gerait notablement les calculs d'utiliser de simples pointeurs ?
Merci d'avance pour vos r�ponses !
Partager