5. A*
A* ajoute au meilleur d’abord le coût réellement parcouru. Il classe les états selon :
f(n) = g(n) + h(n)
g(n): coût réel du meilleur chemin connu de l’état initial àn;h(n): estimation du coût restant denvers le but;f(n): estimation du coût total d’une solution passant parn.
5.1 Procédure
- Placer l’état initial dans
OUVERTSavec sa valeurfet son parent. - Choisir dans
OUVERTSl’état de plus petite valeurf. - Le retirer de
OUVERTSet le placer dansFERMÉS. - S’il s’agit du but, reconstruire la solution à partir des parents.
- Sinon, générer ses enfants :
- ignorer un enfant déjà fermé selon la procédure du cours;
- s’il n’est pas ouvert, l’ajouter avec
g,h,fet son parent; - s’il est déjà ouvert avec une valeur moins bonne, remplacer cette entrée par le meilleur chemin.
- Répéter; si
OUVERTSdevient vide, aucun but accessible n’existe.
5.2 Admissibilité et optimalité
Une heuristique est admissible si elle ne surestime jamais le vrai coût restant. La distance à vol d’oiseau constitue un exemple classique lorsqu’un trajet réel doit au moins couvrir cette distance. Avec une telle heuristique et les conditions usuelles de l’algorithme, A* fournit une solution optimale; plusieurs solutions de même coût peuvent exister. Pour la variante sur graphe qui ferme définitivement les états, la cohérence de h est la condition usuelle supplémentaire; une heuristique admissible mais incohérente peut demander des réouvertures. Voir les précisions de la révision du bloc E [accès au cours requis].
5.3 Exemple des villes
Dans le diaporama, la trace de développement est :
v0, v1, v2, v3, v4, v6
Le chemin le plus court reconstruit à partir des parents est toutefois :
v0 → v3 → v4 → v6
Rectification mathématique du 19 octobre : la vidéo annonce oralement 14 plutôt que 7, mais les arcs affichés sur ce chemin coûtent 2+1+4=7. Le tableau cumule à plusieurs reprises f(parent) à la place de g(parent), comptant ainsi des heuristiques plusieurs fois. Les valeurs correctes de f sont notamment 13 pour v5 par v1, 9 pour v4 par v2, 5 pour v4 par v3 et 7 pour v6 par v4. Le chemin reste le même; son coût réel est 7. De plus, h(v0)=9 surestime ce coût et n’est pas admissible. Voir le recalcul détaillé [accès au cours requis]. Cette rectification concerne la synthèse; le PDF et la vidéo sont conservés intacts.
5.4 Variante pondérée
Le cours présente :
f(n) = (1-w)g(n) + wh(n), avec 0 ≤ w ≤ 1.
w=0: Dijkstra, priorité au coût déjà parcouru;w=1: meilleur d’abord, priorité à l’estimation restante;w=0,5: pondération équilibrée correspondant au même ordre de priorité queg+h, puisque le facteur0,5multiplie uniformément la somme.
Arcs orientés et coûts : S→A(3),S→B(1),B→A(1),A→G(3). h(S)=5,h(A)=0,h(B)=4,h(G)=0; distances exactes 5,3,4,0. A* retire A avant B. Depuis B, A pourrait passer de g=3 à g=2. Sans réouverture : G=6; avec réouverture : G=5. L’incohérence est h(B)=4>1+h(A)=1.
Source : Schéma original du portail, données autonomes; consolidation du 16 octobre 2026. · Maître S04 : 5.2 Admissibilité et optimalité
v0→v3(2), v0→v2(4), v0→v1(3), v3→v2(1), v3→v4(1), v2→v4(3), v1→v5(7), v4→v6(4), v5→v6(4). h(v0..v6)=(9,2,2,5,2,3,0). Toutes les flèches sont dirigées. Chemin optimal v0→v3→v4→v6, coût 7; h(v0)=9 surestime ce coût. Les nombres portés par les arcs sont les coûts, les h figurent dans les boîtes.
Source : Recherche_Heuristique.pdf p.22 : arcs, poids, h et tableau vérifiés visuellement; recalcul indépendant du portail le 16 octobre 2026. · 5.3 Exemple des villes