先决条件——设计有限自动机
在本文中,我们将看到一些确定性有限自动机 (DFA) 的设计。
问题1:一个DFA的构建在该组字符串的{A,B},使得字符串的长度| W | = 2即,字符串的长度正好是2。
说明 –所需的语言如下:
L = {aa, ab, ba, bb}
语言的状态转换图如下:
这里,
状态A代表长度设定为零(0)的所有字符串的,状态B表示设置长度一(1)的所有的字符串的,状态C表示设置长度的两个(2)的所有的字符串的。状态 C 是最终状态,D 是死状态,这是因为在获得任何字母表作为输入后,它永远不会进入最终状态。
Number of states: n+2
Where n is |w|=n
上述自动机将接受所有的字符串具有该字符串的长度恰好2.当字符串的长度是1,则它会从状态A到B.当字符串的长度为2,则它会从状态 B 到 C 并且当字符串的长度大于 2 时,它将从状态 C 转到 D(死状态),然后从状态 D 转到 D 本身。
#check string in
#in state A
def checkStateA(n):
#if length of
#string is one
#print not accepted
if(len(n)==1):
print("string not accepted")
else:
#pass string to stateB to
#to check further transitions
if(n[0]=='a' or n[0]=='b'):
stateB(n[1:])
def stateB(n):
#here if length
#is not 1 print#string not accepted
if(len(n)!=1):
print("string not accepted")
else:
#else pass string
#to state c
stateC(n[1:])
def stateC(n):
#here if length
#becomes zero
#print accepted
#else not accepted
if (len(n)==0):
print("string accepted")
else:
print("string not accepted")
#take input
n=input()
checkStateA(n)
问题2:一个DFA的构建在该组字符串的{A,B},使得字符串的长度| W |> = 2即,字符串的长度至少应为2。
说明 –所需的语言如下:
L = {aa, ab, ba, bb, aaa, aab, aba, abb........}
语言的状态转换图如下:
这里,
状态 A 表示长度为零 (0) 的所有字符串的集合,状态 B 表示长度为一 (1) 的所有字符串的集合,状态 C 表示长度为 2 (2) 的所有字符串的集合。
Number of states: n+1
Where n is |w|>=n
上述自动机接受具有字符串,对至少2的长度的所有字符串当字符串的长度是1,则它会从状态A到B.当字符串的长度为2,则它会从状态 B 到 C,最后当字符串的长度大于 2 时,它将从状态 C 转到 C 本身。
#check string in
#in state A
def checkStateA(n):
#if length of
#string is one
#print not accepted
if(len(n)==1):
print("string not accepted")
else:
#pass string to stateB to
#to check further transitions
if(n[0]=='a' or n[0]=='b'):
stateB(n[1:])
def stateB(n):
#here if length
#is less than 1
#printstring not accepted
if(len(n)<1):
print("string not accepted")
else:
#else pass string
#to state c
stateC(n[1:])
def stateC(n):
#here if length of string
#is greater than equal to zero
#print accepted
#else not accepted
if (len(n)>=0):
print("string accepted")
else:
print("string not accepted")
#take input
n=input()
checkStateA(n)
问题3:一个DFA的构建在该组字符串的{A,B},使得字符串的长度| W | <= 2即,字符串的长度是atmost 2。
说明 –所需的语言如下:
L = {?, aa, ab, ba, bb}
语言的状态转换图如下:
这里,
状态 A 表示长度为零 (0) 的所有字符串的集合,状态 B 表示长度为一 (1) 的所有字符串的集合,状态 C 表示长度为 2 (2) 的所有字符串的集合,状态 A、B、C 是最终状态和 D 是死状态,因为在获得任何字母作为输入后,它永远不会进入最终状态。
Number of states: n+2
Where n is |w|<=n
上述自动机将接受所有的字符串具有至多2的字符串的长度。当字符串的长度是1,则它会从状态A到B.当字符串的长度为2,则它会从状态 B 到 C,最后当字符串的长度大于 2 时,它将从状态 C 转到 D(死状态)。
#check string in
#in state A
def checkStateA(n):
#if only two transition occurs
#then print string accepted
if(n[0]=='a' or n[0]=='b'):
stateB(n[1:])
def stateB(n):
#if length is 0
#print accepted
if(len(n)==0):
print("string accepted")
else:
stateC(n[1:])
def stateC(n):
#if length is 0
#print accepted
#else not accepted
if (len(n)==0):
print("string sccepted")
else:
print("string not accepted")
#take input
n=input()
checkStateA(n)