正则表达式 [ 1 ( 0 1* 0)* 1 ]* DFA



这个正则表达式接受链的条件是什么?

末尾的*可以理解为初始状态是接受的,并且每当自动机接受任何东西时都会返回到此状态。调用初始状态 q1。

要接受 1(01*0(1,我们必须首先消耗 1 并进入新状态,例如 q2。从那里,我们可以在子表达式 01*0 上进行自我循环,方法是在 0 上转到新状态 q3,然后在 q3 中循环 1,然后在 0 上返回到 q2。

从 Q2 开始,我们可以在 1 上返回到 q0。我们的DFA看起来像:

     /--1--  /--0--
     |       |     |
     V      | V     |
--->(q1)-1->(q2)-0->(q3)-
     |               ^    
     0               |    /
     |               -1-/
     V
    (q4)-
     ^    
     |    /
     ,1/

这样的事情应该这样做。

当你不知道如何开始时,你应该写下正则表达式生成的几个第一个元素。在这种情况下:

SET = {eps, 11, 1001, 10101, ...}

然后尝试编造一些东西。不过你得到了答案,所以我不会重复这个。

也许你会得到一些想法

[[0-9s]+.*]*

演示:https://rubular.com/r/n3bVXJd3SFffr0

最新更新