编译原理-KMP算法-C++下载

weixin_39821051 2023-12-26 18:30:16
3.1 KMP算法综述 KMP算法是一个非常优秀的模式匹配算法,其对于任何模式和目标序列,都可以在线性时间内完成匹配查找﹐而不会发生退化,其时间复杂度为o ( mtn)。该算法相对于普通匹配算法的改进在于:每当一趟匹配过程中出现字符比较不等时,不许回溯指针i,而是利用已经得到的部分匹配的结果将模式向右滑动尽可能远的一段距离后,继续进行比较。 3.2 next数组的计算 正确求得next数组是实现KMP算法的关键,它决定了在匹配过程中出现字符不等时,模式串应该向右滑动的距离。next 数组定义如下: 求得next数组后,匹配按照如下方式进行:假设指针﹔和j分别指示主串和模式串中正待比较的字符,令i初值为pos,j的初值为l,若在匹配过程中对应位置字符相等,则i和j增1﹔如果出现不相等的情况,则j退到nextlj的位置继续进行比较。 3.3一行多次匹配的实现 由于原始的MP算法在完成一次模式匹配后会推出算法,想要实现一行多个的模式匹配,需要设计结构存储每一行模式匹配中,模式串出现的位置。因此定义数组linepos[20]来存储模式串在每一行出现的位置。 , 相关下载链接:https://download.csdn.net/download/qq_52019496/88618913?utm_source=bbsseo
...全文
9 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

13,654

社区成员

发帖
与我相关
我的任务
社区描述
CSDN 下载资源悬赏专区
其他 技术论坛(原bbs)
社区管理员
  • 下载资源悬赏专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧