我正在尝试解决有关NFA的问题。说明如下:字母{a,b,c}。 •L1是其最后一个字符与其倒数第五个字符相同的所有字符串。例如,应接受字符串aaacbacbca,因为倒数第五个字符和最后一个字符都是a。应该拒绝字符串ccaab,因为倒数第五个字符是c,最后一个字符是b。这是我提出的问题,但我在本主题中是初学者,我不确定是否正确:
答案 0 :(得分:3)
您现在拥有的自动机只接受以acbca
结尾的字符串。以下是达成解决方案的步骤:
a
b
,c
答案 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]
,但为了清楚起见,我省略了它们。