逻辑编程与图模型中的冲突、一致性、真值依赖及多最优解问题
1. 逻辑编程基础
在逻辑编程领域,我们先了解一些基本概念。
- 逻辑程序定义 :一般逻辑程序由规则组成,规则可能包含形如 ¬a 的否定原子。一条规则 ρ 由结论 head(ρ) 和条件集合 body(ρ) 构成,条件集合又可分为正条件 pos(ρ)(形式为 A)和负条件 neg(ρ)(形式为 not A),其中文字 A 可以是原子 a 或否定原子 ¬a。负逻辑程序则是由没有正条件的规则组成。
- 答案集语义 :答案集语义将逻辑程序视为一组推理规则(更确切地说是默认推理规则),也可以把程序看作是问题解决方案的一组约束,每个答案集代表一个与程序所表达约束相兼容的解决方案。例如,对于简单程序 {q ←not p. p ←not q.},第一条规则可理解为“假设 p 为假,那么可以得出 q 为真”。该程序有两个答案集,一个中 q 为真 p 为假,另一个中 p 为真 q 为假。
- 答案集计算 :给定程序 Π 及其 Herbrand 基 BΠ,BΠ 的子集 M 是 Π 的一个答案集,当且仅当它对应于 Π 相对于 M 的约简 ΠM 的最小模型。约简 ΠM 通过从 Π 中删除所有包含 M 中某个 a 的条件 not a 的规则,并从其他规则中删除所有负条件得到。答案集是最小支持模型,且构成反链。
- 程序一致性 :与其他语义不同,逻辑程序可能有多个答案集,也可能没有答案集。当程序没有答案集时,我们称该程序不一致。相应地,检查一致性就是检查答案集是否存在。例如程序 {a ←not b.
超级会员免费看
订阅专栏 解锁全文
452

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



