正则表达式,用于转换路径图

时间:2019-05-16 14:30:48

标签: regex regex-negation regex-lookarounds regular-language dfa

几乎我们被要求找到DFA的正则表达式,如上面的链接所示。我得到的是从s0到s2的路径,我认为是(a(b(ab))和从s0到s4的路径,我认为是b(a(ba))。但是我我不确定如何包含从s1到s3的路径。

DFA Image Problem

我尝试看一下这个link,试图了解他们如何将DFA转换为正则表达式,但是我仍然迷失了。

1 个答案:

答案 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)*)))

编辑:修正了一个错误,该错误已拖到最后一个表达式中