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