Python—生成一个函数来检查给定的查询字符串是否被给定的FSM接受
我必须实现一个函数来检查下面的FSM(有限状态自动机)是否接受查询字符串 我已经做了一个小的设计,基本上检索了所有需要处理的数据。我仍然需要实现代码,检查查询字符串中的每个字符是否在特定箭头(转换)中可用 例如,我们有查询字符串“aab”。代码必须运行的方式是,它检查查询中的第一个字符是否在从q0到q1的转换中可用。在本例中,这是真的,因此代码需要检查从q1到q2的转换中是否存在查询中的第二个字符。这也是事实。但是没有剩余的转换,因此查询中的第三个字符在任何转换中都不存在,它需要返回false。如果接受查询字符串,则代码必须返回True 我是个新手,所以我希望你能理解下面的代码 代码: 这是输出:Python—生成一个函数来检查给定的查询字符串是否被给定的FSM接受,python,fsm,Python,Fsm,我必须实现一个函数来检查下面的FSM(有限状态自动机)是否接受查询字符串 我已经做了一个小的设计,基本上检索了所有需要处理的数据。我仍然需要实现代码,检查查询字符串中的每个字符是否在特定箭头(转换)中可用 例如,我们有查询字符串“aab”。代码必须运行的方式是,它检查查询中的第一个字符是否在从q0到q1的转换中可用。在本例中,这是真的,因此代码需要检查从q1到q2的转换中是否存在查询中的第二个字符。这也是事实。但是没有剩余的转换,因此查询中的第三个字符在任何转换中都不存在,它需要返回false
This is the first query_string
['b']
First entries for Q0 :
('a', 'Q1')
('b', 'Q1')
First entries for Q1 :
('a', 'Q2')
('', 'Q2')
('b', 'Q2')
False
This is the second query_string
['a', 'a', 'b']
First entries for Q0 :
('a', 'Q1')
('b', 'Q1')
First entries for Q1 :
('a', 'Q2')
('', 'Q2')
('b', 'Q2')
False
编写有限状态机非常简单: 它由三部分组成
(state\u old,state\u new,char)
)。(ε边仅表示所有转换都有效)string[0]
,并使用string[1://code>和新状态调用自己
差不多就是这样。我并没有故意在这里放任何代码,因为这是一个很好的练习,可以自己完成
This is the first query_string
['b']
First entries for Q0 :
('a', 'Q1')
('b', 'Q1')
First entries for Q1 :
('a', 'Q2')
('', 'Q2')
('b', 'Q2')
False
This is the second query_string
['a', 'a', 'b']
First entries for Q0 :
('a', 'Q1')
('b', 'Q1')
First entries for Q1 :
('a', 'Q2')
('', 'Q2')
('b', 'Q2')
False