Manipulation d'automates finis en Python : lecture d'automates décrits dans un fichier texte, test d'acceptation de mots, opérations classiques (déterminisation, complétion, etc.) et visualisation graphique via Graphviz.
Ce projet implémente une bibliothèque de manipulation d'automates finis. Un automate est décrit dans un fichier texte (états, états initiaux, états finaux et transitions), puis chargé en mémoire pour être analysé, transformé et affiché sous forme de graphe.
Le rendu graphique s'appuie sur l'outil dot de Graphviz : la méthode show() génère un fichier .dot intermédiaire puis le convertit en PDF.
| Fichier | Rôle |
|---|---|
automate.py |
Classe Automate : opérations de haut niveau (acceptation d'un mot, succession d'états, etc.) |
automateBase.py |
Classe AutomateBase : structure de base, génération du format .dot et méthode show() |
state.py |
Classe State (un état de l'automate) |
transition.py |
Classe Transition (une transition étiquetée entre deux états) |
myparser.py |
Parser des fichiers de description d'automates |
sp.py |
Bibliothèque interne de combinateurs de parsing utilisée par myparser.py |
test.py |
Script d'exemple / point d'entrée modifiable |
exempleAutomate.txt |
Exemple de fichier de description d'automate |
- Python 3.x
- Graphviz (fournit la commande
dot, indispensable pour la visualisation)
Aucune dépendance pip externe n'est requise : le projet n'utilise que la bibliothèque standard de Python et ses propres modules.
Windows
- Télécharger l'installeur sur graphviz.org/download.
- Pendant l'installation, cocher l'option « Add Graphviz to the system PATH ».
- Vérifier :
dot -V
Linux (Debian/Ubuntu)
sudo apt update && sudo apt install graphvizmacOS (Homebrew)
brew install graphvizVérifier l'installation :
dot -V# 1. Cloner le dépôt
git clone https://github.com/KyroFrCode/Automate.git
# 2. Se placer dans le dossier
cd AutomateIl n'y a rien d'autre à installer côté Python : les modules sont autonomes.
Lancer le script d'exemple :
python test.pySous certains systèmes, utilisez
python3au lieu depython.
Le script charge l'automate décrit dans exempleAutomate.txt, puis génère sa représentation graphique (exempleAutomate.pdf).
from automate import Automate
# Charger un automate depuis un fichier
a = Automate.creationAutomate("exempleAutomate.txt")
# Tester si un mot est accepté
if Automate.accepte(a, "aaab"):
print("Le mot est accepté")
else:
print("Le mot est refusé")
# Générer la visualisation (produit monAutomate.pdf via Graphviz)
a.show("monAutomate")Un automate se décrit avec quatre sections. Exemple (exempleAutomate.txt) :
#E: 0 1 2 3
#I: 0
#F: 3
#T: (0 a 0)
(0 b 0)
(0 a 1)
(1 a 2)
(2 a 3)
(3 a 3)
(3 b 3)
| Balise | Signification |
|---|---|
#E: |
Liste des états (identifiants numériques séparés par des espaces) |
#I: |
Liste des états initiaux |
#F: |
Liste des états finaux |
#T: |
Liste des transitions au format (état_source étiquette état_destination) |
dot: command not found/ la visualisation ne s'affiche pas → Graphviz n'est pas installé ou pas dans lePATH. Réinstallez-le puis vérifiez avecdot -V.- Aucun PDF généré → assurez-vous d'avoir les droits d'écriture dans le dossier courant.
Ce projet est distribué sous licence MIT.