码迷,mamicode.com
首页 > 其他好文 > 详细

PAM

时间:2015-06-03 23:08:25      阅读:257      评论:0      收藏:0      [点我收藏+]

标签:

有关回文树有很多很好的教程,比如poursoul的blog。

无限Orz 毛子提出神算法。
Orz  iwtwiioi大爷的教程,popoqqq大爷的纠正
在此加深一下对于PAM的理论认识。
首先自动机要能【接受】所有的【满足条件的串】,这个PAM是肯定满足的,因为PAM的【每一个节点都是回文串】,而对于所有的【回文后缀】,我们用类似AC自动机的方法建立【连接】,因为考虑AC自动机fail指针的定义,我们沿着fail指针找到的是【最长的后缀】,而根据回文树的定义,回文树的每一个节点都是【极大回文串】,所以是可行的。
这究竟是不是【自动机】呢(⊙o⊙)?。
答案是肯定的XXXX。
考虑在PAM中,每一个点表示一个【回文后缀】,转移next[c]为从(S)转移到(c+S+c),这样我们可以在PAM的【状态图】上走出所有的回文串。(只不过每一个点【不一定】是代表了一个回文,【压缩】了状态)
然后深入探讨一下fail指针。
 
问:是怎么保证沿着fail指针找到的回文串是和【新加字符】连续的?
答:根据fail的定义,fail指向的是最长的后缀,由于是后缀,所以必然是连续的。
 
问:是怎么保证一定遍历过【最长的后缀】的?
答:自动机上每一个点都是一个回文串,而我们要找的是【之前出现的】【最长的】回文串,显然【所有的】回文串都在自动机上,而后类比AC自动机即可。
 
问:我会manacher,PAM是不是没有什么用?
答:PAM常数较大,编写复杂,但是其功能格外强大,可以支持在线,可以在自动机上dp,计数。但是PAM也不是万能的,manacher在有关回文半径的处理上是PAM无法替代的(反正我不会 囧)

PAM

标签:

原文地址:http://www.cnblogs.com/lawyer/p/4550350.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!