“Subsequential 转导器在sequential 转导器”
形式陈述 ​
本页采用“pure sequential”约定。Sequential 转导器是
其中
否则未定义。因此它直接实现函数型传导。允许终态再追加输出会得到subsequential 转导器;在本页术语下 sequential 是其“所有终态输出皆为
直觉
Sequential 机器是一位不能回头、不能撤销已写内容的抄写员。状态记录有限上下文,当前输入决定下一状态和此刻追加的字符串。它可以暂缓有限信息,却不能把任意长前缀压在心里等待最后一个字符。
输入确定不要求输出长度同步。一条边可以输出空字、一个字符或固定长短语;例如字符转义可以把 & 写成五字符实体。真正受限的是已输出前缀不可修改,以及有限状态只能维持有界种类的延迟。
因此,机器读完前缀
偏函数语义来自部分转移和终态集合。完整消费输入但落在非终态仍是未定义;路径中途缺边也是未定义。若删掉
例子与边界
构造一个 HTML 文本转义器,输入字母表简化为 a、b、&、<。机器只有一个状态
输入 a&<b 的四步输出块依次为 a、&、<、b,连接后为 a&<b。实体中的分号是边输出的一部分,终止时不会再自动补字符。这个例子也说明输出可比输入长而无需额外状态。
在至少含两个符号的字母表上,反转 a 时不知道它最终应处在输出末尾的哪个位置;先写会破坏顺序,等待则需保存无界的原前缀。单字母表上的反转等于恒等函数,固定最大长度的反转也能用足够多状态硬编码;两者都没有触及无界次序重排这一障碍。
另一个边界来自终态后缀。函数 b 留到输入结束,但 pure sequential 机器既不知道哪次 a 是最后一次,也没有终止输出接口;它将成为下一页严格包含关系的见证。
推论与应用
Sequential 函数对复合封闭。若第一台的一条边输出固定字
输出推动把各状态之后所有可能输出的最长公共前缀尽量前移,可以得到便于比较和最小化的规范形式。随后按“相同剩余函数”合并状态,形成类似 Myhill–Nerode 的最小表示;仅按输入自动机语言最小化不足以保留输出。
Sequential 转导器适合字符转义、确定词法规范化和在线协议改写。若转换必须依据任意远的末尾选择早期输出,应该先检查 subsequential 可实现性或孪生性质,而不是不断为有限样例增加状态。
实现中还应区分“读取完当前缓冲区”与“输入流真正结束”。只有后者才能触发终止判定;若网络分片暂时为空就把当前状态当终态,会把同一个逻辑输入切成多个函数调用,改变定义域与输出边界。
参考资料
- Mehryar Mohri, “Finite-State Transducers in Language and Speech Processing,” Computational Linguistics 23(2), 1997, §§3–5.
- Christian Choffrut, “Minimizing Subsequential Transducers: A Survey,” Theoretical Computer Science 292(1), 2003, §§2–3.
- Jacques Sakarovitch and Sylvain Lombardy, “Sequential?,” Theoretical Computer Science 356(1–2), 2006, §§2–3.