非确定性有限自动机 (NFA) 校正

Posted

技术标签:

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

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

【问题讨论】:

我想正则表达式应该是^[abc]*([abc])[abc]3\1$,但它有一个反向引用,您必须将其扩展为 3 个分支。 【参考方案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 可能也是如此,但为了绘图清晰,我省略了它们。

【讨论】:

以上是关于非确定性有限自动机 (NFA) 校正的主要内容,如果未能解决你的问题,请参考以下文章

2021年下半年软件设计师上午真题答案及解析

利用子集构造法实现NFA到DFA的转换

非确定的自动机NFA确定化为DFA

非确定的自动机NFA确定化为DFA

非确定的自动机NFA确定化为DFA

非确定的自动机NFA确定化为DFA