我一直在尝试画这个非确定性有限自动机:
NFA语言{ab,abc}*的州数不超过3个,我得出了下图中的解决方案:
问题似乎在于代码逻辑,因为我的代码总是打印“拒绝”。如果有人能给出一些关于如何编写此算法的提示,我将不胜感激
print("Insert below the string: ")
string = str(input())
def state_q0(string):
if len(string) == 0:
print("string not accepted")
else:
if string[0] == "a":
state_q1(string[1:])
elif string[0] == "b":
print("rejected")
def state_q1(string):
if len(string) == 0:
print("string not accepted")
else:
if string[1] == "b":
state_q2(string[2:])
else:
print("rejected")
def state_q2(string):
if len(string) == 0:
print("string not accepted")
else:
if string[2] == "c":
print("accepted -> q0")
elif string[2] == "b":
print("rejected")
state_q0(string)
您应该始终查看字符串的第一个字符,并使用除第一个字符以外的所有内容调用递归调用
在您的图表中也没有注意到,但是我假设
q0
是接受状态,因为它对应于(ab + abc)*
因此,以您的风格(我个人不会使用,但可以):
然而,我将如何对NFA进行编码:
相关问题 更多 >
编程相关推荐