Raymond Smullyan与岛屿居民难题
Raymond Smullyan是美国的数学家和逻辑学家,他写过多本与逻辑难题的书。其中的一类题目是,通过逻辑推理确定给定的几个岛屿居民的身份。看下面两题。
Q1(1.1例15):一个岛上居住着两类人——骑士和流氓。骑士说的都是真话,而流氓总是说谎。现在碰到了两个人A和B,如果A说“B是骑士”,B说“我们两人不是一类人”。请判断A、B两人到底是骑士还是流氓。
解:每个人要么是骑士,要么是流氓,可以分别假设A是骑士或流氓,然后看是否与题中给出的条件一致。
假设A是骑士,那么他说的是真话,则B也是骑士,那么B也应当说真话,但B所说的并非如此,所以A不是骑士。
假设A是流氓,那么他说的是谎话,则B也是流氓,那么B也应当说谎话,与题目所给的条件一致,所以A和B都是流氓。
在本题中,A和B都有可能是两种身份,那总共有2*2种可能的情况,较为简单。再来看下面更复杂一点儿的题目。
Q2(补充练习题9):
假定在一个岛上住着三类人:骑士、流氓和普通人。骑士总是说真话,流氓总是说假话,普通人说话亦真亦假。侦探为了找出罪犯,询问了岛上的三个人Amy、Brenda和Claire。侦探知道三人中有一个是罪犯,但不知道是哪个人;同时他也知道罪犯是一个骑士,另两个不是骑士;此外,侦探还记录了如下供述。Amy说:“我是清白的。”Brenda说:“Amy说的是真的。”Claire说:“Brenda不是普通人。”经过分析,侦探找到了罪犯,他是谁呢?
上面两道题都不复杂,通过穷举容易找到答案。
Q3爱因斯坦难题
在一条街上,有5座房子,喷了5种颜色。每个房子了住着不同国籍的人,每个人喝着不同的饮料,抽不同品牌的香烟,养着不同的宠物,这有一些他们的信息:
英国人住在红房子里,
瑞典人养了一条狗,
丹麦人喝茶,
绿房子在白房子左边,
绿房子主人喝咖啡,
抽PALL MALL烟的人养了一只鸟,
黄房子主人抽DUNHILL烟,
住在中间那间房子的人喝牛奶,
挪威人住第一间房子,
抽BLENDS烟的人住在养猫人的旁边,
养马的人住在DUNHILL烟的人旁边,
抽BLUE MASTER烟的人喝啤酒,
德国人抽PRINCE烟,
挪威人住在蓝房子旁边,
抽BLENDS烟的人的邻居喝矿泉水。
那么谁在养鱼?
这三道题尽管复杂度有别,但方法却相同。初始条件不完整,需要通过逻辑规则去推理,排除不可能的结果,对其余结果进行验证,得到最终的答案。
本文转自一个程序员的自省博客园博客,原文链接:http://www.cnblogs.com/anderslly/archive/2011/03/04/discrete-math-part2.html,如需转载请自行联系原作者。