我在决议推理规则中有以下疑问。
1 *在for each Ci, Cj in clauses do
中,每个Ci和Cj是否必须包含互补符号(例如,一个包含A,另一个包含〜A)?
2 *在上面的例子中,如果两个子句具有相同的符号(ex A和A),该怎么办?我应该考虑推断吗?如果是这样,它会返回什么结果?
3 * if new ⊆ clauses then return false
何时运行?在探讨了所有条款之后?
4 * if new ⊆ clauses then return false
有什么用?
5 * if new ⊆ clauses then return false
有什么用?
function PL-RESOLUTION(KB,α) returns true or false
inputs: KB, the knowledge base, a sentence α in propositional logic,
the query, a sentence in propositional logic
clauses <--- the set of clauses in the CNF representation of KB ∧ ¬α
new <--- {}
loop do
for each Ci, Cj in clauses do
resolvents <----- PL-RESOLVE(Ci, Cj)
if resolvents contains the empty clause then return true
new <--- new ∪ resolvents
if new ⊆ clauses then return false
clauses <---- clauses ∪ new
答案 0 :(得分:0)
更多关于1和2.解决的想法是,如果你有(A v B)^(不是A v C)那么你可以安全地推断B或C是真的(非正式地,因为A是真或假)。如果您有(A v B)^(A v C),则无法应用相同的推理。