Files
TermNSI/Projets/labyrinthe/README.md

52 lines
2.3 KiB
Markdown
Raw Normal View History

# 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` — classe `Maze` de base (lecture depuis fichier texte)
- `../src/maze.zip` — archive complète avec exemples de labyrinthes
- [Maze generation algorithms — Wikipedia](https://en.wikipedia.org/wiki/Maze_generation_algorithm)
- [Algorithme A* — Wikipedia](https://fr.wikipedia.org/wiki/Algorithme_A*)
---
Auteur : Florian Mathieu — Licence CC BY NC