KMP算法

KMP算法,全称克努特-莫里斯-普拉特操作,是一种串模式匹配的高效算法
此算法发现于1977年,即40多年前

人如何从上下文中找出需要的段落呢?显然人不是从第一个字开始,错误后再从第二个字开始匹配
而是直接依照起始部分一大部分一大部分的转换,所以人匹配字符时很少看到他们回溯,而段落的巨大区别使这变的更不必要

如“我是一名……”
人直接找“我是一名”,而不是“我是一名”后面加起来的全部内容,这是完全出于经验的,知道后来的不太可能参与匹配,但实际上这也是科学的,因为省了计算量,是计算机的(桶排序也有类似的模糊性原理);
而对“我是一名”的匹配就是纯粹的KMP算法匹配。在两段话中找相似的部分,然后一一比较。

next[j]的意义是失配字符串中相似字符串的个数,即读到错误段落后前后相似的数量,然后移动到下一个“我是一名”,其移动位数为j-next[j]即字数减next[j],因为字数太多所以常常不予存储。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值