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

简介:

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烟的人的邻居喝矿泉水。
那么谁在养鱼?

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

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


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

目录
相关文章
|
7月前
|
机器学习/深度学习 数据挖掘 数据处理
"揭秘数据处理新境界:基于维度的算术操作,如何颠覆你的数据操作思维?"
【8月更文挑战第19天】基于维度的算术操作革新了数据处理方式,尤其在面对多维数据时更为直观高效。例如,Python的NumPy库支持对多维数组执行如加法、乘法等操作,自动处理维度匹配,简化复杂计算。此方法不仅通用性强,且在科学计算、机器学习等领域应用广泛,如图像处理中的像素级运算。理解和掌握基于维度的操作对于数据科学家至关重要。
56 2
|
7月前
|
C++
拥抱C++面向对象编程,解锁软件开发新境界!从混乱到有序,你的代码也能成为高效能战士!
【8月更文挑战第22天】C++凭借其强大的面向对象编程(OOP)能力,在构建复杂软件系统时不可或缺。OOP通过封装数据和操作这些数据的方法于对象中,提升了代码的模块化、重用性和可扩展性。非OOP方式(过程化编程)下,数据与处理逻辑分离,导致维护困难。而OOP将学生信息及其操作整合到`Student`类中,增强代码的可读性和可维护性。通过示例对比,可以看出OOP使C++代码结构更清晰,特别是在大型项目中,能有效提高开发效率和软件质量。
55 1
|
架构师 UED
【设计思维框架】为现代企业重新设想的设计思维(上)
【设计思维框架】为现代企业重新设想的设计思维
|
安全 数据可视化 测试技术
【设计思维框架】为现代企业重新设想的设计思维(下)
【设计思维框架】为现代企业重新设想的设计思维
|
数据挖掘
数据分析思维(五)|逻辑树思维
在很多数据分析场景中我们需要梳理分析的逻辑,需要进行指标从大到小的拆分,这时候我们可以顺着影响分析结果的因素进行层层溯源,从而抓住问题的核心。为了有更清晰的逻辑结构,常常采用逻辑树(又称问题树、分解树)进行整体过程的呈现。逻辑树使用层级的结构将每个大问题的所有子问题进行罗列,然后再将子问题的子问题进行罗列,以此类推,当问题不能够被拆分时形成一个完整的逻辑树。
数据分析思维(五)|逻辑树思维
|
小程序 JavaScript 前端开发
兴趣编程六步法
欢迎来到我的小院,在当今时代,科技力量代表一个国家的核心竞争力,其中计算机编程技术尤为重要,可以从中学习逻辑分析能力,业务抽象能力,专注思考能力等等,美国等一些发达国家,已经把编程教育纳入小学课本中,所以我们也需要加快步伐,掌握编程的一些理念和实战技巧。
兴趣编程六步法
|
5G 数据安全/隐私保护
带你读《果壳中的5G:新网络时代的技术内涵与商业思维》第一章从 0 到 5 的演化与逻辑1.3
《果壳中的5G:新网络时代的技术内涵与商业思维》第一章从 0 到 5 的演化与逻辑1.3
带你读《果壳中的5G:新网络时代的技术内涵与商业思维》第一章从 0 到 5 的演化与逻辑1.3
|
5G 网络架构
带你读《果壳中的5G:新网络时代的技术内涵与商业思维》第一章从 0 到 5 的演化与逻辑1.5(一)
带你读《果壳中的5G:新网络时代的技术内涵与商业思维》第一章从 0 到 5 的演化与逻辑1.5
带你读《果壳中的5G:新网络时代的技术内涵与商业思维》第一章从 0 到 5 的演化与逻辑1.5(一)
|
机器人 5G 芯片
带你读《果壳中的5G:新网络时代的技术内涵与商业思维》第一章从 0 到 5 的演化与逻辑1.6
带你读《果壳中的5G:新网络时代的技术内涵与商业思维》第一章从 0 到 5 的演化与逻辑1.6
带你读《果壳中的5G:新网络时代的技术内涵与商业思维》第一章从 0 到 5 的演化与逻辑1.6
|
运维 5G 网络架构
带你读《果壳中的5G:新网络时代的技术内涵与商业思维》第一章从 0 到 5 的演化与逻辑1.5(二)
《果壳中的5G:新网络时代的技术内涵与商业思维》第一章从 0 到 5 的演化与逻辑1.5(二)
带你读《果壳中的5G:新网络时代的技术内涵与商业思维》第一章从 0 到 5 的演化与逻辑1.5(二)