腾讯云
开发者社区
文档
建议反馈
控制台
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
登录/注册
首页
学习
活动
专区
工具
TVP
最新优惠活动
返回腾讯云官网
知秋
技术交流
专栏成员
举报
1
文章
251
阅读量
1
订阅数
订阅专栏
申请加入专栏
全部文章(1)
数据结构与算法(1)
数学(1)
状态机(1)
字符串(1)
搜索文章
搜索
搜索
关闭
KMP算法的数学原理(优化版)
数学
状态机
字符串
数据结构与算法
对于一个有限自动机M,它是一个5元组(S,s₀,A,Σ,δ),S是有限状态集,s₀是初始状态(x₀∈X),A是可接受状态集(A⊆X),∑是有限输入表,δ是状态转移函数(从S×Σ到S的映射)。假定有一个模式串p="abaabcb"(长度m),待匹配字符串s="abaabaabcb"(长度n),当第5个字符'c'匹配失败时,寻常的做法是将p的索引回退到0,s的索引回退到1,再重新进行匹配。观察s与p得知:p0...4==s0...4,p0...1==p3...4=="ab",当s5与p5无法匹配时,可以尝试判断s5==p2是否成立,若成立,由前面的推论可知p0...1,2==s3...4,5,所以第5个字符匹配失败时,可以将p的索引回退到2继续进行比较,这样就无需变动s的索引,节约了计算时间,所以只要能够为状态机设计出合理的状态转移函数,就能够加速字符串的匹配。
用户10300703
2023-07-20
251
0
没有更多了
社区活动
【纪录片】中国数据库前世今生
穿越半个世纪,探寻中国数据库50年的发展历程
立即查看
Python精品学习库
代码在线跑,知识轻松学
立即查看
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
立即体验
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
立即查看
领券
问题归档
专栏文章
快讯文章归档
关键词归档
开发者手册归档
开发者手册 Section 归档