【发布时间】:2015-08-13 02:01:23
【问题描述】:
我正在学习使用 CLRS 的有限自动机进行字符串匹配。我正在解决一些练习题。对于练习题32.3-1,
为模式 P = aabab 构造字符串匹配自动机并说明 它对文本字符串 T = aaababaabaabaabaab 的操作。
以下是我的过渡函数,
states a b
0 1 0
1 2 0
2 2 3
3 4 3
4 4 5
5 ? ?
我的转换函数正确吗?我如何填写最后一行?任何帮助
【问题讨论】:
-
你的过渡函数有误。在状态 3 中,当遇到
b时,状态应该回到 0。在状态 4 中,当遇到a时,状态应该回到 2。 -
@HuStmpHrrr 感谢您的回复 :).. 你能详细说明一下吗?我的意思是在状态 3 遇到 b 时,匹配字符串后缀的最长模式前缀是 "aab" ,因此它应该回到状态 3,它怎么能回到 0.Silmilarly 在状态 4 ,当遇到a,匹配文本后缀的模式的最长前缀是“aaba”,因此它应该回到状态4,它怎么能回到状态2..如果我理解错误,请纠正我.
标签: algorithm string-matching finite-automata clrs