我正在学习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 ? ?
我的过渡功能是否正确?我如何填写最后一行?任何帮助
答案 0 :(得分:1)
我假设您正在创建一个有限自动机,它接受包含模式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是您的接受状态。只有在字符串中找到所需的模式后,才会达到此状态。一旦找到模式,无论字符串保持在接受状态。因此,状态a
上的输入b
和5
都保留在5
本身上。
过渡功能是fa接受带有子字符串' aabab '的字符串。如果您要返回状态1
表示a
而0
表示b
,则转换函数会接受以子字符串结尾的字符串' aabab 强>&#39 ;.鉴于只有州5是接受国。