52 lines
2.3 KiB
Markdown
52 lines
2.3 KiB
Markdown
# 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
|