1701741236
说假话的和说真话的
1701741237
1701741238
逻辑谜题是我们用以理解世界的演绎推理的缩影。我们来看一下,如何用程序化的方法解决一个逻辑问题。逻辑谜题中最古老的类型之一建立于如下背景:在一个遥远的海岛上有一些居民,其中有些人总说真话,还有些人总说假话。他们分别属于两个部落:说真话者的部落,其成员总说真话;说谎者的部落,其成员总说谎话。必须强调的是,说谎者并不狡诈,他们不会采用时而说真话的办法来掩盖一个谎言,他们说出的每一句话都与真话完全相反。两个部落的服饰是一样的,对于外地人,也没有其他线索能够区分某个人属于哪个部落。也许最常被重复的“说真话—说假话”的问题是纳尔逊·古德曼(此人因提出绿蓝—蓝绿问题而著名)设计的一个问题。这个问题于1931年发表于《波士顿邮报》的谜题专栏,但是没有指明其发明者。我们把这个问题稍加变动,表述如下:
1701741239
1701741240
在一个“说真话–说假话”的海岛上,你遇到三个人,分别是艾丽斯、本和查理。
1701741241
1701741242
你问艾丽斯,她是说谎话的还是说真话的。她用方言作答,你没听懂。
1701741243
1701741244
然后你问本,艾丽斯说的是什么。本会说英语,他说:“艾丽斯称自己在说谎。”你又问本关于查理的情况,本回答道:“查理也是说假话的。”
1701741245
1701741246
最后,查理补充说:“艾丽斯是说真话的。”
1701741247
1701741248
你能推出这三个人各自属于哪个部落吗?
1701741249
1701741251
谁在说谎?
1701741252
1701741253
在演绎推理中,基本原则与主观性的因素无关;在“说真话—说假话”的问题中,也是如此。假如这个问题这么开头:我们的主人公从飞机上跳伞,落到一个海岛上——这不会产生任何影响。然后给这三个人换上不同的名字,也不会有什么不同,只不过答案中出现的名字变了。这个问题的最关键之处在于发现了一种逻辑联系,这是唯一重要的。
1701741254
1701741255
我们只关心一件事:确定这三个人所属的部落。在解决算术问题时,我们经常利用“x=12+5y”之类的公式。其中x和y是变量,表示未知的量,在一个可能的变化范围内取值。解决这类问题的关键,在于确定x和y必须取什么特定的值。逻辑问题也可以用同样的方法处理。在这个逻辑谜题中,有三个未知量:艾丽斯是否说真话,本是否说真话以及查理是否说真话。
1701741256
1701741257
当然你也可以说,未知量是艾丽斯、本、和查理是否说谎话。这不会带来什么差别。不过我们对这个思路不加评判,我们仅仅以艾丽斯、本和查理是否说真话为未知量。这样,我们就得到了三个简单的命题,其真假未定:
1701741258
1701741259
艾丽斯是说真话的。
1701741260
1701741261
本是说真话的。
1701741262
1701741263
查理是说真话的。
1701741264
1701741265
以上三个命题是对整个情景最基本的描述,它们构成了这个问题的逻辑结构的原子,不存在比它们更基本的命题。这三个命题不是我们已经确知的事实,它们只是我们构造出来的或真或假的命题,因此,它们的地位非常类似于代数中的变量。当然,这些语句的“值”可以是“真”,也可以是“假”。用逻辑学术语说,这些命题是“布尔变量”,这个术语得名于英国逻辑学家乔治·布尔(George Boole,1815~1864)。
1701741266
1701741267
在这个逻辑问题中,我们首先问了艾丽斯一个问题。但是,艾丽斯的回答我们听不懂,我们从中推不出任何有效信息。
1701741268
1701741269
第一个有效信息来自本。本说艾丽斯称自己是说谎的。你很可能已经想到了,我们不能按照该句的表面意思接受这个命题。本在转述艾丽斯的话时可能在说谎,艾丽斯本人在介绍自己的情况时也可能在说谎。只有在确定了三个人分别属于哪个部落之后,也就是说,只有在确定了谁说假话、谁说真话以后,本的话的真正意思才可以确定。
1701741270
1701741271
我们分析一下。艾丽斯和本不可能都说真话。如果他们都说真话,那么艾丽斯会诚实地说她是说真话的,而本也会诚实地把艾丽斯的话翻译给我们。由于本说艾丽斯称自己是说谎的,因此我们得出结论,这两个人并非都说真话。
1701741272
1701741273
艾丽斯和本有可能都说假话吗?有可能。当我们问艾丽斯她是否说谎时,她会回答说她不说谎。本也是嘴里没有一句真话的撒谎精,他会对艾丽斯的话加以否定,这样就形成了双重否定。本会说艾丽斯称自己是说谎的。我们听到他就是这么说的。
1701741274
1701741275
实际上,没有人会说“我是说谎的”。说真话的人不会这样说——因为这是谎话;说谎话的人也不会这样说——因为这是真话。如果直截了当地问一个人是否说谎,每个人都会说自己是说真话的(在现实生活中也是如此)。
1701741276
1701741277
本说艾丽斯称自己是说谎的,这句话彻底暴露了他自己。无论艾丽斯实际上属于哪个部落,她一定会说自己是说真话的。本的话与此相反,所以本是说谎话的。
1701741278
1701741279
(如果艾丽斯根本没听懂我们的问题,又会怎么样呢?她很可能会说“我听不懂英语”,或者相反,“我能听懂英语”——如果她是说谎话的。本会向我们报告其中的一个反应,如果本是说谎的,他会给我们一个错误的答案。由于说谎者部落如此缺乏想象力,从本的实际回答我们得知,艾丽斯一定已经听懂了问题,并且做出了一个关于她的部落归属的回答。)
1701741280
1701741281
由于本是说谎的,他的第二句话 (“查理是说谎的”)一定也是假的。因此,查理一定是说真话的。
1701741282
1701741283
下面只剩查理的话了。查理说艾丽斯是说真话的,我们已经知道查理是说真话的,所以这一定是实际情况。答案是,艾丽斯说真话,本说谎话,查理说真话。
1701741284
[
上一页 ]
[ :1.701741235e+09 ]
[
下一页 ]