这是我的NFA:
这是我的尝试。
导致abb b(b + ab a)*
这是正确的答案吗?
答案 0 :(得分:1)
不,你不正确:(
您不需要创建开始状态。 -
符号的第一个状态是开始状态。此外,a,b
标签表示a
或b
但不是ab
有一个名为Arden's theoram的定理,将有助于将NFA转换为RE
此NFA的正则表达式是什么?
在你身上NFA
DFA的初始部分:
第1步:
(-) --a,b-->(1)
表示(a + b)
步骤2:接下来从统计1到2, note 状态2接受状态最终(具有+
符号)。
(1) --b--->(2+)
所以你需要(a+b)b
才能达到最终状态。
第3步:您处于最终状态2
,可以接受任意数量的b
(任意数字表示一个或多个)。这是因为状态2
上的自循环带有标签b
。
所以,b*
接受了状态-2。
第4步:
实际上state-2
上有两个循环。
b
的自循环,正如我在步骤3 中所描述的那样。其表达式为b*
状态-2的第二个循环是通过状态-3
状态-2上的第二个循环的表达式是aa*b
为什么表达aa*b
?
因为:
a-
|| ====> aa*b
▼|
(2+)--a-->(3) --b-->(2+)
因此,在步骤3和步骤4中,由于状态-2上的循环运行,可以通过b
标记为或通过aa*b
===> ; (b + aa*b)*
因此,您的NFA的正则表达式是:
(a+b)
b
(b + aa*b)*