序列自动机
序列自动机简介
序列自动机接受且仅接受一个字符串的所有子序列。
设这个字符串为 \(s\),字符集 \(\Sigma=\{0,1,\dots,|\Sigma|-1 \}\)。
序列自动机上有 \(|s|+1\) 个状态 \(start,1\dots |s|\)。状态 \(i\) 可以表示以 \(s_i\) 为结尾的子序列。
转移 \(\delta(u,c)\ (c\in \Sigma)\) 为 \(u\) 后下一个等于 \(c\) 的位置。
于是它形成了一个 DAG,且边数恰好为 \((|s|+1)|\Sigma|\)。
如果一个状态的一种转移不存在,就把它连到一个不存在的状态,走到这个状态时就不能接受。
然后没了,结构比较简单。
Written by Alan_Zhao