字符串-最小后缀自动机与有限状态自动机

 

 

1、 最小后缀自动机
 一个串x的最小后缀自动机SA(suffixautomaton),记为SA(x),即识别串x的所有后缀的最小确定自动机. 如图1所示,该自动机可以接受串baabbaa的以下所有后缀:
ε,a,aa,baa,bbaa,abbaa,aabbaa,baabbaa.
  已经存在以线性复杂度构造SA的算法,对长度为m的串x,构造时间为O(m),且SA(x)的大小(包括节点数与边数)为O(mσ).
  从图1中可以看出,该图有多个起始状态和多个终止状态,不要被其表面的后缀2字引诱,只是说可以接受串的后缀,如果某个串能被这个自动机接受,那这个串必须得按从前向后的顺序读入,而不是从后向前的方式。
2、有限状态自动机
本文所用到的正向有限状态自动机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σ).
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值