Skip to content

模型Model

Datalog 与有限最小不动点

Datalog · Positive Datalog · Datalog least model

在固定有限活跃域上反复应用正规则,证明所得关系是最小模型,并用有环可达性逐轮推导半朴素求值。

形式陈述 ​

正规则、输入与派生关系 ​

本页讨论正的、无函数符号的 Datalog。程序 P 是有限规则集,每条规则形如

H(t¯)←B1(t¯1),…,Bm(t¯m).

项只能是变量或常量;所有头变量必须出现在至少一个正关系体原子中。规则体是合取查询式的匹配条件,多个规则可以产生同一个头关系。所有变量按全称量化理解:每次体原子同时成立,头事实就必须成立。允许空体,但此时头不能有变量,规则只声明一个基事实。

关系符号分成两类。EDB 是给定的输入关系,只出现在规则体中,整个计算期间不变;IDB 是由规则定义的关系,可以出现在头和体中,从空关系开始计算。头原子恰有一个,所以规则对应确定子句(definite clause);一般 Horn 子句只要求至多一个正文字,还包括没有正文字的约束,不能全部当作这里的事实生成规则。

固定有限输入 I,以

A=adom(I)∪Const(P)

作为求值所需的有限值集合。常量表示固定值,不同常量名表示不同值。令 B 为所有 IDB 符号在 A 上能组成的带关系名的事实集合,则

H=|B|=∑R∈IDB|A|arity(R).

零元关系采用 A0={()},包括 A=∅ 时;因而这里 00 按空元组的数量取 1。若 A 为空,正元事实不存在,零元事实仍可能为真。例如 Ready()← 可以推出 Ready(),却不引入任何值。外部一阶论域仍可非空;范围限制保证向其中添加未使用的值不会产生新的匹配。

后承算子与有限最小模型 ​

把全部 IDB 事实合记为 X⊆B。定义一次头后承与保留旧事实的算子:

CP(I,X)={H(θt¯):某条规则的所有体原子在 I∪X 中成立},F(X)=X∪CP(I,X).

这里 θ 枚举规则变量到 A 的赋值;无变量规则有唯一的空赋值。正体保证 CP 单调,但它在任意 X 上未必包含 X:例如只有 R(a)←E(a)、E=∅ 时,常量 a 属于 A,但 CP(I,{R(a)})=∅。本页显式加入并集,使 F 同时单调且扩张。

从 X0=∅ 开始令 Xi+1=F(Xi)。每次严格变化至少加入一个事实,至多发生 H 次;最终存在 k≤H 使 Xk=Xk+1。这个稳定值 X∗ 是固定 EDB 为 I 时的最小规则闭合 IDB 扩展,即 Datalog 的最小模型语义。最小指包含在所有其他模型中,比“删不掉任何事实的极小模型”更强。

直觉

非递归合取查询只对现有表做一次匹配。Datalog 允许把刚得到的答案放回规则体,再为后续匹配提供见证。例如先知道 a 能到 b,又知道 b 有一条边到 c,便把“a 能到 c”存成新事实;下一轮可以继续使用它。

最小性排除了凭空添加的结论。规则 R(x)←R(x) 允许任意 R 成为闭合关系,但空输入时最小答案仍为空:循环引用本身没有提供证据。每个实际推导出的事实都有一棵有限证明树,叶子来自输入或空体规则,内部节点是一条规则的成功应用。按轮数和树高分别归纳,就能在迭代语义与有限证明树之间来回转换。

终止也不依赖图是否有环。环能提供无限多条游走,却只能反复证明有限个有序节点对。关系按集合存储,重复证明不会增加新的事实;算法计算的是哪些事实成立,而不是共有多少条证明。

例子与边界

四条边推出九个可达对 ​

令 E={(a,b),(b,c),(c,b),(c,d)},定义

R(x,y)←E(x,y),R(x,z)←R(x,y),E(y,z).

E 是固定 EDB,R 是唯一 IDB。用 ab 简写 (a,b),令 Δi=Ri∖Ri−1。从 R0=∅ 开始,完整计算为:

| 轮次 i | 新事实 Δi | 累计 |Ri| | |---|---|---😐 | 1 | ab,bc,cb,cd | 4 | | 2 | ac,bb,bd,cc | 8 | | 3 | ad | 9 | | 4 | ∅ | 9 |

第二轮的四条见证依次是 a→b→c、b→c→b、b→c→d、c→b→c。第三轮把 ac 接到 cd 得到 ad;把 ac 接到 cb 只重新得到 ab,其余延伸也已出现。第四轮唯一待延伸的新对以 d 结束,而 d 没有出边,因此停止。最终答案恰为

R∗={ab,ac,ad,bb,bc,bd,cb,cc,cd}.

归纳可得,Ri 包含且仅包含长度在 1 到 i 之间的游走端点对。正向由每次只追加一条边得到;反向把长度至少为二的游走拆成前缀与最后一条边。因此稳定结果是正长度可达关系。bb,cc 来自环;没有 aa,dd。若需要反身传递闭包,应提供节点关系并增加 R(x,x)←Node(x)。孤立节点尤其需要显式列入 Node,仅有边表无法表达它存在。

线性递归的半朴素求值 ​

定义关系连接 S∘T={(x,z):∃y (x,y)∈S,(y,z)∈T},这里明确按“先 S 后 T”的次序使用符号。朴素迭代反复计算 Ri∘E,其中旧事实与 E 的连接已经做过。初始化 R1=Δ1=E,以后只计算

Δi+1=(Δi∘E)∖Ri,Ri+1=Ri∪Δi+1.

它与朴素算法逐轮相同。因为 Ri=Ri−1∪Δi,连接分配为旧连接与增量连接,而 Ri−1∘E⊆Ri:旧连接结果上一轮已加入。减去 Ri 后,只剩增量连接可能贡献新事实。对 i=1,R0=∅ 同样成立,于是归纳建立每轮相等。

去重仍然必要。新输入事实可以产生旧输出,也可以有多个新见证产生同一输出;上例的 ac∘cb 就再次产生 ab。半朴素求值减少重复的规则匹配,不承诺每个程序、每种索引和输入规模都得到相同比例的加速。

非线性递归需要旧、新交叉项 ​

若把递归规则改成 R(x,z)←R(x,y),R(y,z),体中出现两个递归关系,不能只算 Δi∘Δi。保留种子规则 R←E,初始化仍为 R1=Δ1=E。正确增量为

Δi+1=[(Δi∘Ri−1)∪(Ri∘Δi)]∖Ri.

证明先按两个体原子的来源展开 Ri∘Ri。旧—旧项已经包含于 Ri;剩下新—旧、旧—新、新—新三项。公式的第一项覆盖新—旧,第二项同时覆盖旧—新与新—新,因而没有遗漏。这是一般半朴素方法的要点:每个尚未处理的成功匹配至少使用一个新增体事实,不要求全部体事实都新增。

在链 1→2→3→4→5 上,第一轮是四条边,第二轮新增 13,24,35。第三轮正确新增 14,25,15;若只连接两个第二轮增量,只能得到 15,漏掉长度三的 14,25。下一轮错误算法的增量只有 15,也无法补回遗漏。这同时说明非线性程序的轮次不再对应“每轮多一条边”:它可以把两段已知游走直接拼接。

哪些扩展改变证明 ​

加入否定后,增大 X 可能使原本成立的规则体失效。例如 P(x)←Node(x),¬Q(x) 在加入 Q(a) 后不再支持 P(a),所以原来的单调性论证失效;仅靠保留旧事实也不能解释预期的否定语义。分层否定需要另行规定计算次序与语义。

函数项、生成新值的算术、存在量化的头变量会破坏固定有限事实空间。比如允许 R(f(x))←R(x) 后,从 R(a) 可生成无限项。本文的有限终止论证因此不能直接覆盖这类语言、一般事实生成 chase、聚合或含 NULL 与重复行的 SQL。

推论与应用

为什么稳定值恰是最小模型 ​

先证单调性:若 X⊆Y,每个在 I∪X 中成功的正体匹配,在 I∪Y 中仍成功,所以 CP(I,X)⊆CP(I,Y),继而 F(X)⊆F(Y)。加上 X⊆F(X),迭代是一条有限升链,必定稳定。

稳定时 CP(I,X∗)⊆X∗,意味着所有成功匹配的规则头已经存在,所以 I∪X∗ 满足每一条规则。为证最小性,任取另一个规则闭合扩展 M。初值 X0=∅⊆M;若 Xi⊆M,由单调性与闭合性得到

Xi+1=Xi∪CP(I,Xi)⊆M∪CP(I,M)=M.

归纳给出 X∗⊆M。这证明的是所有模型共同包含的最少事实,而不仅是某次运行恰好停住。也可把整个过程放入Knaster–Tarski 不动点定理:P(B) 是有限完备格,F 是单调映射;本页的有限归纳进一步给出可执行的终止理由。

关系运算与复杂度 ​

每条正规则可用关系代数中的重命名、选择、连接与投影实现,多条同头规则取并。递归所增加的是重复执行直到闭合的控制机制;这些单轮运算本身仍是有限表运算。半朴素算法中的差集只用于排除已知输出,不是在规则语言中加入语义否定。

设程序固定,最多有 v 个变量出现在一条规则中,令 n=|A|=|adom(I)∪Const(P)|,并写 N=max(1,n)。一轮至多枚举 O(Nv) 个赋值;固定程序使每次需检查的体原子数为常数。用可常数时间查询成员的关系表,最多 H+1 轮可得 O(|I|+(H+1)Nv) 的直接上界。这里 H=∑Rnarity(R);元数、符号数与程序常量数均固定,加入程序常量只使输入活跃域大小增加一个有界量,所以这仍是输入规模的多项式。若用顺序扫描,仍是多项式,只是次数更高。它是透明的终止与复杂度上界,并非推荐的物理执行计划。

标准事实成员判定中,正 Datalog 的数据复杂度是 P 完全,含义是每个固定程序都可多项式求值,且存在固定程序达到 P 难;不表示每个程序都 P 难,上面的普通有向可达性就是更受限的任务。若程序也随输入增长,变量数和元数不再是常数,联合复杂度是 EXPTIME 完全。这两个完备性下界使用相应归约,超出了前述枚举上界的证明;可参见 Oxford Lecture 7,第 12–21 张幻灯片。

参考资料
  • Serge Abiteboul、Richard Hull、Victor Vianu,Foundations of Databases,第 12 章,1995 在线版,§§12.1–12.3,Definitions 12.1.1–12.1.2、Theorems 12.2.3、12.3.4,pp. 276–286:语法、最小模型与有限迭代。本文显式采用 X∪CP(I,X),避免混淆后承与扩张。
  • 同书第 13 章,§13.1,pp. 312–316,Algorithm 13.1.1:增量展开与半朴素求值。本页线性和非线性两式按集合分配律逐轮证明。
  • Oxford,Lecture 7: Datalog,第 12–21 张幻灯片:数据复杂度与联合复杂度、相应下界的构造思路。
关系图谱6 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
类型化关系