# 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