应用归结原理求解下列问题: 设张三 李四和王五三人中有人从不说真话 也有人从不说假话。某人
应用归结原理求解下列问题: 设张三、李四和王五三人中有人从不说真话,也有人从不说假话。某人向这三人分别提出同一个问题:谁是说假话者?张三答:“李四和王五都是说假话者”;李四答:“张三和王五都是说假话者”;王五答:“张三和李四中至少有一个说假话者”。求谁是说假话者,谁是说真话者?
请帮忙给出正确答案和分析,谢谢!
-
正确答案:解:第一步:将已知条件用谓词公式表示出来并化成子句集那么要先定义谓词。 (1)定义谓词和常量: 设P(x)表示x说真话。Z表示张三L表示李四W表示王五。 (2)将已知事实用谓词公式表示出来: 若张三说的是真话则有P(Z)→~P(L)∧~P(W) 若张三说的是假话则有~P(Z)→P(L)∨P(W) 对李四和王五说的话做同样的处理可得: P(L)→~P(Z)∧~P(W) ~P(L)→P(Z)∨P(W) P(W)→~P(Z)∨~P(L) ~P(W)→P(Z)∧P(L) (3)将它们化成子句集得S: ①~P(Z)∨~P(L) ②~P(Z)∨~P(W) ③P(Z)∨P(L)∨P(W) ④~P(L)∨~P(W) ⑤~P(W)∨~P(Z)∨~P(L) ⑥P(W)∨P(Z) ⑦P(W)∨P(L) 第二步:把问题用谓词公式表示出来并将其否定与谓词ANSWER作析取。 设u是说真话者则有:P(u)。将其否定与ANSWER作析取得: G:~P(u)∨ANSWER(u) 将上述公式G化为如下的子句并将其合并到S。 ⑧~P(u)∨ANSWER(u)} 第三步:应用归结原理对上述子句集进行归结。 ⑨~P(Z)∨P(W) ①、⑦归结 ⑩P(W) ⑥、⑨归结 ⑩ANSWER(W) ⑧、⑩归结σ={W/u} 第四步:得到的归结式ANSWER(W)答案即在其中u=W所以求得王五是说真话者。 除此之外无论对上述子句集如何进行归结都推不出ANSWER(Z)和ANSWER(L)来说明张三和李四不是说真话者。其实可以证明张三和李四是说假话者。证明的方法是设张三或李四是说假话者则有:~P(Z)或~P(L)作为要证明的结论将它的否定之子句并入前面的子句集①至⑦并进行归结推理推出空子句从而证明假设的正确性即张三和李四是说假话者。
解:第一步:将已知条件用谓词公式表示出来,并化成子句集,那么要先定义谓词。(1)定义谓词和常量:设P(x)表示x说真话。Z表示张三,L表示李四,W表示王五。(2)将已知事实用谓词公式表示出来:若张三说的是真话,则有P(Z)→~P(L)∧~P(W)若张三说的是假话,则有~P(Z)→P(L)∨P(W)对李四和王五说的话做同样的处理,可得:P(L)→~P(Z)∧~P(W)~P(L)→P(Z)∨P(W)P(W)→~P(Z)∨~P(L)~P(W)→P(Z)∧P(L)(3)将它们化成子句集得S:①~P(Z)∨~P(L)②~P(Z)∨~P(W)③P(Z)∨P(L)∨P(W)④~P(L)∨~P(W)⑤~P(W)∨~P(Z)∨~P(L)⑥P(W)∨P(Z)⑦P(W)∨P(L)第二步:把问题用谓词公式表示出来,并将其否定与谓词ANSWER作析取。设u是说真话者,则有:P(u)。将其否定与ANSWER作析取,得:G:~P(u)∨ANSWER(u)将上述公式G化为如下的子句,并将其合并到S。⑧~P(u)∨ANSWER(u)}第三步:应用归结原理对上述子句集进行归结。⑨~P(Z)∨P(W)①、⑦归结⑩P(W)⑥、⑨归结⑩ANSWER(W)⑧、⑩归结σ={W/u}第四步:得到的归结式ANSWER(W),答案即在其中,u=W,所以,求得王五是说真话者。除此之外,无论对上述子句集如何进行归结,都推不出ANSWER(Z)和ANSWER(L)来,说明张三和李四不是说真话者。其实可以证明张三和李四是说假话者。证明的方法是设张三或李四是说假话者,则有:~P(Z)或~P(L)作为要证明的结论,将它的否定之子句并入前面的子句集①至⑦,并进行归结推理,推出空子句,从而证明假设的正确性,即张三和李四是说假话者。
