使用SAT求解器解决同步问题及K - 中位数聚类算法的研究
1. 使用SAT求解器解决同步问题
在解决部分有限自动机(PFA)的仔细同步字(CSW)问题中,SAT求解器发挥了重要作用。
首先,我们需要证明一个字 (w) 满足特定的条件(C1)、(C2)和(C3)。对于(C1)和(C2),要验证对于 (t = 1, \cdots, \ell),字 (w) 的第 (t) 个字母在 (t - 1) 步后活跃的每个状态 (q_j) 处都有定义。假设 (a_i) 是 (w) 的第 (t) 个字母,如果 (a_i) 在 (q_j) 处未定义,根据转移子句集合 (T) 的定义,(T) 会包含相应的子句(3)。但根据 (w) 的构造有 (\phi(x_{i,t}) = 1),由命题 2 有 (\phi(y_{j,t - 1}) = 1),这就导致 (\phi) 不满足该子句,而 (T) 中的子句都应被 (\phi) 满足,从而产生矛盾。对于(C3),由命题 1 可知,在 (\ell) 步后有某个状态是活跃的。同时,赋值 (\phi) 满足集合 (S) 中的子句,这意味着对于至多一个索引 (j \in {1, \cdots, n}) 有 (\phi(y_{j,\ell}) = 1),结合命题 2 可推出在 (\ell) 步后至多有一个状态是活跃的,所以在 (\ell) 步后恰好有一个状态是活跃的,即 (|Q.w| = 1)。
在实验方面,我们使用了MiniSat 2.2.0这个SAT求解器来解决CSW实例。为了找到给定PFA (A) 的最小长度的仔细同步字,我们考虑固定 (A) 的CSW实例 ((A, \ell)),并对 (\ell) 进行二分查找。具体操作步骤如下:
1. 对 ((A,
超级会员免费看
订阅专栏 解锁全文
236

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



