“分层否定 Datalog进一步区分正、负依赖:按规则体到规则头连边,可分层当且仅当没有负边落在同一 SCC 内。内部负边与返回路径会构成含负边的圈,迫使层号严格增加后又回到自身;若没有这种边…”
形式陈述 ​
有限、安全的否定规则 ​
正 Datalog从空关系反复添加有规则见证的事实,得到有限最小不动点。若要查询“哪些节点对不可达”,还需要判断某个事实最终没有被推出。分层否定的做法是先完成被查询关系,再允许后续规则读取它的补集。
固定有限、无函数符号的程序
项只有变量与常量;不同常量名表示不同值。规则中每个变量都必须出现在至少一个正关系体原子里,包括出现在头或否定原子里的变量。这一安全性条件给变量提供取值范围。允许无变量的事实与零元规则。EDB 是始终固定的输入关系,不出现在规则头中;IDB 是规则定义的关系。关系按集合解释,不含重复行、NULL、聚合或生成新值的运算。
求值载体取
规则变量只需枚举
分层条件与语义终点 ​
分层是给每个关系符号指定非负整数
EDB 放在第
建立带符号依赖图:顶点是关系符号,边从规则体关系指向头关系;正体产生正边,否定体产生负边。同一对顶点可以同时有正边与负边。下列三项等价:程序存在分层;依赖图没有包含负边的有向圈;每条负边的两端都属于不同的强连通分量。
在此条件下,按层递增求值,每层都在固定较低层答案后取本层的正 Datalog 最小不动点。有限求值必定终止,结果满足全部规则,且不依赖合法分层的选择。这个被选定的解释称为分层模型;在这里的有限设置中,它与文献中的唯一完美模型(perfect model)一致。后文证明逐层构造及其分层无关性;与完美模型偏好定义的对应见 Przymusinski 的原始论文。这里的唯一性不表示所有经典模型中存在按集合包含的最小者。
直觉
“还没有推出”与“已经算完且推不出”是不同的信息。在可达关系刚开始计算时,许多实际可达的节点对尚未出现。如果立即把它们判成不可达,后续递归就会推翻先前的否定判断。
分层把这个时间问题变成依赖约束。计算
SCC 则说明哪些关系必须一起完成。互相递归的关系属于同一分量,可以共同求正不动点;如果分量内含负边,就会出现“完成自己之前,必须先知道自己的最终缺失事实”的循环。把合法分量压缩后,剩下的 DAG 给出了先完成依赖、再读取其答案的顺序。
例子与边界
先求九个可达对,再求十六个不可达对 ​
令输入为
其中
依赖边为
第
| 轮次 | 新增 |
累计数量 |
|---|---|---|
| 1 | 4 | |
| 2 | 8 | |
| 3 | 9 | |
| 4 | 9 |
例如
第
| 起点 |
满足 |
本行事实 |
|---|---|---|
这正是
这里的
为什么不能同时累加两层 ​
若从
这个错误不会被“有限事实空间保证停止”修复。停止只说明不能再添加事实,并不保证此前否定测试的依据仍然成立。必须先算完
安全性也有独立作用。规则
被选定的模型不等于经典最小模型 ​
考虑无变量的安全程序
它可取
若仅把规则读成经典蕴含,
再把第二条改成
推论与应用
带符号 SCC 判据的两个方向 ​
先假设有合法分层。沿任意正边,层号不下降;沿负边,层号严格增加。若某个有向圈包含负边,绕一圈就会从某个层号回到比它更大的自身,矛盾。因此合法分层排除了所有含负边的圈。
一条负边的两端属于同一 SCC,当且仅当从终点存在返回起点的路径;把这条边与返回路径连接,就得到含负边的圈。反过来,圈上的全部顶点互相可达,必在同一 SCC 中。所以无负圈条件等价于负边不在分量内部。
现在假设不存在分量内部的负边。收缩 SCC 得到 DAG,为分量间每条正边赋权
这满足所有跨分量正、负依赖约束;分量内部只有正边,统一层号也合法。EDB 没有入边,自动处于第
固定较低层后,为什么得到唯一的最少扩展 ​
设第
令
每次严格增长至少增加一个本层事实,因而至多有
任取在同一
归纳得到
为什么改换合法分层不会改变答案 ​
依赖图的 SCC 由程序本身确定。合法分层在每个 SCC 内必须恒定:两点间各有一条路径,层号沿路径不下降,两个方向合起来只能相等。每个 SCC 内部又只有正依赖,因此在它的所有前驱分量完成后,也能取唯一的条件最小不动点。
先考虑逐 SCC 求值。按凝聚 DAG 的拓扑序处理,某个分量只读取其前驱的结果。对拓扑序归纳,源分量的答案唯一,已有唯一前驱答案的分量也有唯一答案。没有依赖关系的分量互不读取,可以交换求值次序。因此逐 SCC 构造的最终结果不依赖所选拓扑序。
还需证明:把几个具有正依赖的 SCC 合在同一层一起饱和,不会改变这个结果。固定较低层后,设
反向按这一层内部的拓扑序归纳。对源 SCC,
每个合法层都能这样换成逐 SCC 求值,而逐 SCC 结果已经唯一。因此,合法的合层、拆层、重新编号或独立分量换序都不影响分层模型。唯一性来自条件最小性与依赖次序,不能简化成“随便找一个满足规则的解释”。
关系实现与固定程序的多项式上界 ​
求值可以落到关系代数:正体用连接和选择产生候选元组,针对冻结的较低层关系用反连接筛掉命中项,再投影出头事实。例子中的反连接就是从
设程序固定,每条规则至多有
这里可以逐个枚举实例,无需保存全部实例化规则。元数、变量数、关系符号数和层数均固定,所以两个界都是数据规模的多项式。
参考资料
- Oxford,Lecture 8: Datalog with Stratified Negation,第 8–17、21 张幻灯片:带符号依赖、分层求值、复杂度,以及被选定的分层模型与一般极小模型的区别。该讲义采用头到体的边方向;本文统一使用体到头的方向。
- Markus Krötzsch,Modern Datalog: Concepts, Methods, Applications,Reasoning Web 2024/2025 联合论文集,§6,Definitions 29、31:安全否定、分层定义及按层计算。
- T. C. Przymusinski,On the Relationship Between Logic Programming and Nonmonotonic Reasoning,AAAI 1988,pp. 444–448,§2,Definition 2.5、Theorem 2.6:体到头的依赖图、分层程序与唯一完美 Herbrand 模型。