A desktop application developed in Python using Tkinter that allows users to create, edit, and simulate Deterministic Finite Automata (DFA) and Nondeterministic Finite Automata (NFA) through an intuitive graphical interface.
This project was developed for the CS 342 – Automata Theory course to demonstrate the practical implementation of finite automata concepts.
- Create and edit DFA and NFA machines
- Add states, alphabet symbols, start state, and accept states
- Create transitions between states
- Validate DFA structure
- Simulate input strings
- Generate accepted strings up to a specified length
- Display all transitions
- Reset the automaton at any time
- Clean graphical user interface built with Tkinter
- Python 3
- Tkinter
- ttk Widgets
- Object-Oriented Programming (OOP)
AutomataSimulator/
│
├── run.py # Application entry point
├── automata_simulator_gui.py # Main GUI and automata logic
└── README.md
- Python 3.10 or later
Clone the repository:
git clone https://github.com/Kh4ht/Automata-Simulator.gitMove into the project directory:
cd AutomataSimulatorRun the application:
python run.py- Select the automaton type (DFA or NFA).
- Add the states.
- Define the alphabet.
- Specify the start state.
- Specify one or more accept states.
- Add transitions.
- Validate the DFA (optional).
- Simulate input strings.
- Generate accepted strings up to a chosen maximum length.
- ✅ DFA Simulation
- ✅ NFA Simulation
- ✅ DFA Validation
- ✅ Transition Management
- ✅ String Generation
- ✅ Graphical Interface
- 🚧 Regular Expression → NFA conversion (planned)
This project helped strengthen my understanding of:
- Finite Automata (DFA & NFA)
- Automata Theory
- Python GUI development with Tkinter
- Event-driven programming
- Object-Oriented Programming
- State machine implementation
- Input validation and user interaction
- Regular Expression → NFA conversion
- DFA minimization
- NFA to DFA conversion
- Graphical state diagram visualization
- Save and load automata
- Export automata definitions
- Step-by-step simulation animation
Khaled Tamimi
Computer Science Graduate
This project is intended for educational purposes.
