Welcome to the Automaton Simulators repository! This project features three powerful tools for exploring fundamental concepts in theoretical computer science: Finite Automaton (FA), Pushdown Automaton (PDA), and Turing Machine (TM) simulators. These simulators are designed to help you visualize and understand the behavior of different types of automata and their capabilities.
The Finite Automaton Simulator allows you to explore the operation of finite automata, which are used to recognize regular languages. With this simulator, you can:
- Define states, transitions, and input alphabets.
- Visualize the automaton's state transitions as it processes input strings.
- Check acceptance or rejection of input strings based on the automaton's configuration.
The Pushdown Automaton Simulator enables you to delve into the realm of context-free languages. PDAs extend finite automata by incorporating a stack, allowing for more complex language recognition. Features include:
- Configuration of states, transitions, stack operations, and input alphabets.
- Visualization of stack manipulations and state transitions during simulation.
- Examination of how different input strings are processed by the PDA, including stack contents and transitions.
The Turing Machine Simulator provides an in-depth exploration of Turing machines, the most powerful model of computation. This simulator supports:
- Definition of states, transitions, tape symbols, and head movements.
- Visualization of the tape's content and the Turing machine's operation as it processes input.
- Analysis of whether the machine halts and the output produced, if applicable.
- Interactive Simulations: Engage with each automaton through a user-friendly interface, observing real-time processing of input strings.
- Detailed Visualization: See detailed visual representations of state transitions, stack operations, tape content, and more.
- Educational Tools: Ideal for students, educators, and enthusiasts looking to deepen their understanding of computational theory.
To get started with the simulators, clone the repository and follow the setup instructions:
git clone https://github.com/yourusername/automaton-simulators.git
cd automaton-simulators
flutter run -d chrome
Make sure you have Flutter installed. You can install Flutter from flutter.dev. After setting up Flutter, run the following command to get the dependencies:
flutter pub get
To run the simulators, use:
flutter run
- Open the application in your preferred IDE or run it via the command line.
- Navigate to the desired simulator (Finite Automaton, Pushdown Automaton, or Turing Machine).
- Define your automaton's parameters (states, transitions, etc.).
- Enter the input string and observe the simulation results.
We welcome contributions to enhance and expand the functionality of these simulators. Please follow these steps to contribute:
- Fork the repository.
- Create a new branch (
git checkout -b feature/YourFeature
). - Make your changes and test them thoroughly.
- Commit your changes (
git commit -am 'Add new feature'
). - Push to the branch (
git push origin feature/YourFeature
). - Create a new Pull Request.
For any questions or suggestions, feel free to open an issue or contact me directly through GitHub or on my Linkedin page: Yosi Kariv.