非确定性有限自动机 (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
对符号b
、c
执行相同操作
组合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) 校正的主要内容,如果未能解决你的问题,请参考以下文章