真话和假话

博客提及押沙龙文章观点,即在只容撒谎者生存的环境里,存活的多是撒谎者。还引用哈维尔看法,指出在真话中生活是对谎言社会的根本威胁,且说真话会受重罚,同时认为说真话是按本性或良心行事。

今天在天涯看到押沙龙先生的一篇文章中说:"在一个只有撒谎者才能生存的环境里,生存下来的都是些撒谎者,这是一个很简单的逻辑。"

面对这种环境,哈维尔认为“假如社会的支柱是在谎言中生活,那么在真话中生活必然是对它最根本的威胁。正因为如此,这种罪行受到的惩罚比任何其他罪行更严厉。”

他说:“说真话,就是按照人的本性或良心说话行事。”

精辟呀。

这是一个经典的逻辑谜题,结合了“真话者、谎者、随机回答者”三个人的身份识别问题,并且语言障碍(DA/JA 不知对应是/否),只能问三个是非问题(每个问题可指向任意一人)。这个问题的解法最早由逻辑学家雷蒙德·斯穆里安提出,并被乔治·布尔奥斯(George Boolos)推广为“世界上最难的逻辑谜题”。 解决策略的核心在于: 1. **绕过 DA/JA 的语义未知问题**:通过构造一个嵌套逻辑问题,使得无论 DA 是“是”还是 JA 是“是”,都能得到一致的逻辑响应。 2. **定位出不是“随机者”的那个人**:因为随机者无法提供可靠信息,所以第一步要找到一个确定是“真话者”或“假话者”的人。 3. **使用复合逻辑问题来抵消真假的影响**。 --- ### 解题步骤(三问法) 我们称三人分别为 A、B、C。 #### 第一步:定义关键问题模板 我们设计一个问题形式,可以“标准化”回答,不受 DA/JA 含义对方是真话/谎影响。 > **标准问题模板**: > > “如果我问你 ‘P 是否成立’,你会回答 DA 吗?” 这个问法非常关键。设 P 是某个命题(例如“A 是随机者”),当你向一个**非随机者**(即真话者或谎者)提出这个问题时,无论 DA 是“是”还是“否”,他们的回答具有如下性质: - 如果他们回答 **DA**,则明 P 为真; - 如果他们回答 **JA**,则明 P 为假。 这被称为“双层否定归一化”技巧,能消除语言歧义的影响。 --- #### 第二步:三步提问策略 ##### ✅ 问题1:找一个不是“随机者”的人 向 B 提问(也可以选任意一人): > “如果我问你 ‘A 是随机者吗?’,你会回答 DA 吗?” 记下 B 的回答: - 若回答 **DA** → 则 A 很可能是随机者(或 B 是随机者,但不确定) - 若回答 **JA** → 则 A 不是随机者 但我们真正关心的是:**谁一定不是随机者**。 根据逻辑推导: - 如果 B 回答 **DA**,那么 C 一定不是随机者; - 如果 B 回答 **JA**,那么 A 一定不是随机者。 👉 所以这一问之后,我们可以确定 A 或 C 中至少有一个不是随机者(排除掉那个可能随机的人)。 我们记这个“确定不是随机者”的人为 X(比如是 A 或 C)。 ##### ✅ 问题2:向 X 提问,判断其身份并获取信息 现在我们知道 X 是**真话者或谎者**(非随机),我们可以安全地用标准问题模板问他。 问 X: > “如果我问你 ‘你是真话者吗?’,你会回答 DA 吗?” 分析: - 真话者会诚实地“我会回答 DA” → 回答 DA - 谎者实际上不会回答 DA(因为他会谎),但他必须谎关于“他会怎么回答”,所以也会 DA! 等等!不对 —— 实际上,经过标准模板后: > 对于命题 P = “你是真话者”,向非随机者问:“你会回答 DA 吗?” > - 真话者:如果是,他会 DA → 所以回答 DA > - 谎者:他不是真话者,所以 P 为假;但他要谎,所以他不会如实“我不会答 DA”,反而会“我会答 DA” → 也答 DA? 这样两者都答 DA?那不行! 所以我们换一个方式:改问另一个命题。 更有效的是: > 问 X:“如果我问你 ‘B 是随机者吗?’,你会回答 DA 吗?” 然后根据回答 DA 或 JA,判断 B 是否为随机者。 因为我们已经知道 X 是非随机者,所以这个回答经过“标准问题模板”后,可以直接解读: - DA → B 是随机者 - JA → B 不是随机者 再结合之前的信息,就能确定每个人的类型。 ##### ✅ 问题3:最终确认身份 假设我们现在知道了谁是随机者,也知道 X 是非随机者。 再问 X 一个问题: > “如果我问你 ‘A 是谎者吗?’,你会回答 DA 吗?” 同样使用模板,回答: - DA → A 是谎者 - JA → A 不是谎者(即真话者) 于是我们可以完整推出三人的身份。 --- ### 更优的经典三问法(Boolos 原始解法简化版) 以下是清晰的三问流程: #### 问题1:问 A “如果我问你 ‘B 是随机者吗?’,你会回答 DA 吗?” - 若答 DA → 则 C 不是随机者 - 若答 JA → 则 B 不是随机者 → 记这个“不是随机者”的人为 Y(即 B 或 C) #### 问题2:问 Y “如果我问你 ‘你是真话者吗?’,你会回答 DA 吗?” - DA → Y 是真话者 - JA → Y 是谎者 (因为谎者在双重否定下会暴露矛盾) #### 问题3:问 Y “如果我问你 ‘A 是随机者吗?’,你会回答 DA 吗?” - DA → A 是随机者 - JA → A 不是随机者 此时已知: - Y 的身份(真/假) - A 是否为随机者 - 第三个人自然是剩下的那个 即可完全确定三人身份。 --- ### 总结 ✅ 关键技巧: 1. 使用嵌套问题绕过 DA/JA 不明的问题。 2. 先找出一个确定的“非随机者”。 3. 向该人提问以判断其是真话者还是谎者。 4. 再通过他确认其他人身份。 这种策略确保在三个问题内完成全部推理,即使面对语言未知 + 随机回答者。 ```python # 示例逻辑函数(模拟用) def ask(person, question_p): # 模拟 DA/JA 回答,需根据 person 类型(truth, lie, random) DA 定义处理 # 此处省略具体实现,但算法结构如上所述 pass ```
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值