A Python library for simulating finite automata
Project description
Automathon
Created by: Robin Hafid Quintero Lopez
A Python library for simulating finite automata
Links
- GitHub repository: https://github.com/rohaquinlop/automathon
- PyPI: https://pypi.org/project/automathon/
- Twitter: https://twitter.com/RobinHafid
- Contact: rohaquinlop301@gmail.com
Installation
PyPI
pip install automathon
Upgrade
PyPI
pip install automathon --upgrade
Basic Example
Deterministic Finite Automata
Self-made, Public domain, via Wikimedia Commons
Representing the previous automata
from automathon import DFA
Q = {'q0', 'q1', 'q2'}
sigma = {'0', '1'}
delta = { 'q0' : {'0' : 'q0', '1' : 'q1'},
'q1' : {'0' : 'q2', '1' : 'q0'},
'q2' : {'0' : 'q1', '1' : 'q2'}
}
initialState = 'q0'
F = {'q0'}
automata1 = DFA(Q, sigma, delta, initialState, F)
## This is an example about creating a DFA with the library
Verify if the automata is valid
automata1.isValid() #True
Verify if the automata accept a string
automata1.accept("001001") #True
automata1.accept("00100") #False
Get the automata's complement
notautomata1 = automata1.complement()
notautomata1.accept("00100") #True
Non-Deterministic Finite Automata
Image taken from: http://www.r9paul.org/blog/2008/nondeterministic-finite-state-machine/
Representing the previous automata
from automathon import NFA
## Epsilon Transition is denoted by '' -> Empty string
Q = {'q1', 'q2', 'q3', 'q4'}
sigma = {'0', '1'}
delta = {
'q1' : {
'0' : ['q1'],
'1' : ['q1', 'q2']
},
'q2' : {
'0' : ['q3'],
'' : ['q3']
},
'q3' : {
'1' : ['q4'],
},
'q4' : {
'0' : ['q4'],
'1' : ['q4'],
},
}
initialState = 'q1'
F = {'q4'}
automata2 = NFA(Q, sigma, delta, initialState, F)
## This is an example about creating a NFA with the library
Verify if the automata is valid
automata2.isValid() #True
Verify if the automata accept a string
automata2.accept("0000011") #True
automata2.accept("000001") #False
Get the automata's complement
notautomata2 = automata1.complement()
notautomata2.accept("000001") #True
Visualize the automata
For both, DFA and NFA, the view method enables to visualize the automaton, recives as parameter a String as the file name for the png and svg files.
automata1.view("DFA Visualization")
automata2.view("NFA Visualization")
Remove Epsilon transitions from NFA
automata3 = automata2.removeEpsilonTransitions()
automata3.view("NFA without EpsilonTransitions")
Convert NFA to DFA
automata4 = automata3.getDFA()
automata4.view("NFA to DFA")
Errors
Errors that can be returned during the execution and the cases that can appear.
-
SigmaError:
- The automata contains a initial state or a final state that's not defined on Q.
- The automata contains a delta transition that's not defined on Q or in Sigma.
-
InputError:
- The automata is trying to consume an letter that's not defined in sigma.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
automathon-0.0.6.tar.gz
(8.0 kB
view hashes)