【问题标题】:Regular expression [ 1 ( 0 1* 0)* 1 ]* DFA正则表达式 [ 1 ( 0 1* 0)* 1 ]* DFA
【发布时间】:2019-04-01 04:23:44
【问题描述】:

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

【问题讨论】:

    标签: regex automata dfa automata-theory


    【解决方案1】:

    末尾的 * 可以表示初始状态正在接受,并且自动机在接受任何内容时都会返回此状态。调用初始状态 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)-\
         ^    \
         |    /
         \0,1/
    

    应该这样做。

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

        你有什么想法

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

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

        【讨论】:

          猜你喜欢
          • 2016-01-03
          • 2012-12-16
          • 1970-01-01
          • 2020-09-21
          • 1970-01-01
          • 2015-11-14
          • 1970-01-01
          • 2017-11-28
          • 2013-08-05
          相关资源
          最近更新 更多