分辨率推理规则算法

时间:2012-11-09 21:50:50

标签: algorithm logic artificial-intelligence

我在决议推理规则中有以下疑问。

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  

1 个答案:

答案 0 :(得分:0)

  1. 不,在这种情况下你无法应用解决方案。
  2. 那么,为什么不应该这样呢?
  3. 我想这是为了避免无限循环(在这种情况下,你会回到上次迭代的条件)
  4. 同样的问题?
  5. 更多关于1和2.解决的想法是,如果你有(A v B)^(不是A v C)那么你可以安全地推断B或C是真的(非正式地,因为A是真或假)。如果您有(A v B)^(A v C),则无法应用相同的推理。