2.3 KiB
2.3 KiB
Projet — Labyrinthe
Générer un labyrinthe parfait (sans boucles, avec un unique chemin entre deux cases) et le résoudre automatiquement — un problème classique qui mobilise graphes, récursivité et algorithmique de recherche.
Contexte
Un labyrinthe parfait est un graphe dans lequel il existe exactement un chemin entre n'importe quelle paire de cellules. Le générer revient à construire un arbre couvrant d'une grille ; le résoudre revient à parcourir ce graphe de l'entrée à la sortie.
Ce projet relie directement le chapitre Graphes et le chapitre Récursivité du programme de Terminale NSI.
Une base de code est disponible dans ../src/maze.py : la classe Maze lit un labyrinthe depuis un fichier texte et permet de tester un chemin.
Compétences mobilisées
| Notion | Chapitre du cours |
|---|---|
| Graphes, arbres couvrants | Graphes |
| Parcours DFS / BFS | Graphes, Récursivité |
| Récursivité et pile d'appels | Récursivité |
| Classes et encapsulation | POO |
| Représentation par dictionnaire | Programmation |
Cahier des charges
Fonctionnalités minimales
- Représenter un labyrinthe sous forme de graphe (dictionnaire de voisins)
- Générer un labyrinthe parfait aléatoire (algorithme DFS récursif ou union-find/Kruskal)
- Afficher le labyrinthe dans le terminal (avec
+,-,|,) - Résoudre le labyrinthe (trouver un chemin de l'entrée à la sortie) avec BFS ou DFS
- Afficher le chemin solution
Extensions possibles
- Affichage graphique (Pyxel, tkinter)
- Visualisation animée de la génération et de la résolution
- Comparer BFS (plus court chemin) et DFS (premier chemin trouvé)
- Implémenter l'algorithme A* (heuristique distance de Manhattan)
- Résolution par algorithme génétique (en lien avec le projet
mastermind/) - Mesurer les performances selon la taille du labyrinthe
Ressources
../src/maze.py— classeMazede base (lecture depuis fichier texte)../src/maze.zip— archive complète avec exemples de labyrinthes- Maze generation algorithms — Wikipedia
- Algorithme A* — Wikipedia
Auteur : Florian Mathieu — Licence CC BY NC