后缀自动机
§ § 1.1 基本定义与概念
首先,来看看wikiEn的定义:
In computer science, a suffix automaton is the smallest partial deterministic finite automaton that recognizes the set of suffixes of a given string. The state graph of the suffix automaton without designated(特定的) accepting or rejecting states is called the directed acyclic(无环的) word graph (DAWG).
其次,来看看强大的论文是怎么说的:
简明定义:
对给定字符串s的后缀自动机是一个最小化确定有限状态自动机,它能够接收字符串s的所有后缀.
好吧,其实就是WikiEn第一句话的翻译~这篇论文实在是太强大了(虽然翻译是非常有问题的!所以应了我们高中老师说的话啊,有能力一定要看原版).下面是我读完并结合一些其他博客的见解.
形式定义:
Definition 1 初始状态 Definition 1 初始状态 后缀自动机拥有一个初始状态 state0 s t a t e 0 (简记为 t0 t 0 ),它能够到达所有其他的状态.
Definition 2 标记确定的唯一性 Definition 2 标记确定的唯一性 自动机中的所有转移——即有向边——都被某种符号(即该中字符串的字典符号)标记.从起始状态出发的诸转移的标记组成必须不同.
Definition 3 终止状态 Definition 3 终止状态 如果我们从初始状态t_0经由任意路径走到某一状态,并顺序写出所有经过边的标记,所得到的字符串必然是s的某一后缀,则称这些状态为终止状态.
对于论文中的简明定义,恰好要求了后缀自动机的一个重要性质.
Property 1 顶点最小性 Property 1 顶点最小性 在完成上述形式定义的所有自动机中,后缀自动机有最少的顶点数(边数并非最少).
随意给出两个例子:
从左往右依次记为状态 t0,t1,t2 t 0 , t 1 , t 2 ,则
t0→t1:‘a’,子串;t0→t2:‘b’,后缀;t0→t1→t2:‘ab’,后缀; t 0 → t 1 : ‘a’ , 子 串 ; t 0 → t 2 : ‘b’,后缀 ; t 0 → t 1 → t 2 : ‘ab’,后缀 ;
从左往右依次记为状态 t0,t1,t2,t3,t4 t 0 , t 1 , t 2 , t 3 , t 4 ,下面则是 t5,t6 t 5 , t 6 ,则
t0→t1,t0→t2,t0