我有Aho-Corasick算法的代码。但是在搜索给定字符串列表中的文本时,我仍然不明白如何在查找过程中使用状态信息。
例如,我有一个字符串列表[MOSCOW][COLA]
,现在我需要确定列表中是否有CA
,如果是,它的位置是什么?
答案 0 :(得分:2)
您正在学习的算法完全相反。如果字典为[MOSCOW][COLA]
,输入字符串为CA
,则算法会告诉您MOSCOW
中CA
的所有位置,以及{{1}的所有位置在COLA
。
现在一个特定的状态(或CA
,就像链接代码所称的那样),具有如下含义:“我们可能只是在{{1}中的唯一Node
之后但是,我们肯定不在C
的中间位置。 (这可能是在COLA
的第一个字符后访问的节点。)
在搜索不同的输入时,例如MOSCOW
,更容易看到算法的强大功能。在看到CA
之前,当前状态将意味着“我们可能将5个字符转换为潜在的MOSCOLONI
,或将2个字符转换为潜在的L
”重要的是,国家立刻查看所有字典词;事实上,当你考虑重复字符时,甚至在所有单词中的所有位置。