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

时间:2016-04-23 13:40:41

标签: regex string algorithm logic nfa

我正在尝试解决有关NFA的问题。说明如下:字母{a,b,c}。 •L1是其最后一个字符与其倒数第五个字符相同的所有字符串。例如,应接受字符串aaacbacbca,因为倒数第五个字符和最后一个字符都是a。应该拒绝字符串ccaab,因为倒数第五个字符是c,最后一个字符是b。这是我提出的问题,但我在本主题中是初学者,我不确定是否正确: enter image description here

2 个答案:

答案 0 :(得分:3)

您现在拥有的自动机只接受以acbca结尾的字符串。以下是达成解决方案的步骤:

  • 更改您拥有的自动机,使其接受所有包含最后一个和五个到最后一个符号的字符串a
  • 对符号bc
  • 执行相同操作
  • 合并3个自动机

答案 1 :(得分:1)

你几乎是对的,但你绘制的自动机只接受以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个字符但不在那里结束,下沉到不接受状态。同样可能适用于州b,c中的字母[q4],州a,c中的字母[q9]以及州a,b中的字母[q14],但为了清楚起见,我省略了它们。