本文所用到的正向有限状态自动机FFA(forward finiteautomata)实际上就是正向识别模式的一般有限状态自动机,只是在运行方式上有所不同.由于在反向后缀自动机运行结束时算法已经匹配了模式的一个(或多个)前缀,所以正向有限状态自动机运行时不是从传统的开始状态开始,而是从已匹配的最大前缀所对应的状态开始.开始状态集合中不包含传统的初始状态,这是因为当前一阶段识别的前缀为ε时,不需要使用FFA进行扫描.在实现中,常常用已识别前缀的长度来表示状态.如图2所示,该自动机使用不同的开始状态1,2,3,4,5,6,7,分别可以接受串aabbaab的不同后缀:abbaab,bbaab,baab,aab,ab,b,ε.
FFA的构造也是一个简单的问题,使用与DFA匹配算法[10]相同的构造算法构造模式的FFA,其构造时间复杂度是O(m+σ),空间复杂度是O(mσ).
314




被折叠的 条评论
为什么被折叠?



