离散数学拾趣(二):逻辑难题

简介:

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不是普通人。”经过分析,侦探找到了罪犯,他是谁呢?

ContractedBlock.gif 谁是那个罪犯?

上面两道题都不复杂,通过穷举容易找到答案。

Q3爱因斯坦难题

在一条街上,有5座房子,喷了5种颜色。每个房子了住着不同国籍的人,每个人喝着不同的饮料,抽不同品牌的香烟,养着不同的宠物,这有一些他们的信息:
英国人住在红房子里,
瑞典人养了一条狗,
丹麦人喝茶,
绿房子在白房子左边,
绿房子主人喝咖啡,
抽PALL MALL烟的人养了一只鸟,
黄房子主人抽DUNHILL烟,
住在中间那间房子的人喝牛奶,
挪威人住第一间房子,
抽BLENDS烟的人住在养猫人的旁边,
养马的人住在DUNHILL烟的人旁边,
抽BLUE MASTER烟的人喝啤酒,
德国人抽PRINCE烟,
挪威人住在蓝房子旁边,
抽BLENDS烟的人的邻居喝矿泉水。
那么谁在养鱼?

ContractedBlock.gif 谁在养鱼?
得到答案了吗?据说98%的人得不出答案,这让人很得意:) 不过如果你不是通过纸笔和表格就得到了答案,才真正属于那2%的人。

这三道题尽管复杂度有别,但方法却相同。初始条件不完整,需要通过逻辑规则去推理,排除不可能的结果,对其余结果进行验证,得到最终的答案。


本文转自一个程序员的自省博客园博客,原文链接:http://www.cnblogs.com/anderslly/archive/2011/03/04/discrete-math-part2.html,如需转载请自行联系原作者。

目录
相关文章
|
20天前
|
开发者 Ruby
【绝技揭秘】Rails应用如何借助状态机巧化繁为简?一文带你走出复杂逻辑的迷宫!
【8月更文挑战第31天】状态机是简化复杂业务流程的强大工具,尤其适用于需遵循特定转换规则的对象,如订单系统。本文通过技术博客形式,介绍如何在Rails应用中利用`state_machine`这一流行gem实现状态机,通过具体示例代码展示其定义与使用方法,帮助你更清晰、高效地管理订单状态转换等业务逻辑。
21 0
|
2月前
|
算法 程序员
代码之舞:从逻辑之美到技术之艺
在数字世界的舞台上,代码不仅仅是冷冰冰的文字序列,而是充满韵律与美感的艺术。本文将带领读者走进编程的世界,探索如何通过逻辑的严谨性与创造性思维的结合,将代码变成一种独特的艺术形式。我们将一同见证技术与艺术如何交织在一起,创造出令人惊叹的作品。
|
4月前
|
Python
物理力学:理论探索与代码实践
物理力学:理论探索与代码实践
41 1
|
4月前
|
存储 安全 关系型数据库
技术人必修课:利用金字塔原理高效思考与表达
作者写这篇文章的目的就是希望能够帮助更多同学了解金字塔原理并合理应用,不只是写作,更是要着眼于思考和表达。本文将围绕认识金字塔结构、表达的逻辑、思考的逻辑、解决问题的框架、演示的逻辑这几个方面带领大家深入学习金字塔原理。
|
4月前
|
存储 算法 Java
【底层服务/编程功底系列】「手把手教学系列」带你打造一个属于自己的规则引擎服务,打破任何业务难题(逻辑模型和API设计)(一)
【底层服务/编程功底系列】「手把手教学系列」带你打造一个属于自己的规则引擎服务,打破任何业务难题(逻辑模型和API设计)
81 1
|
4月前
|
存储 设计模式 监控
【底层服务/编程功底系列】「手把手教学系列」带你打造一个属于自己的规则引擎服务,打破任何业务难题(逻辑模型和API设计)(二)
【底层服务/编程功底系列】「手把手教学系列」带你打造一个属于自己的规则引擎服务,打破任何业务难题(逻辑模型和API设计)
75 0
|
4月前
|
Java API
【底层服务/编程功底系列】「手把手教学系列」带你打造一个属于自己的规则引擎服务,打破任何业务难题(逻辑模型和API设计)(三)
【底层服务/编程功底系列】「手把手教学系列」带你打造一个属于自己的规则引擎服务,打破任何业务难题(逻辑模型和API设计)
73 0
|
4月前
数学基础从高一开始5、充分必要条件
数学基础从高一开始5、充分必要条件
48 0
编写s=1+2+3+...+n思路打破认知
最近在和领导讨论架构设计,其中涉及到如何通过代码来体现面向对象?通过一个例子来打破了原有的认知,以此总结记录自己的提升和成长
|
机器学习/深度学习 人工智能 自然语言处理
扩散模型背后数学太难了,啃不动?谷歌用统一视角讲明白了
扩散模型背后数学太难了,啃不动?谷歌用统一视角讲明白了
227 0