【发布时间】:2021-02-17 19:57:08
【问题描述】:
我一直在尝试绘制这个非确定性有限自动机:
对于语言 {ab,abc}*,状态数不超过 3 个的 NFA,我得出了下图中的解决方案:
问题似乎出在代码逻辑上,因为我的代码总是打印“拒绝”。如果有人可以就如何编写此算法提供一些提示,我将不胜感激。
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)
【问题讨论】:
-
您能否添加一个示例,说明在给定特定输入的情况下您期望的输出是什么?
标签: python python-3.x dfa nfa