“有限状态转导器把有限状态自动机的边从“只读一个标号”扩展为“读取输入片段并写出输出片段”。一种不偏向确定或非确定版本的定义是六元组”
形式陈述 ​
有限状态自动机以有限状态集
便得到一个同时容纳确定与非确定版本的骨架。对字
若存在一条运行的末状态属于
DFA要求每个状态—符号对恰有一个后继;NFA允许零个、一个或多个后继,并以“至少一条接受运行”解释接受。若再允许不消耗输入的边,就得到 ε-NFA。三种语法不同,但在有限字上定义同一个语言类。
直觉
自动机读过前缀后不会保存原文,只留下一个足以继续判断的摘要。状态名应回答“关于过去,未来还需要知道什么”,而不是机械记录“刚才读了哪个字符”。奇偶性、固定模数、最长相关后缀和协议阶段都只有有限多种摘要,因此适合有限状态;一个必须在未来原样取回的无界计数则不适合。
有限状态的限制不是运行时间短,而是记忆种类固定。自动机可以在一个长输入上执行任意多步,也可以反复经过环;无论输入多长,它在任一时刻只能从有限个控制状态中选取当前摘要。正是环让有限图能够描述无限多个字,有限并不意味着语言有限。
图表示尤其直观:节点是状态,带符号的边是一次读取,入箭头标初态,双圆标接受态。图只是五元组的可视化;布局距离、边的弯曲和状态名称都不影响语言。真正可观察的是哪些带标签路径从初态通向接受态。
例子与边界
考虑一个简化连接协议,事件字母表为
状态可以取 idle、open、closed 和 error。只有在 idle 读到 connect 才进入 open,open 中可以反复 send,读到 close 后进入接受态 closed;其他次序进入 error。这台机器不必记住发送了多少次,只需记住会话位于哪个阶段,因此接受任意长但顺序合法的事件字。
若规范改成“close 前的 send 次数必须等于连接时声明的任意整数”,状态就必须保存一个无界数,有限状态模型不再足够。若声明值只取
工程中的“finite-state machine”有时指没有接受集合的控制器,或带输出的 Moore、Mealy 机。本页讨论的是读取完整有限字后以终态判定成员资格的接受器。加入栈、计数器、实值时钟或可写磁带都会改变配置空间,不能把这些额外存储算作一个“名字复杂的有限状态”。
输入若是无限字,也没有“读完后检查终态”的时刻。Büchi 等
推论与应用
有限状态模型把词法规则、固定模式搜索、有限协议监控与硬件控制统一为同一种带标签图。DFA 适合直接执行和取补,NFA 适合组合候选路径,二者之间可通过子集构造转换;选择表示影响大小与运行方式,不改变可识别语言。
经典正则表达式与有限自动机在“能够描述哪些有限字语言”这一层面等价:表达式提供组合语法,自动机提供逐步运行语义。这一限定见证的是表达能力,不是说一个表达式就是一台机器,也不保证双向翻译保持表示大小。
参考资料
- Michael Sipser, Introduction to the Theory of Computation, 3rd ed., Cengage, 2013, Chapter 1.
- John E. Hopcroft, Rajeev Motwani, and Jeffrey D. Ullman, Introduction to Automata Theory, Languages, and Computation, 3rd ed., Pearson, 2006, Chapters 1–2.