【问题标题】:DFA for strings not containing 101101 as substring不包含 101101 作为子字符串的字符串的 DFA
【发布时间】:2019-12-17 23:46:10
【问题描述】:

给定语言 L={ w | w belongs to (0,1)*, w does not contain the substring 101101},为此构造 DFA。

我知道,如果我可以为 (0,1)* 上的所有字符串集绘制 DFA,使得 101101 是一个子字符串,那么我可以简单地使用互补来找到所需的 DFA ..

谁能帮我为L构建DFA

【问题讨论】:

  • 看来您已经有了策略。您在尝试创建 DFA 时遇到了什么具体问题?

标签: finite-automata dfa


【解决方案1】:

我认为此 DFA 将满足您的要求。

【讨论】:

    【解决方案2】:

    你的想法是对的。以下是写出来的步骤:

    首先,为所有包含 101101 作为子字符串的字符串的语言制作 DFA。所有此类字符串都可以以任何开头和结尾,只要它们之间有 101101 即可。换句话说,这种语言的正则表达式是(0+1)*101101(0+1)*。 DFA 如下所示:

        |
        |
        |  /-0-\
        V /    |
       (q0)<---+
        |      |
        1      |
        |      |
        V      |
       (q1)--1-+
        |      |
        0      |
        |      |
        V      |
       (q2)--0-+
        |      |
        1      |
        |      |
        V      |
       (q3)--0-+
        |      |
        1      |
        |      |
        V      |
       (q4)--1-+
        |      |
        0      |
        |      |
        V      |
       (q5)--0-+
        |
        1
        |
        V
      [[q6]]<-\
         |    |
         \-0,1/
    

    State [[q6]] 是接受状态,因为如果您看到必要的子字符串,您就会到达那里。

    其次,我们需要取补。对于 DFA,这很容易:我们将所有接受状态更改为不接受,反之亦然。所以,我们的新 DFA 看起来一样,但有 (q6) 不接受和 [[q0]][[q1]][[q2]][[q3]][[q4]][[q5]] 接受。

    【讨论】:

      猜你喜欢
      • 2018-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-12
      • 2014-03-23
      • 2016-04-15
      相关资源
      最近更新 更多