A program in Python to demonstrate Finite Automata
Hello Everyone! In this tutorial, we will see how can we make a program in Python to work as finite automata. Here a quick review of Finite Automata(FA).
Finite Automata
A Finite Automata is a simple machine that recognizes patterns in the input string. If the input string contains the pattern defined by FA it accepts the string otherwise rejects it.
It is of 2 types:
- Deterministic Finite Automata(DFA)
- Non-Deterministic Finite Automata(NFA)
The basic difference between DFA & NFA is that:
- For a particular input string, a machine can go to only 1 state in DFA but a machine can go to multiple states in NFA.
- Null transitions are allowed in NFA but not in DFA.
Finite Automata Program in Python
- Regular expression of FA: 101+
Accepted Inputs: 101, 1011, 10111, 10111
Rejected Inputs: 100, 010, 000
CODE
def FA(s): #if the length is less than 3 then it can't be accepted, Therefore end the process. if len(s)<3: return "Rejected" #first three characters are fixed. Therefore checking them using index if s[0]=='1': if s[1]=='0': if s[2]=='1': # After index 2 only "1" can appear. Therefore break the process if any other character is detected for i in range(3,len(s)): if s[i]!='1': return "Refected" return "Accepted" return "Rejected" return "Rejected" return "Rejected" inputs=['1','10101','101','10111','01010',""] for i in inputs: print(FA(i))
OUTPUT
Rejected Refected Accepted Accepted Rejected Rejected
- Regular expression of FA: (a+b)*bba
Accepted Inputs: bba, ababbba, abba
Rejected Inputs: abb, baba,bbb
CODE
def FA(s): size=0 #scan complete string and make sure that it contains only 'a' & 'b' for i in s: if i=='a' or i=='b': size+=1 else: return "Rejected" #After checking that it contains only 'a' & 'b' #check it's length it should be 3 atleast if size>=3: #check the last 3 elements if s[size-3]=='b': if s[size-2]=='b': if s[size-1]=='a': return "Accepted" return "Rejected" return "Rejected" return "Rejected" return "Rejected" inputs=['bba', 'ababbba', 'abba','abb', 'baba','bbb',''] for i in inputs: print(FA(i))
OUTPUT
Accepted Accepted Accepted Rejected Rejected Rejected Rejected
HOPE YOU LIKED THIS TUTORIAL!
Also read:
Leave a Reply