机器智能-高频问题:归结算法

为证明KB|=a是有效的,需要证明(KB∩!a)是不可满足的
举例:
KB=(B11<=>(P12∪P21))∩!B11
a=!P12
想要证明KB∩!a是不可满足的,即

(((B11<=>(P12∪P21))∩!B11)∩P12)是不可满足的

解题空间:
在这里插入图片描述
1、转换为合取范式
①(((B11<=>(P12∪P21))∩!B11)∩P12)原式
②(((!B11∩(P12∪P21))∪(B11∩!(P12∪P21)))∩!B11)∩P12去掉双箭头
③(!B11∪P12∪P21)∩(!P12∪B11)∩(!P21∪B11)∩(!B11)∩P12解开

2、归结消元,将合取范式中的所有子句当成单元,采取归结方法进行处理
有5个单元,两两分组可以有10种,分别对10种可能的进行判断,是否可以进行消元
第一轮:

条件1 条件2 结果
(!B11∪P12∪P21) (!P12∪B11) 包含了B11和P12的所有情况,可删去,结果为P21
(!B11∪P12∪P21) (!P21∪B11) 包含了B11和P21的所有情况,可删去,结果为P12
(!B11∪P12∪P21) (!B11) 无交叉,不作处理,结果为(!B11)和(!B11∪P12∪P21)
(!B11∪P12∪P21) (P12) 无交叉,不作处理,结果为(P12)和(!B11∪P12∪P21)
(!P12∪B11) (!P21∪B11) 无交叉,不作处理,结果为(!P12∪B11)和(!P21∪B11)
(!P12∪B11) (!B11) 包含了B11的所有情况,可删去,结果为!P12
(!P12∪B11) (P12) 包含了P12的所有情况,可删去,结果为B11
(!P21∪B11) (!B11) 包含了B11的所有情况,可删去,结果为!P21
(!P21∪B11) (P12) 包含了P21的所有情况,可删去,结果为B11
(!B11) (P12) 无交叉,不作处理,结果为(!B11)和(P12)

经过第一轮处理后,原本的条件集(知识集)转变为了:
P21
P12
!B11
(!B11∪P12∪P21)
(!P12∪B11)
(!P21∪B11)
!P12
B11
!P21
然后可以进行第二轮的处理,同样是两两组合进行归结
发现有冲突(P21与!P21),(B11与!B11),(P12与!P12),由于只有当知识集中的所有条件全部满足的时候原式才有真值,所以如果归结有冲突(即归结结果出现空集)证明原知识集中存在矛盾,对于P12、P21、B11三个变量,不管取什么值,都不会让原式有真值,所以证明原式是不可满足的!即(((B11<=>(P12∪P21))∩!B11)∩P12)是不可满足的
那么就有((B11<=>(P12∪P21))∩!B11)=>!P12是不可满足的

发布了291 篇原创文章 · 获赞 178 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/qq_40851744/article/details/105116601