KMP算法之我见(加深与优化)

来源:互联网 发布:飞鸟各投林 知乎 编辑:程序博客网 时间:2024/05/25 18:11

KMP算法之我见(加深与优化)[已删除]

 

好吧,为我之前做研究的草率行为赶到羞愧,本来本文删除的,但是决定恢复以作警示。

下一篇文章将会继续研究KMP算法,这次应该会有比较清晰正确的思路。

经过一天的反复思考,终于至少理解了一般的KMP算法。

分类: 学海无涯·数据结构和算法 16人阅读 评论(0)收藏编辑删除

引题:之前做KMP算法的时候就已经发现了我的代码量相比其他的实现大了很多,在实现过程中也隐约感觉到NEXT数组求法中似乎有些递推关系,但总是感觉有层捅不破的膜,最终实现的时候,顺理成章采用了思维相对简单的暴力遍历模式串前缀后缀子串的做法,去求最大的相等的前后缀子串而得到NEXT值,效率不高。

 

下面开始对KMP算法的NEXT数组求法的优化思路的顺理:

(哎,无语,试图用文字说明,实在繁琐,但是图片说明的话我又是个图表处理盲,算了,我还是在纸上推算,上截图吧)

最终还是选择了word尝试着做,但是做了很久,有思路阻塞也有word编写阻碍,总之用了很久的时间,而且结果我还是不太满意,感觉还是说的有些绕,自己的思路也不是非常清晰,或者表达不是很直观。

 

后续:今天早上因为即将考试的缘故,复习了一会儿PLC,下午的时候又开始了KMP算法的理解,正推反推具体举例抽象代数都没能理清头绪,甚至想放弃了,想着反正我已经会了一种KMP算法(回头想想之前的暴力遍历求NEXT真的是有点逃避了KMP的精髓),这个麻烦的思路读不懂算了,为了以后减轻代码量可以把他的结论记下来就算了,虽然不甘,还是反复找了电脑里所有的数据结构的视频、好几个版本的书籍、上网看了例程,还是没有头绪。真的要放弃了,结果看到July大神的博文关于KMP算法的文章,最后说他彻底理解KMP算法前前后后用了一年,并且说了一句,学算法,要养心。顿时决定不放弃,继续看书,最终实现反复停留在书上的一句话:Pk不等于Pj,则成了主串和模式串都是P串的另一个模式匹配问题。这句话之前看了很多遍都不理解就选择了跳过,后来发现问题的关键就是这句话,配合之前做的各种实验,穿透了心中那层剥膜,终于有了新的想法。

 

后续会补上新的实现代码,相信写了代码之后,思路会更加清晰。

 

0 0
原创粉丝点击