用数学来推导趣味逻辑题:骑士与流氓问题。

对于类似骑士与流氓的这种逻辑思维题,除了极个别的天才能够大脑随便一想就知道答案,绝大多数人都要好好的推断一会。
离散数学就教给了我们一种用数学方法来推导这种逻辑题,使得这些问题的难度降低不少。
下面就来看下《离散数学及其应用》第六版,1.1章练习题第55题我的推导分析吧。

一个小岛上住着两类人,一类是骑士,一类是流氓,骑士只说真话,流氓只说假话,有AB两个人,根据他们所说的话,判断AB各自是流氓还是骑士。
a)A说:我们之间至少有一个是流氓。B什么都没有说
b)A说:我们两个都是骑士。B说:A是流氓。
c)A说:我是流氓或者B是骑士。B什么都没说
d)两个人都说:我是骑士
e)A说:我们都是流氓。B什么都没说。

个人分析:
首先,定义命题p为A是骑士,!p代表A是流氓,q为B是骑士,!q为B是流氓
a)A说的内容可以用如下数学符号表达:(!p ∨ !q)。
      假设A是骑士,即p=1,说明A说的内容为真,即(!p ∨ !q)=1,因为p=1推出!p=0,所以!q=1,所有q=0,即B为流氓。过程没有矛盾。
      保险起见,再假设A是流氓,即!p=1,说明A说的内容为假,即(!p ∨ !q)=0,但是!p=1,所以(!p ∨ !q)不可能为0,所以有矛盾。
      结果就是A是骑士,B为流氓
b)A说的内容:(p ∧ q),B说的内容:!p
      假设A是骑士,即p=1,说明A说的内容为真,即(p ∧ q)=1,推出q=1,说明B也为骑士,那B说的话为真,就是说!p=1,即A为流氓,结论与条件矛盾,假设不对
      假设A是流氓,即!p=1,说明A说的内容为假,即(p ∧ q)=0,此时q是0还是1,都符合。再从B说的话着手,因为!p=1,所以B说的话是正确的,所以q=1,B是骑士,没有矛盾。
      结果就是A是流氓,B是骑士
c)A说的内容:(!p ∨ q)
      假设A是骑士,即p=1,说明A说的内容为真,即(!p ∨ q)=1,推出q=1,即说明B也为骑士,没有矛盾。
      假设A不是骑士,即!p=1,说明A说的内容为假,即(!p ∨ q)=0,但是!p=1,所以无论(!p ∨ q)是不可能为0的,所以矛盾
      结果俩人都是骑士
d)A说的内容:p。B说的内容:q
      假设A是骑士,即p=1,说明A说的内容为真,即p=1,与条件相符。
      假设A是流氓,即!p=1,说明A说的内容为假,即p=0,此时也与条件相符。
      B的判断也一样,所以结果是无法判断出谁是骑士谁是流氓
e)A说的内容:(!p ∧ !q)
      假设A是骑士,即p=1,说明A说的内容为真,即(!p ∧ !q)=1,因为!p=0,所以无论如何(!p ∧ !q)是不可能为0的,矛盾
      假设A是流氓,即!p=1,说明A说都内容为假,即(!p ∧ !q)=0,说明!q=0,即B是骑士,没有矛盾
      结果是A是流氓,B是骑士

posted on 2012-09-26 18:06 古月 阅读(5309) 评论(3)  编辑 收藏 引用 所属分类: 离散数学及其应用

评论

# re: 用数学来推导趣味逻辑题:骑士与流氓问题。 2012-09-28 13:25 flyliying

流氓只说假话---a)A说:我们之间至少有一个是流氓--结果是A是流氓,B是骑士

这个有点矛盾,a中A说的是真话了,但结论他是流氓  回复  更多评论   

# re: 用数学来推导趣味逻辑题:骑士与流氓问题。 2012-09-28 13:27 flyliying

看错结论了,sorry  回复  更多评论   

# re: 用数学来推导趣味逻辑题:骑士与流氓问题。 2012-09-28 14:11 古月

嘿嘿,没关系@flyliying
  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理


<2012年1月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
2930311234

导航

统计

常用链接

留言簿

随笔分类

随笔档案

文章档案

C++/C

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜