[英]Is my transition function correct (String matching with finite automata)
我正在从CLRS学习具有有限自动机的字符串匹配。 我正在解决一些运动问题。对于运动问题32.3-1,
构造模式P = aabab的字符串匹配自动机,并说明其在文本字符串T = aaababaabaababaab上的操作。
以下是我的转换函数,
states a b
0 1 0
1 2 0
2 2 3
3 4 3
4 4 5
5 ? ?
我的转换函数正确吗? 那我怎么填最后一行呢? 任何帮助
我假设您正在创建一个有限自动机,该自动机接受包含模式aabab
的字符串。
有限自动机有两个错误,
在状态3
和状态4,
对于状态3
,如果输入为b
,则必须返回状态0
。 例如, aabb
模式将迫使您返回状态0
。 在这里,您必须从状态0
重新开始。
对于状态4
,如果输入为a
,则必须返回状态2
因为您具有模式aa
。 例如,模式aabaa
将迫使您返回状态2
。
修正后的有限自动机如下所示,
states a b
0 1 0
1 2 0
2 2 3
3 4 0
4 2 5
5 5 5
这里5是您的接受状态。 仅当在字符串中找到所需的模式时,您才会达到此状态。 一旦找到模式,无论什么字符串保持接受状态。 因此,对于状态5
输入a
和b
,状态5
本身都保持不变。
过渡函数是fa接受带有子字符串“ aabab ”的字符串的函数 。 如果你想回到状态1
的a
和0
为b
,那么转换函数接受与子串“aabab的 ”结尾的字符串。 假定只有状态5是接受状态。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.