无链字符串约束的求解与实验分析
1. 无链公式的拆分算法
在处理字符串约束时,会执行拆分步骤,直到所有约束都不含连接操作。对于无链公式,拆分算法会终止并得到一个等价可满足的无链且无连接的公式。
证明拆分算法终止的主要困难在于左右拆分中涉及的变量替换。左拆分通过从子句中移除一个连接运算符 ◦ 向无连接性迈进了一步,例如将项 x ◦ t 和 y ◦ t′ 替换为 x1, y, t′, 和 x2 ◦ t 。然而,在子句的其余部分用 x1 ◦ x2 替换 x 会引入与 x 出现次数相同数量的新连接(右拆分情况类似)。因此,为了保证拆分的终止,必须通过强制无链性来限制替换的影响。
无链性的直观解释如下:子句的拆分图实际上是一个关于替换链如何增加子句中连接数量的映射。考虑拆分图中从位置 p 到位置 p′ 的一条边,根据定义,存在一个与 p 相对且携带与 p′ 相同变量的中间位置 p′′ 。这意味着当拆分使 p 一侧的连接数量减少一个时(在左拆分中 p 的标签可能是 y ), p′′ 标签(左拆分中为 x )的替换会导致同样标记为 x
超级会员免费看
订阅专栏 解锁全文
39

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



