实时软件验证的复杂度边界
1. 自动机编码
自动机编码是将自动机的信息转换为二进制字符串的过程。具体来说,对于一个自动机,我们需要对其状态、转移函数等信息进行编码。假设自动机有不同的组件,如状态、转移谓词、操作等,我们用不同长度的二进制位来表示这些组件。
1.1 单个自动机编码
设自动机的编码长度为 (2n),其中 (n = n_2 + n_3 + n_4 + 2n_1)。编码的具体规则如下:
- 前 (n_2) 位用于索引转移的边符号。
- 接下来的 (n_3) 位用于索引转移的谓词。
- 再接下来的 (n_4) 位用于索引操作。
- 之后的 (n_1) 位用于索引“当前控制状态”。
- 最后的 (n_1) 位用于索引“下一个控制状态”。
对于编码字符串 (w),如果 (i = \hat{s}) 且 (s = xvyuz)(其中 (|x| = n_2),(|v| = n_3),(|y| = n_4),(|u| = n_1),(|z| = n_1)),并且 ((q_1, p_1, e_1, o_1, q_2) \in \delta)(其中 (q_1) 是 (|Q|) 的第 (\hat{u}) 个符号,(p_1) 是 (\hat{v}) 个符号,(e_1) 是 (\hat{x}) 个符号,(o_1) 是 (\hat{y}) 个符号,(q_2) 是 (\hat{z}) 个符号),则 (w_i = 1);否则 (w_i = 0)。
1.2 自动机元组编码
对于自动机元组 ((A_1, A_2, \cdots, A_n)),我们先对每个自动机 (A_i) 进行编码得到 (
超级会员免费看
订阅专栏 解锁全文
5万+

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



