Tu appele donc A l'algorithme qui s'arrete la premiere fois que l'on vois le noeud cible. et A* l'algorithme qui s'arrete au moment ou tu es sur que le noeud cible a bien la valeur minimal ?
Je n'avais jamais vu ces nommages la.
Une bonne partie des propriétés de l'algo dépendent de la fonction d'évaluation de distance entre 2 points que l'on utilise. Si cette fonction ne renvoie jamais une superieur a la valeur réele, elle est dites monotone (j'ai l'impression que tu l'appele admissible toi)
Avec ces appelation:
Si la fonction d'evaluation est monotone:
A trouve le plus court chemin.
A* trouve le plus court chemin en plus de temps.
Si la fonction d'evaluation est 0 (elle est donc monotone):
A et A* se comporte comme l'algorithme de Dijkstra
Si la fonction d'evaluation n'est pas monotone:
A ne trouve pas le plus court chemin.
A* trouve le plus court chemin en un temps supérieure a celui de l'algo de Dijkstra.
Encore une fois, je n'ai jamais vu la distinction entre A et A*. Avec cette appelation, je n'ai jamais vu que A (appelé A* a ces moments la).
Deplus, je pense qu'il faut faire attention a ce que raconte wikipedia sur cet algorithme, il y a des remarques qui ne m'ont pas l'air tres catholique. Comme :
"More problematic than its time complexity is A*’s memory usage. In the worst case, it must also remember an exponential number of nodes." qui est suffisament imprecis pour etre faux. exponentiel peut etre, mais exponentiel en quoi ? j'imagine: en la longueur nombre de noeud du plus court chemin; mais quand on l'ecrit comme ca, on sous-entends usuellement "en la taille du graphe". Ce dernier est evidement faux si tu utilise un tas de fibonacci pour gerer la liste de noeud.