KMP算法之我见(加深与优化)
2013-12-18 00:48
295 查看
KMP算法之我见(加深与优化)[已删除]
好吧,为我之前做研究的草率行为赶到羞愧,本来本文删除的,但是决定恢复以作警示。
下一篇文章将会继续研究KMP算法,这次应该会有比较清晰正确的思路。
经过一天的反复思考,终于至少理解了一般的KMP算法。
分类:学海无涯·数据结构和算法 2013-12-16 21:06
16人阅读 评论(0)收藏
编辑删除
引题:之前做KMP算法的时候就已经发现了我的代码量相比其他的实现大了很多,在实现过程中也隐约感觉到NEXT数组求法中似乎有些递推关系,但总是感觉有层捅不破的膜,最终实现的时候,顺理成章采用了思维相对简单的暴力遍历模式串前缀后缀子串的做法,去求最大的相等的前后缀子串而得到NEXT值,效率不高。
下面开始对KMP算法的NEXT数组求法的优化思路的顺理:
(哎,无语,试图用文字说明,实在繁琐,但是图片说明的话我又是个图表处理盲,算了,我还是在纸上推算,上截图吧)
最终还是选择了word尝试着做,但是做了很久,有思路阻塞也有word编写阻碍,总之用了很久的时间,而且结果我还是不太满意,感觉还是说的有些绕,自己的思路也不是非常清晰,或者表达不是很直观。
后续:今天早上因为即将考试的缘故,复习了一会儿PLC,下午的时候又开始了KMP算法的理解,正推反推具体举例抽象代数都没能理清头绪,甚至想放弃了,想着反正我已经会了一种KMP算法(回头想想之前的暴力遍历求NEXT真的是有点逃避了KMP的精髓),这个麻烦的思路读不懂算了,为了以后减轻代码量可以把他的结论记下来就算了,虽然不甘,还是反复找了电脑里所有的数据结构的视频、好几个版本的书籍、上网看了例程,还是没有头绪。真的要放弃了,结果看到July大神的博文关于KMP算法的文章,最后说他彻底理解KMP算法前前后后用了一年,并且说了一句,学算法,要养心。顿时决定不放弃,继续看书,最终实现反复停留在书上的一句话:Pk不等于Pj,则成了主串和模式串都是P串的另一个模式匹配问题。这句话之前看了很多遍都不理解就选择了跳过,后来发现问题的关键就是这句话,配合之前做的各种实验,穿透了心中那层剥膜,终于有了新的想法。
后续会补上新的实现代码,相信写了代码之后,思路会更加清晰。
相关文章推荐
- The State Machine Framework
- Java使用memcached
- Linux查看CPU和内存使用情况
- 运算符
- Zabbix Server trouble shutting
- LEAN 的思考
- 一个适用于层级目录结构的makefile模版
- JVM基础知识2 垃圾收集器与内存分配策略
- android:activity 生存周期
- poj 1797 Heavy Transportation
- C++学习之路—继承与派生(二):派生类的构造函数与析构函数
- jsp的4种会话跟踪技术
- MFC界面编程技术汇总
- Perl XML::Simple 的应用(二)
- Xcode
- oracel 导入导出
- 查找文本文件中的关键字
- java.mail的搜索过滤类
- Axis2 WebService(配置、发布、调用)
- OpenJudge计算概论-错误探测