有限状态机状态验证与一致性测试技术解析
1. 状态验证
状态验证旨在确认置于黑盒中的 Mealy 机是否处于指定状态 s,前提是已知该机器的状态图。唯一的办法是向机器输入信号并研究其输出。若存在输入序列 x,使得机器处于状态 s 并接收输入 x 时产生的输出唯一,即没有其他状态在输入 x 时会产生相同输出,那么就可以对状态 s 进行验证。这样的输入序列被称为唯一输入 - 输出(UIO)序列,因此状态验证问题可归结为计算待验证状态的 UIO 序列。
然而,并非所有 Mealy 机的状态都有 UIO 序列。不过,在许多实际测试场景中,UIO 序列出现的频率足以使其成为 Mealy 机一致性测试的有价值工具。具体而言,UIO 序列比自适应或预设的区分序列更为常见。
计算 UIO 序列是一个难题。实际上,确定给定状态是否有 UIO 序列是 PSPACE 完全问题,因此很可能不存在多项式时间算法来计算这些序列。此外,一些状态虽有 UIO 序列,但没有多项式长度的序列,这在测试应用中是个问题。
不过,已经提出了一些算法并在实践中进行了尝试。这些算法的最坏情况复杂度为指数级,但使用了启发式方法,允许对许多相关问题实例进行高效计算。其中最复杂的算法是 Naik 提出的,它尝试快速计算某些状态的序列,然后用这些序列推断其他状态的序列。Guo 等人则提出了一种遗传算法,使用适应度函数评估候选序列,然后通过交叉和变异操作对其进行配对,经过一定代数的迭代。
下面详细介绍 Guo 等人提出的遗传算法:
- 适应度函数定义 :
设 (x = a_1a_2 \cdots a_k \in I^ ),令 (
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



