在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 10226|回复: 52

世界上最难的逻辑题

[复制链接]
发表于 2007-12-30 11:25:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 genghis 于 2009-11-6 19:53 编辑

背景 :

  逻辑学家和难题大师 Raymond Smullyan 制作了一道逻辑题,在很长的一段时间内无人能够解答,被称为迄今世界上最难的逻辑题。后来计算机科学家John McCathy 对题目进行了修改,使题目变得更难。麻省理工学院哲学教授,Provability 逻辑领域的创始人 George Boolos 首先成功解答了这个逻辑题,并且发表了论文《 The Hardest Logic Puzzle Ever 》。这篇论文收录在 George Boolos 的著作《Logic , Logic , and Logic》( 1998年 哈佛大学出版社 )里。

Raymond Smullyan 制作的原题 :

        Three gods A , B , and C are called , in some order , True , False , and Random  .  True always speaks truly ,  False always speaks falsely , but whether Random speaks truly or falsely is a completely random matter  .  Your task is to determine the identities of A , B , and C by asking three yes-no questions ; each question must be put to exactly one god  .

John McCathy 修改后的题目 :

        Three gods A , B , and C are called , in some order , True , False , and Random  .  True always speaks truly ,  False always speaks falsely , but whether Random speaks truly or falsely is a completely random matter  .  Your task is to determine the identities of A , B , and C by asking three yes-no questions ; each question must be put to exactly one god  .  The gods understand English , but will answer all questions in their own language , in which the words for " yes " and " no " are " da " and " ja " in some order  .  You do not know which word means which  .

John McCathy 修改后的题目 :

    有甲、乙、丙三个精灵,其中一个只说真话,另外一个只说假话。还有一个随机地决定何时说真话,何时说假话。你可以向这三个精灵发问三条是非题,而你的任务是从他们的答案找出谁说真话,谁说假话,谁是随机答话。这个难题困难的地方是这些精灵会以“Da”或“Ja”回答,但你并不知道它们的意思,只知道其中一个字代表“对”,另外一个字代表“错”。你应该问那三条问题呢?

解题思路 :

        第一个问题 : 确定一个非 Random 精灵  。
        第二个问题 :确定非 Random 精灵的身份  。
        第三个问题 :确定其它精灵的身份  。

解题过程 :

        问 A 第一个问题 :你对 “ da 表示是吗 ? ” 和 “ 你对 ‘ 你是 Ture 吗 ?’ 和 ‘ B 是 Random 吗 ?’ 这两个问题的回答相同吗 ?” 这两个问题的回答相同吗 ?

        如果 A 是 Random ,那么 B 和 C 都不是 Random  。
        如果 A 不是 Random ,那么 A 对第二个是非问句的回答为
         A                B                “ 你是 True 吗 ?”        “ B 是 Random 吗 ?”        回答
         True            Random                是                                    是                             是
         True            False                     是                                    否                             否
         False           Random                是                                    否                             是
         False           True                      是                                    是                             否
         可以得出 :
                 如果 A 对第二个是非问句的回答为是 ,那么 B 是 Random , C 不是 Random  。
                 如果 A 对第二个是非问句的回答为否 ,那么 B 不是 Random  。
         A 对第一个问题的回答为
        A                da                “ da 表示是吗 ?”        第二个是非问句        回答
        True           是                            是                                  是                      da
        False          是                            否                                  是                      da
        True           否                            否                                  是                      da
        False          否                            是                                  是                      da
        True           是                            是                                  否                      ja
        False          是                            否                                  否                      ja
        True           否                            否                                  否                      ja
        False          否                            是                                  否                      ja
        可以得出 :
                 如果 A 对第一个问题的回答为 da , 那么 A 对第二个是非问句的回答为是  。
                 如果 A 对第一个问题的回答为 ja , 那么 A 对第二个是非问句的回答为否  。
       因此得出:
                 如果 A 对第一个问题的回答为 da , 那么C 不是 Random  。
                 如果 A 对第一个问题的回答为 ja , 那么 B 不是 Random  。

        当 B 不是 Random 时( 当 C 不是 Random 时 ,同理分析 ) , 问 B 第二个问题 :你对 “ da 表示是吗 ?” 和 “ 你是 Random 吗 ?” 这两个问题的回答相同吗 ?

        B 对第二个问题的回答为
        B                da                “ da 表示是吗 ?”            “ 你是 Random 吗 ?”        回答
        True           是                            是                                       否                              ja
        True           否                            否                                       否                              ja
        False          是                            否                                       是                              da
        False          否                            是                                       是                              da
  
        可以得出:
                 如果 B 对第二个问题的回答为 da , 那么 B 是 False  。
                 如果 B 对第二个问题的回答为 ja , 那么 B 是 Ture  。
        问 B 第三个问题 :你对 “ da 表示是吗 ?” 和 “ A 是 Random 吗 ?” 这两个问题的回答相同吗 ?
        当 B 为 True 时(当 B 为 False 时 ,同理分析) ,B 对第三个问题的回答为
        A                da                “ da 表示是吗 ?”            “ A 是 Random 吗 ?”        回答
        Random     是                            是                                       是                              da
        Random     否                            否                                       是                              da
        False          是                            是                                       否                              ja
        False          否                            否                                       否                              ja
        可以得出 :
                 如果 B 对第三个问题的回答为 da , 那么A 是 Random  。因此三个精灵身份全部确定  。
                 如果 B 对第三个问题的回答为 ja , 那么 A 是 False  。因此三个精灵身份全部确定  。

截图00.jpg

Logic-Logic-and-Logic.part1.rar

4.77 MB, 下载次数: 18 , 下载积分: 资产 -3 信元, 下载支出 3 信元

Logic-Logic-and-Logic.part2.rar

1007.28 KB, 下载次数: 11 , 下载积分: 资产 -2 信元, 下载支出 2 信元

The Hardest Logic Puzzle Ever.pdf

177.15 KB, 下载次数: 19 , 下载积分: 资产 -2 信元, 下载支出 2 信元

发表于 2007-12-31 05:13:02 | 显示全部楼层
呵呵,有意思,初步分析,为了应对每一种da,ja的输出组合,提出的问题应该有普适性,既必须对所有可能的输出,有一个唯一的解释,毕竟提问机会只有一次嘛。这种问题做IC功能验证的兄弟应该比较在行哦。。。就是如何恰当的输入测试矢量,才能覆盖所有的可能性,并且最后将能够解释其输出。。。乱说一通 呵呵 ,再研究研究。。
发表于 2008-5-20 14:19:44 | 显示全部楼层
ddddddddddddddddddddd
发表于 2008-5-21 17:24:13 | 显示全部楼层
发表于 2008-5-22 12:12:55 | 显示全部楼层
赫赫,我去考考别人
发表于 2008-5-22 12:14:06 | 显示全部楼层
呵呵,有意思
发表于 2008-6-9 18:54:37 | 显示全部楼层
好玩!
发表于 2008-6-10 17:15:44 | 显示全部楼层
有意思!
发表于 2008-6-19 12:12:51 | 显示全部楼层
很有意思
发表于 2008-6-21 21:04:12 | 显示全部楼层
呵呵,有意思
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-6-2 19:54 , Processed in 0.042146 second(s), 11 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表