后缀自动机构造过程演示
昨天跟后缀自动机死磕了一下午,也没搞明白怎么回事。今天又把网上找到的资料重新看了一遍,顿时觉得一道大闪电从后脑劈过——好像突然有点明白了orz……
不过只能说目前勉强明白了后缀自动机是如何构建的,对于它的很多性质和用法,还有待学习。
本人弱菜一只,如有错误,欢迎指正~
本文只是后缀自动机构建过程的演示图,不负责解释理论部分。如果想看证明或者解释,推荐以下资料:
陈立杰课件:http://wenku.baidu.com/view/7afa5828ed630b1c59eeb512.html(这个真没看懂……)
构建演示+解释说明
http://fanhq666.blog.163.com/blog/static/8194342620123352232937/
http://hi.baidu.com/myidea/item/142c5cd45901a51820e25039
http://blog.sina.com.cn/s/blog_70811e1a01014dkz.html(对 len[a]=len[b]+1 和 len[a]>len[b]+1 这两个地方解释的非常清楚,强烈推荐)
以经典的aabbabd为例:
下图文字叙述中有两处错误,特此更正:
1.串aabb的可接受后缀是:"b", "bb", "abb", "aabb"。
2.如果把节点3设为可接受态,不合法的后缀有:"ab", "aab"
后面的过程都一样不想画了……=3=
总之最后建出来是这个样子的(人家画的明显比我好看多了QAQ):