Aller au contenu

Algorithme A* sur Grille

Recherche guidée par une heuristique

Exercice Avancé · Graphes · prepa scientifique et economique (CPGE)

Enonce

Implémenter a_etoile(grille, depart, arrivee) sur une grille $n \times m$ où 0 est passable et 1 est un mur. Renvoyer la longueur du plus court chemin (ou -1 si inaccessible).

Utiliser la distance de Manhattan comme heuristique.

⚠ Bonus : Comparer le nombre de cases explorées par A* vs un BFS standard sur le même labyrinthe.

Signature attendue

def a_etoile(grille: list, depart: tuple, arrivee: tuple) -> int:

Exemple

  • a_etoile([[0, 0, 1], [1, 0, 0], [0, 0, 0]], (0, 0), (2, 2)) → 4

📖 Rappel de cours

L'algorithme A* (« A star ») est une amélioration de Dijkstra qui exploite une heuristique $h(n)$ pour guider la recherche vers l'objectif. Pour chaque sommet $n$, il maintient :

  • $g(n)$ : coût réel connu depuis le départ
  • $h(n)$ : estimation heuristique du coût restant jusqu'à l'arrivée
  • $f(n) = g(n) + h(n)$ : estimation totale du coût d'un chemin passant par $n$

A* explore en priorité les sommets de plus petite valeur $f(n)$ (tas binaire).

Heuristique admissible :

$h(n) \leq d^*(n, \text{arrivée})$ pour tout $n$ (l'estimation ne surestime jamais le coût réel restant). Si $h$ est admissible, A* trouve un plus court chemin optimal.

Distance de Manhattan :

Pour une grille avec déplacements à 4 directions, $h(i, j) = |i - i_{\text{cible}}| + |j - j_{\text{cible}}|$ est admissible et même consistante.

Si $h(n) = 0$ pour tout $n$, A* dégénère en Dijkstra. Plus $h$ est précise, moins de sommets sont explorés.

← Exercices sur les graphes en Python — BFS, DFS, Dijkstra

Exercices du meme theme

  • Diamètre d'un Arbre
  • Algorithme de Floyd-Warshall
  • Composantes Fortement Connexes (Kosaraju)
  • Flot Maximal — Edmonds-Karp
  • Critère de Delaunay (in-circle)

La correction commentee, les indices progressifs, l'execution du code dans le navigateur et la verification par l'IA sont reserves aux abonnes.

Prepa🐍ython
Progresser en Python & SQL · Prépa scientifique
Essai gratuit
Testez toutes les fonctionnalités sans engagement
En continuant, vous acceptez notre politique de confidentialité.
Déjà abonné ? Se reconnecter
Recevez un lien de connexion par email
Parcourir gratuitement →
Aperçu limité · sans inscription · sans vérification IA
€4,99
/ mois · accès illimité · résiliable
Paiement sécurisé
En vous abonnant, vous acceptez nos conditions et politique de confidentialité.
Résiliation possible depuis votre espace PayPal.

Chargement...

Initialisation de l'environnement

Prepa🐍ython
Progresser en Python & SQL · Prépa scientifique
Progression
0 / 0
Solo
— / —
Python... SQL...
Recherche
🔬 Bac a sable Python ↗ 🧪 Bac a sable SQL ↗ 📝 Concours blanc ↗ 🏖️ Code à la plage ↗ 📚 Listes de rentrée ↗ 🛠️ Admin ↗
Tu aimes PrepaPython ?
Fais-le savoir !
← Retour à l'accueil Mentions legales & confidentialite