把过去压缩成状态
有限状态机把系统在某一时刻需要记住的信息归纳为有限个状态。输入触发状态变化,转移规则规定当前状态与输入怎样共同决定下一步。在确定有限自动机的常见定义中,还需指定有限输入字母表、一个初始状态和一组接受状态。
状态图用节点表示状态,用带输入标签的箭头表示转移;同样的信息也可写成转移表。图上的自环表示读取某个输入后仍停留在原状态,不表示机器没有处理输入。固定的状态集合可以反复访问,所以有限状态数并不限制运行步数。
参考:[1]
两个状态怎样检查奇偶
考虑一个只判断二进制串中 1 的个数是否为偶数的机器。设 E 表示目前读到偶数个 1,O 表示奇数个。机器从 E 开始:读取 0 时保持原状态,读取 1 时在 E 与 O 之间切换;E 是唯一接受状态。
例如输入 101,状态依次为 E、O、O、E,读完后接受;输入 10 则结束于 O,因而拒绝。空串没有任何 1,机器保持初态 E,也会接受。这个模型不保存 1 的确切个数,只保存后续判断真正需要的奇偶信息。
参考:[1]
接受条件与等价表示
机器接受的全部字符串构成它识别的语言。接受与拒绝是在整个输入处理完后判断;中途经过接受状态,不保证较长输入最终仍被接受。改变接受状态集合,即使转移规则完全相同,也可能改变识别的语言。
非确定有限自动机允许多个备选转移以及不消耗输入的转移,存在一条完整的接受路径便算接受。用确定机器的一个状态表示非确定机器的一组可能状态,可以消除这种非确定性。两者识别能力相同,恰好对应正则语言;形式正则表达式也是这类语言的等价表示。等价不意味着不同表示的长度或状态数一定相同。
与可扩展工作空间的区别
有限状态机的限制在于可区分的记忆情形只有有限种。它能记住奇偶,却不能对无上限的先前数量分别保留不同状态。因此,要求先读任意多个 0,再读同样多个 1 的语言超出了有限自动机的识别能力;证明这一点需要严格论证,而不是只凭图画不出来。
图灵机除了有限控制状态,还具有可读写并可继续扩展使用的纸带。更多记忆能力来自这块工作空间,并不是来自无限多个控制状态。比较两种模型时,应区分输入可以很长、运行可以很久,以及机器能否保存越来越多的信息:前两项本身并不能取消有限状态模型的记忆限制。