Files
TermNSI/Projets/labyrinthe/README.md

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


Auteur : Florian Mathieu — Licence CC BY NC