通过自动机学习进行逆向工程
1 引言
在现代科技的发展历程中,计算机控制系统逐渐替代了传统机械工具,扩展了人类的能力。最近几十年,计算机控制的系统不仅能够执行复杂的任务,还能模仿人类的决策、视觉和语音处理。然而,自动化计算机编程和硬件设计依然是一个极具挑战性的领域。软件和硬件合成的研究旨在将人类友好的逻辑形式化规范(如时序逻辑)转换为易于实现的代码或形式,通常是有限状态自动机(FSA)。
本文提出了一种基于自动机学习和模型检查的逆向工程方法,用于从未知结构的黑盒系统中提取出满足给定形式规范ϕ的有限状态自动机模型。我们通过与黑盒系统的实验交互来学习其行为,而不是从头开发一个满足ϕ的新系统。所获得的模型可以作为进一步细化所需系统的基础。
2 安格林的 L∗ 学习算法
安格林的 L∗ 算法是一种通过实验学习有限黑盒自动机 B 的方法。该算法返回一个最小的确定性有限自动机(DFA),其行为与 B 一致。L∗ 算法的核心在于两个查询类型:成员查询和等价查询。
成员查询
成员查询用于测试给定的执行是否在黑盒系统 B 上有预期的输出。例如,给定一个输入序列 ab
,成员查询会返回 ab
是否被 B 接受。
等价查询
等价查询用于询问候选自动机 M 是否在所有输入序列上产生与 B 相同的输出。如果 M 和 B 不等价,则返回一个反例 μ,即一个区分 M 和 B 的输入序列。这个反例 μ 可以帮助进一步学习和改进 M。
表格 T 的构建
L∗ 算法使用两个有限的序列集 S 和 E 来构