发布者认证信息(营业执照和身份证)未完善,请登录后完善信息登录
总算认识考研中关于计算KMP算法中的next数组和nextval数组

爱品网

爱品网 IPNO.CN

b2b免费推广平台

扫扫有惊喜

 
 
 
当前位置: 首页 > 供应 » 教育培训 » 总算认识考研中关于计算KMP算法中的next数组和nextval数组
 

总算认识考研中关于计算KMP算法中的next数组和nextval数组

点击图片查看原图
起订:
供货总量:
发货期限: 自买家付款之日起 天内发货
所在地: 湖北
有效期至: 长期有效
最后更新: 2021-11-25 13:51
浏览次数: 83
在线咨询
 
总算认识考研中关于计算KMP算法中的next数组和nextval数组 详细说明

  考研中KMP算法中,如何手动求next数组和nextval数组?
  首先我们要理解next数组的意义,为了实现更加高效的字符匹配,next数组是用来寻找字符串数组内部的自身的一种规律,利用字符串内部的一种相似性,来优化字符串数组匹配算法。所以才需要计算这么一个next数组来帮助算法更好的实现字符串匹配。
  next数组的计算方式逻辑上稍微复杂,初学者可能很难看懂,所以首先要理解,为什么要计算next数组以及更加优化的nextval数组。 假如有这样一串字符串 1 2 3 4 5 6 a a a a a a 这可以说是一个字符串间规律最强的一个数组了吧,让我们来手动模拟一下。
  首先默认第一位是0,第二位是1,从第3位开始求,比较第3-1位和next[3-1]的字符是否相同,若相同,则next[3]=next[2] 1 所以第3位的值就是2.那么依此类推就可以得到,这个字符串的next数组为 1 2 3 4 5 6 a a a a a a 0 1 2 3 4 5 总结来看就是相同就在他的next数组值加1. 那么有这样一个字符串那 1 2 3 4 5 6 a b c d e f 默认给出第1位为0 第二位为1 ,发现全都不一样,可以说毫无相关性了,所以next数组为 1 2 3 4 5 6 a b c d e f 0 1 1 1 1 1
  这两种极端情况可以让大家初步了解一下计算next数组的方法,起码可以初步理解一下next数组的意义。但是这还不完善。 下面介绍一到北邮2016年考研真题 1 2 3 4 5 6 7 8 a b a a b c a c 0 1 1 2 2 3 1 2 这是一个考试常见的字符串,是如何计算的那?
  第n位:next[n]的值来自于第n-1位的字符,通过跟第next[n-1]位字符比较,如果相同next[n]=next[n-1],如果不相同,就跟第next[next[n-1]]位的字符比较,就这样迭代直到相同的时候,加上1,如果实在没有,就为1. 这一段话可能很难理解,逐位分析。 让我们从依次来看: 第3位:第2位和第1位比较,不相同 所以为1 第4位:第3位和第1位比较,相同,所以为2 第5位:第4位和第2位比较,不相同,和第1位比较,相同,所以为2 第6位:第5位和第2位比较, 相同,所以为3 第7位:第6位和第3位比较,不同,和第1位比较,不同,所以为1 第8位:第7位和第1位比较,相同,所以为2. 这就是next数组的手动计算方法。
  接下来介绍如何根据next数组计算nextval数组 nextval是在next数组的基础上优化算法,避免不必要的浪费。其实我也不太理解nextval的具体原理,现只能介绍一下如何计算。 依旧用上面北邮的真题为例,其真题本身求的就是nextval数组 现在我们已经有了next数组: 1 2 3 4 5 6 7 8 a b a a b c a c 0 1 1 2 2 3 1 2 现在通过next数组计算nextval数组,nextval数组与next相反,是找不同, 1 2 3 4 5 6 7 8 a b a a b c a c 0 1 1 2 2 3 1 2 0 1 0 2 1 3 0 2 第1位:必为0 第2位:第2位next值为1,所以第2位和第1位比较,不同,为第2位的next 值1 第3位:第3位next值为1,所以第3位和第1位比较,相同,因为到第1位了,所以为0 第4位:第4位next值为2,所以第4位和第2位比较,不同,就为第4位next值2 第5位:第5位next值为2,所以第5位和第2位比较,相同,则继续,第2位和第1位不同,则为第2位的next值1 第6位:第6位next值为3,所以第6位和第3位比较,不同,就为第6位的next值3 第7位:第7位next值为1,所以第7位和第1位比较,相同,则为0 第8位:第8位next值为2,所以第8位和第2位比较,不同,则为第8位的next值2
  【简而言之】第n位nextval数组值就是,让第n位字符和第next[n]位比较,不同,则nextval[n]=next[n],如果相同,则比较第next[next[n]]位和第next[n]位比较,如果不同,则nextVal[n]=next[next[n]].就是这样的计算方式。


总算认识考研中关于计算KMP算法中的next数组和nextval数组是勤学思教育网的主要产品,我们的产品负责人是张生,有需要的朋友请直接拨打我的电话13988888888,我们的地址是勤学思教育网,期待与您的合作!
免责声明:[ 总算认识考研中关于计算KMP算法中的next数组和nextval数组]信息是由该公司[勤学思教育网]自行发布,该企业负责信息内容的真实性、准确性和合法性。[爱品网]仅列示上述信息,上述信息描述仅代表信息发布日的情况,不担保该信息的准确性,完整性和及时性,也不承担浏览者的任何商业风险。
本产品网址 : https://www.ipno.cn/xiaoshou/i324376.html 可发送到QQ/微信/微博/博客等平台来推广此信息
 

公司信息

企业级别:VIP [VIP第1年] 指数:2

联 系 人:张生(先生) 

公司电话: 13988888888

所在地区:湖北

公司地址:勤学思教育网

 

网站首页 | 付款方式 | 关于我们 | 信息删除 | 联系方式 | 服务条款 | 版权隐私 | 网站地图 | 专题 | 排名推广 | 广告服务 | 积分换礼 | 网站留言 | RSS订阅 | 鄂ICP备14015623号-2

爱品网是一个开放的平台,信息全部为用户自行注册发布!并不代表本网赞同其观点或证实其内容的真实性,需用户自行承担信息的真实性,图片及其他资源的版权责任! 本站不承担此类作品侵权行为的直接责任及连带责任。

如若本网有任何内容侵犯您的权益,请联系: 473199705@QQ.COM

©2012-2021爱品网 免费信息发布平台,免费推广平台,免费B2B网站爱品网 www.ipno.cn
免责声明:本站所有信息由各公司自行发布,请在交易前确认真实合法性,本站不承担任何交易及知识产权侵权的法律责任! 鄂公网安备 42018502005275