我不知道如何使用算法将此dfa转换为正则表达式。请帮助我。
答案 0 :(得分:0)
假设此符号表示(1)既是初始状态又是唯一接受状态,则此自动机的转换表为:
q s q'
(1) a (3)
(1) b (2)
(2) a (1)
(3) a (2)
(3) b (3)
令r,s和t为导致(1),(2)和(3)的正则表达式。然后
r = e + sa
s = rb + ta
t = ra + tb
我们可以开始迭代解决此系统。首先,我们在t的表达式中看到自引用,并且可以使用以下规则删除x = y + xz <=> x = yz *:
r = e + sa
s = rb + ta
t = rab*
现在我们可以通过替换前两行来摆脱t:
r = e + sa
s = rb + rab*a
现在我们需要r的表达式,所以我们不妨在第一行中将s的子弹和sub插入s的表达式中:
r = e + (rb + rab*a)a
= e + rba + rab*aa
= e + r(ba + ab*aa)
根据我们的规则,我们进一步减少:
r = (e)(ba + ab*aa)*
= (ba + ab*aa)*
抽查表明此正则表达式正确。如果您接受以下规则的有效性以简化涉及正则表达式的表达式(即证明它们或接受它们而没有证明),则派生构成正则表达式的有效证明:
rule 1: x = y + xz IFF x = yz*
rule 2: w = xy AND x = z IFF w = zy
rule 3: w = x + y AND x = z IFF w = z + y
以上对等式的解释是:当且仅当LHS的语言与RHS的语言等效时,LHS才等于RHS。虽然(0 + 1)(0 + 1)和00 + 01 + 10 + 11是不同的正则表达式,但它们生成的是由四个字符串组成的相同语言,因此出于讨论目的是相等的。