(a + b)*和(a.b)*的过渡态图是什么? 我对这两个状态图很困惑。我发现它们都是一样的。
答案 0 :(得分:1)
假设蓝绿色状态是开始和接受状态。 (a + b)*可以按任何顺序读作"零或多个a和b。" (a.b)*可以按顺序读作"零或多个a和b&s。" 请注意,如果序列被破坏,节点3作为死状态存在以拒绝匹配。
答案 1 :(得分:0)
假设+表示联合和。意思是连接:
(a+b)*
q s q'
-- -- --
q0 a q0
q0 b q0
(q0 is accepting)
(a.b)*
q s q'
-- -- --
q0 a q1
q0 b q2
q1 a q2
q1 b q0
q2 a q2
q2 b q2
(q0 is accepting; q2 is a dead state)
请注意,(a + b)*描述了a和b的所有字符串,因此我们只需要一个状态;没有字符串被拒绝。另一方面,有一些不匹配的字符串和(b.s)*;我们最终得到三个州,因为:
如果我们看到" ab"的整数,我们就看不到任何或其他整数的" ab" (对应于州q0)
如果我们看到整数" ab"然后是" a",我们可以看到" b"后跟一个整数" ab" (对应于州q1)
如果除了我们在第1点和第2点讨论的内容之外我们已经看到了什么,那么我们无法添加到字符串中以获得整数#34; ab" ;我们搞砸了,带有这个前缀的任何字符串都不在语言中(对应于"死"状态q2)。