最近在复习严蔚敏的数据结构,看到KMP时对其中Next的求法产生兴趣。话费若干时间后,弄懂了next的求法,代码,以及KMP的算法和代码。唯独对“怎么由Next求法的理论,想出其实现代码?”一直想不清楚。其实next的实现代码本身我已经懂了,让我自己写也能写出来,但这个是背的。也就是给一个类似“求Next数组”的题目,我不能给出相应的代码。
于是查找资料,通过查看文章“深度解析KMP”
了解到,其中涉及到自动机的概念。(忘完了,惭愧啊)
遂查找自动机相关资料,得到“ac自动机”和“计算理论导引”一书。下载《计算理论导引》,充电期间会把它恶补下。
后又找到“深度剖析KMP,让你认识真正的Next”
对其中的“POJ 3461 Oulipo”产生兴趣,查找到 POJ是“北京大学程序在线评测系统”(Peking University Online Judge)的缩写。
进入 http://openjudge.cn/ ,发现里面有好多算法相关的题目供练习使用,很感兴趣,就注册了帐号。 http://openjudge.cn/user/42506/,欢迎交流。
由于“搞懂AC自动机,先得有模式树(字典树)Trie和KMP模式匹配算法的基础知识。”所以稍后再研究ac自动机。AC自动机算法详解