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