形式语言

有限自动机

为什么一台没有“思考能力”的机器,也能快速判断字符串是否合法?

有限自动机不需要记住整段输入,只要维护当前状态,并在读取每个字符时按规则跳转,就能完成很多看似复杂的识别任务。

先动手

先试一次,再理解原理

先输入一个二进制字符串,再单步读取字符,观察自动机为什么会接受或拒绝它。

互动实验

有限自动机实验台

挑一个字符串规则,再让 DFA 和 NFA 一起逐字符扫描。你会看到:机器并不理解“含义”,它只是在有限状态之间按规则跳转。

机器只需要记住结尾附近的模式,就能判断字符串最后是不是 01。

当前规则用正则写成 /01$/。实验里会把同一输入同时交给 DFA 和 NFA,帮助你比较“单一路径”和“多状态并行”的差别。

当前字符1
DFA 当前状态q0
NFA 活跃状态q0
最终判断接受
参数调节输入 1101收起

当输入长度增加时,DFA 始终只保留一个当前状态;而 NFA 会保留一组可能状态。无论内部走法怎样不同,最终接受语言可以是一样的。

规则表达式/01$/

尝试切换示例输入,比较自动机是如何逐步锁定答案的。

1101
q0还没形成结尾 01
q1最后一个字符是 0
q2已经形成结尾 01
DFA 当前位置q0展开

每读完一个字符,DFA 都只会落在一个确定状态。

NFA 活跃状态集q0展开

NFA 允许保留多条可能路径,所以会同时追踪一组状态。

当前是否接受尚未读完展开

只有当全部字符读完后,自动机才会依据终止状态给出最终判断。

快速认识

先用一句话知道它是什么

有限自动机是一种只靠当前状态和输入字符,就能完成模式识别的规则机器。

理解主线

再把关键变化顺下来

有限自动机在任何时刻都只处于一个状态。

它每读到一个字符,就根据当前状态和字符跳到下一个状态。

输入结束时如果停在接受状态,字符串就被认为“符合规则”。

核心公式

用模型把关系写清楚

接受条件

w 被接受 ⇔ δ̂(q0, w) ∈ F

从初始状态 q0 开始把字符串 w 全部读完,如果最终落在接受状态集合 F 中,就说明它满足规则。

符号含义

  • q0 初始状态
  • w 输入字符串
  • δ̂ 扩展转移函数,表示整串输入的累计跳转
  • F 接受状态集合

适用说明

  • 单步规则写成 δ(q, a) = q'。
  • 实验里的每一步高亮,都是在构造 δ̂(q0, w) 的过程。

核心概念

把最重要的三个点讲清楚

状态就是“机器目前记住了什么”

自动机不会存整段历史,而是把关键信息浓缩进当前状态。

转移规则决定识别逻辑

同样的输入字符,在不同状态下会导致不同跳转,这就是模式识别的本质。

接受状态给出最终判断

不是每一步都判断合法,而是在输入结束后看机器停在什么状态。

现实应用

这些场景真的会用到它

编译器词法分析

标识符、关键字、数字常量等 token 的识别,经常先被建模成自动机。

输入校验与协议解析

邮箱格式、日志模式、通信协议字段等结构化字符串,常用有限自动机快速判断是否合法。

控制系统状态机

电梯、门禁、流程控制器等系统的状态切换,也常用自动机思维描述。

继续探索

继续探索:从有限自动机走向正则表达式、上下文无关文法与编译原理。

返回首页继续浏览