正则语言的滑动窗口算法
1 流式算法与自动机
1.1 自动机基础定义
- 非确定有限自动机(NFA):是一个五元组 (A = (Q, \Sigma, I, \Delta, F)),其中 (Q) 是有限状态集,(\Sigma) 是字母表,(I \subseteq Q) 是初始状态集,(\Delta \subseteq Q \times \Sigma \times Q) 是转移关系,(F \subseteq Q) 是最终状态集。
- 确定有限自动机(DFA):是一个五元组 (A = (Q, \Sigma, q_0, \delta, F)),它有一个单一的初始状态 (q_0 \in Q) 代替 (I),并且有一个转移函数 (\delta: Q \times \Sigma \to Q) 代替转移关系 (\Delta)。
- 确定性自动机:与 DFA 格式相同,只是状态集 (Q) 不要求是有限的。若 (A) 是确定性的,转移函数 (\delta) 以通常方式扩展为 (\delta: Q \times \Sigma^ \to Q),对于 (x \in \Sigma^ ),定义 (A(x) = \delta(q_0, x))。自动机 (A) 接受的语言是 (L(A) = {w \in \Sigma^*: \delta(q_0, w) \in F})。
1.2 流式算法的定义与限制
流式算法从左到右读取输入字 (w = a_1a_2 \cdots a_m),并在每个时间点 (0 \leq t \leq m) 为某个目标函数 (f) 计算值 (f(a_1a_2 \cdots a_t))