几乎我们被要求找到DFA的正则表达式,如上面的链接所示。我得到的是从s0到s2的路径,我认为是(a(b(ab))和从s0到s4的路径,我认为是b(a(ba))。但是我我不确定如何包含从s1到s3的路径。
我尝试看一下这个link,试图了解他们如何将DFA转换为正则表达式,但是我仍然迷失了。
答案 0 :(得分:0)
感谢有趣的问题!
我们需要将其细分为以下部分:
(a{s1 to end})|(b{s3 to end})
{s1 to end}是:
{s1 to s1}*{s1 to end without coming back to s1}
{s1至s1}为:
(a(ab)*b)|(ba)
{s1结束而不返回s1}是:
b|(aa(ba)*)
{s3 to end}是:
{s3 to s3}*{s3 to end without coming back to s3}
{s3至s3}为:
(b(ba)*a)|(ab)
{s3结束而不返回s3}是:
a|(bb(ab)*)
然后我们可以将它们放在一起:
(a{s1 to s1}*{s1 to end without coming back to s1})|(b{s3 to s3}*{s3 to end without coming back to s3})
最终会给出:
(a((a(ab)*b)|(ba))*(b|(aa(ba)*)))|(b((b(ba)*a)|(ab))*(a|(bb(ab)*)))
编辑:修正了一个错误,该错误已拖到最后一个表达式中