设TONY、MIKE和JOHN属于ALPINE俱乐部,ALPINE俱乐部的成员不是滑雪运动员就是登山运动员。登山运动员不喜欢雨,而且任何不喜欢雪的人不是滑雪运动员。MIKE讨厌TONY所喜欢的一切东西,而喜欢TONY所讨厌的一切东西。TONY喜欢雨和雪。试用谓词演算语句的集合表示这段知识,用归结反演的方法回答问题:“有没有ALPINE俱乐部的一个成员,他是一个登山运动员但不是一个滑雪运动员?”
划出繁衍修改证明树,用根部作为回答;
提示:sportsman(x,y)x是y运动员;
likes(x,y)x喜欢y
网友回答
答:我们用Skier(x)表示x是滑雪运动员,Alpinist(x)表示x是登山运动员,Alpine(x)表示x是Alpine俱乐部的成员。 问题用谓词公式表示如下: 已知:
(1) Alpine(Tony) (2) Alpine(Mike) (3) Alpine(John)
(4) ( x){Alpine(x)→[Skier(x)∨Alpinist(x)]} (5) ( x){Alpinist(x)→~Like(x, Rain)} (6) ( x){~Like(x, Snow)→~ Skier(x)} (7) ( x){Like(Tony, x)→~Like(Mike, x)} (8) ( x){~Like(Tony, x)→Like(Mike, x)} (9) Like(Tony, Snow) (10) Like(Tony, Rain)
目标:(vx){Alpine(x)∧Alpinist(x)∧~Skier(x)} 化子句集: (1) Alpine(Tony) (2) Alpine(Mike) (3) Alpine(John)
(4) ( x){Alpine(x)→[Skier(x)∨Alpinist(x)]} = ( x){~Alpine(x)∨[Skier(x)∨Alpinist(x)]} =>~Alpine(x)∨Skier(x)∨Alpinist(x)
(5) ( x){Alpinist(x)→~Like(x, Rain)} = ( x){~Alpinist(x)∨~Like(x, Rain)} =>~Alpinist(x)∨~Like(x, Rain)
(6) ( x){~Like(x, Snow)→~ Skier(x)} = ( x){Like(x, Snow)∨~ Skier(x)} => Like(x, Snow)∨~ Skier(x)
(7) ( x){Like(Tony, x)→~Like(Mike, x)} = ( x){~Like(Tony, x)∨~Like(Mike, x)} =>~Like(Tony, x)∨~Like(Mike, x)
(8) ( x){~Like(Tony, x)→Like(Mike, x)} = ( x){Like(Tony, x)∨Like(Mike, x)} => Like(Tony, x)∨Like(Mike, x)
(9) Like(Tony, Snow) (10) Like(Tony, Rain) 目标取反:
~(vx){Alpine(x)∧Alpinist(x)∧~Skier(x)} = ( x){~Alpine(x)∨~Alpinist(x)∨Skier(x)}
=>~Alpine(x)∨~Alpinist(x)∨Skier(x) 经变量换名后,得到子句集: {Alpine(Tony), Alpine(Mike), Alpine(John), ~Alpine(x1)∨Skier(x1)∨Alpinist(x1), ~Alpinist(x2)∨~Like(x2, Rain), Like(x3, Snow)∨~ Skier(x3), ~Like(Tony, x4)∨~Like(Mike, x4), Like(Tony, x5)∨Like(Mike, x5), Like(Tony, Snow), Like(Tony, Rain), ~Alpine(x)∨~Alpinist(x)∨Skier(x)} 归结树如下: