多字符串匹配-Commentz-Walter

1、Commentz-Walter算法是BM算法的自然扩展,它的速度并不快。 2、用TRIE表示P模式串集的所有模式串的反转,在文本串的pos位置从后向前识别文本的最长后缀u,使得u是某个模式串的后缀。找到一个出现,就报告一个成功匹配,然后根据在多模式串集合上的d1,d2,d3来移动。 3、使用三个扩展的BM的d1,d2和d3,将当前位置向移动。对于TRIE的每个状态,都需要计算前两个函数d1和d2,当识别了最长后缀u并抵达状态q时,根据这两个函数进行移动: 1)d1(q)是使得u=L(q)与某个模式串的子串对齐的最小移动距离。 2)d2(q)是使得u=L(q)的一个后缀与某个模式串的前缀相匹配的最小距离 3)对于字母表中的每个字符σ和每个位置0<=k<=Lmax,d3[a,k]是使得位置pos-k处的字符与模式串中的某个字符相匹配的最小移动距离。 3、假设从文本位置pos从后向前读入了k个字符,并且在自动机中抵达状态q,那么移动距离S[q,pos,k]由下面的公式计算: S[q,pos,k]=min(max(d1[q],d3[T(pos-k),k]),d2[q])
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值