【问题标题】:Nondeterministic finite automata (NFA) correction非确定性有限自动机 (NFA) 校正
【发布时间】:2016-08-17 03:10:51
【问题描述】:

我正在尝试解决有关 NFA 的问题。指令如下:字母{a, b, c}。 • L1 是最后一个字符与倒数第五个字符相同的所有字符串。例如,字符串 aaacbacbca 应该被接受,因为倒数第五个字符和最后一个字符都是 a。字符串 ccaab 应该被拒绝,因为倒数第五个字符是 c,最后一个字符是 b。这是我想出的,但我真的是这个话题的初学者,我不确定是否正确:

【问题讨论】:

  • 我想正则表达式应该是^[abc]*([abc])[abc]{3}\1$,但它有一个反向引用,您必须将其扩展为 3 个分支。

标签: regex string algorithm logic nfa


【解决方案1】:

您目前拥有的自动机只接受以acbca 结尾的字符串。以下是解决问题的步骤:

  • 更改您拥有的自动机,使其接受所有具有倒数第五个符号的字符串a
  • 对符号bc 执行相同操作
  • 组合3个自动机

【讨论】:

    【解决方案2】:

    您几乎是对的,但您绘制的自动机只接受以acbca 结尾的字符串。这个会接受你想要的字符串

    a,b,c     a      a,b,c   a,b,c   a,b,c    a     a,b,c
    ,--->[q0]--->[q1]--->[q2]--->[q3]--->[q4]--->{q5}----+>[q16]-----.
    |    /|   b      a,b,c   a,b,c   a,b,c    b     a,b,c|   ^ a,b,c |
    `---´ +----->[q6]--->[q7]--->[q8]--->[q9]--->{q10}---+   `-------´
          |   c      a,b,c   a,b,c   a,b,c    c     a,b,c|
          `----->[q11]-->[q12]-->[q13]-->[q14]-->{q15}---´
    

    {q5} 这样的状态是接受状态,而像 [q0] 这样的状态是不接受状态。 q16 的含义是确保两个相等的字母相隔 4 个字符但没有结束的字符串沉入非接受状态。状态 [q4] 中的字母 b,c、状态 [q9] 中的字母 a,c 和状态 [q14] 中的字母 a,b 可能也是如此,但为了绘图清晰,我省略了它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-10
      • 2018-07-14
      • 1970-01-01
      • 2019-06-23
      • 2017-11-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-08
      相关资源
      最近更新 更多