字符串问题的模型检查:理论、优化与对比
1. 多值 μ - 演算的模型检查基础
在处理封闭的 $L^k_{\mu}$ 公式 $\phi$ 时,我们可以通过对 $\phi$ 的结构进行归纳来计算集合 $[[\phi]]_T$。对于形如 $\mu X.\psi$ 或 $\nu X.\psi$ 的不动点子公式,我们可以使用 Knaster - Tarski 不动点迭代方法。对于最小不动点公式,我们将 $X$ 绑定到空集,然后在转换系统 $T$ 上计算 $\psi$ 的值,接着将 $X$ 绑定到这个 $k$ 元组集合,如此循环直到达到不动点。对于最大不动点,我们则从集合 $S^k$ 开始迭代。
多值 μ - 演算的模型检查问题之前已有研究。实际上,它与普通 μ - 演算(由所有元数为 1 的公式组成)的模型检查在概念上并无差异。存在一种从检查元数为 $k$ 的公式到检查转换系统的 $k$ 重积上元数为 1 的公式的简单约简方法。其复杂度的主要参数之一,除了公式的元数,就是其交替深度,它直观地衡量了不同类型不动点的嵌套深度。对于没有这种嵌套的公式,我们将其交替深度设为 1。
下面的命题总结了模型检查 $L^{\omega} {\mu}$ 的复杂度:
命题 1:给定一个具有 $n$ 个节点的转换系统 $T$ 和一个交替深度为 $d$ 的封闭 $L^k {\mu}$ 公式 $\phi$,可以在时间 $O((|\phi| \cdot n^k)^{\lceil d/2 \rceil})$ 内计算出 $T$ 中满足 $\phi$ 的所有 $k$ 元组节点的集合。
2. 定义字符串问题
我们考虑三个字符串问题:最长公共子串、最
超级会员免费看
订阅专栏 解锁全文
9万+

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



