Skip to content

确定性有限自动机

Deterministic finite automaton · DFA

具有有限状态、总转移函数并逐符号读取输入的确定性计算模型。

形式陈述

有限状态自动机的共同骨架上,确定性有限自动机(DFA)把转移限定为总函数。它是五元组

M=(Q,Σ,δ,q0,F),

其中 Q 是有限状态集,Σ 是输入字母表,δ:Q×ΣQ 是总转移函数q0Q 是初态,FQ 是接受状态集。扩展转移递归定义为

δ(q,ε)=q,δ(q,wa)=δ(δ(q,w),a).

自动机识别的语言L(M)={wΣ:δ(q0,w)F}。由于 δ 对每个状态—字符对都恰给出一个后继,每个输入字只有一条运行。若允许零个或多个后继,就进入 NFA 的关系式语义,不能继续沿用本页的单状态递推。

直觉

DFA 从左到右只读输入一次,过去的全部信息被压缩进当前有限状态。状态不是“刚读到哪个字符”,而是未来判断仍需知道的历史摘要;对奇偶语言,摘要只需一个比特。有限状态意味着记忆容量不随输入增长,因此它能记模计数、有限后缀和有限协议阶段,却不能精确保存任意大的计数。转移函数是确定且总的,每读一个符号都恰有一个下一状态。

例子与边界

识别二进制串中 1 个数为偶数的 DFA 只需状态 qe,qo。读 0 保持状态,读 1 在二者间切换,初态和唯一接受态为 qe。输入 1011 依次经历 qe,qo,qo,qe,qo,故拒绝。

读取 0 时留在原状态,读取 1 时切换状态;双圆是接受态。

边界语言 {0n1n:n0} 要求记住任意多个前导 0 的精确数量,再与 1 比较;任何固定有限状态集最终都会混淆两个不同计数。自动机状态数可以很大,但只要与输入长度无关,仍无法提供无界记忆。

推论与应用

DFA 恰好识别正则语言,并与 NFA、正则表达式在表达能力上等价。自动机最小化把状态压缩为不同未来行为的等价类。

词法分析、网络协议监控、硬件控制器和字符串扫描广泛使用有限状态机;状态积构造还可组合多个监视条件。运行时验证可以让有限自动机消费已观测事件并报告有限前缀是否匹配。

若对象是无限运行,则需Büchi 自动机ω-自动机,用“无限次访问接受状态”取代读完整个有限字后的终态接受;有限字 DFA 的定义与判定不能原样承担这一任务。

参考资料
  • Michael Sipser, Introduction to the Theory of Computation, 3rd ed., Chapter 1.
  • John E. Hopcroft, Rajeev Motwani, and Jeffrey D. Ullman, Introduction to Automata Theory, Languages, and Computation, 3rd ed., Chapter 2.