肋间神经炎可以自愈吗:一个教授逻辑学的教授,有三个学生,而且三个学生均非常聪明!

来源:百度文库 编辑:中财网 时间:2024/05/01 18:42:39

一个教授逻辑学的教授,有三个学生,而且三个学生均非常聪明!

[ 标签:教授逻辑学,教授,学生 ]

一个教授逻辑学的教授,有三个学生,而且三个学生均非常聪明! 
一天教授给他们出了一个题,教授在每个人脑门上贴了一张纸条并告诉他们,每个人的纸条上都写了一个正整数,且某两个数的和等于第三个!(每个人可以看见另两个数,但看不见自己的) 
教授问第一个学生:你能猜出自己的数吗?回答:不能,问第二个,不能,第三个,不能,再问第一个,不能,第二个,不能,第三个:我猜出来了,是144!教授很满意的笑了。请问您能猜出另外两个人的数吗?

Yolanda回答:21人气:307解决时间:2009-08-04 14:35

满意答案

好评率:82%答案是:36和108

思路如下:

首先说出此数的人应该是二数之和的人,因为另外两个加数的人所获得的信息应该是均等的,在同等条件下,若一个推不出,另一个也应该推不出。(当然,我这里只是说这种可能性比较大,因为毕竟还有个回答的先后次序,在一定程度上存在信息不平衡)

另外,只有在第三个人看到另外两个人的数是一样时,才可以立刻说出自己的数。

以上两点是根据题意可以推出的已知条件。

如果只问了一轮,第三个人就说出144,那么根据推理,可以很容易得出另外两个是48和96,怎样才能让老师问了两轮才得出答案了?这就需要进一步考虑:

A:36(36/152) B:108(108/180) C:144(144/72)

括弧内是该同学看到另外两个数后,猜测自己头上可能出现的数。现推理如下:

A,B先说不知道,理所当然,C在说不知道的情况下,可以假设如果自己是72的话,B在已知36和72条件下,会这样推理──“我的数应该是36或108,但如果是36的话,C应该可以立刻说出自己的数,而C并没说,所以应该是108!”然而,在下一轮,B还是不知道,所以,C可以判断出自己的假设是假,自己的数只能是144!
----------------------
给你上课的教授为何说是169??你要QM吐血啊!!
----------------------

  在逻辑推理中有一类比较特殊的问题——“思维嵌套”问题,即在C的脑海中要考虑B是如何思考A的想法。这种问题通常非常抽象,考虑情况又十分繁多,思想过程极其复杂,用一般方法分析效果极差。

  一、问题原形

一位逻辑学教授有三名善于推理且精于心算的学生A,B和C。有一天教授给他们三人出了一道题:教授在每个人的脑门上贴了一张纸条并告诉他们,每个人的纸条都写了一个大于0的整数,且某两个数的和等于第三个。于是,每个学生都能看见贴在另外两个同学头上的整数,但却看不见自己的数。

  教授轮流向A,B和C发问:是否能够猜出自己头上的数。经过若干次的提问之后,当教授再次询问某人时,他突然露出了得意的笑容,把贴在自己头上的那个数准确无误地报了出来。

  我们的问题就是:证明是否有人能够猜出自己头上的数,若有人能够猜出,则计算最早在第几次提问时有人先猜出头上的数。

  我们先分析一个简单的例子,观察每个人是如何进行推理的。

  假设A,B和C三人,头上的数分别是l,2和3。

  l. 先问A

  这时,A能看见B,C两人头上的数分别是2,3。A会发现自己头上只可能为3+2=5,或者3-2=1。可到底是l还是5,A无法判断,所以只能回答“不能”。

  2.再问B

  B会发现自己头上只可能为3+1=4,或者3-1=2。可到底是2还是4,B只能从A的回答中入手分析:(以下为B脑中的分析)

  如果自己头上是2。则A能看见B,C两人头上的数分别是2,3,A会发现自己头上只可能为3+2=5,或者3- 2=1。到底是l还是5,A无法判断,只能回答“不能”。这与A实际的回答相同,并不矛盾,所以B无法排除这种情况。

  如果自己头上是4。则A能看见B,C两人头上的数分别是4,3,A会发现自己头上只可能为4+3=7,或者4-3=1。到底是l还是7,A无法判断,只能回答“不能”。这也与A实际的回答相同,并不矛盾,所以B也无法排除这种情况。

  B无法判断,只能回答“不能”。

  3.再问C

  C会发现自己头上只可能为2+1=3,或者2-1=l。可到底是l还是3.C只能从A或B的回答中入手分析:(以下为C脑中的分析)

  如果自己头上是1。

  A会发现自己头上只可能为2+l=3,或者2-1=1。可到底是l还是3,是无法判断的,只能回答“不能”。这与A实际的回答相同,并不矛盾。

  B会发现自己头上只可能为1+1=2(因为B头上是大于0的整数,所以B头上不能是1-l=0)。B应回答“能”。但这与B实际的回答矛盾。C能以此排除头上是1这种情况。

  继续分析C头上是3这种情况,会发现毫无矛盾(与实际情况相符)。

  C将准确判断头上的数是3,所以回答“能”。所以在第三次提问时有人猜出头上的数。

  我们从每个人的角度出发,分析了头上数是l,2和3的情况。这种方法也是我们解决简单的逻辑推理问题所采用的普遍做法。但如果将问题的规模变大,会发现问题的复杂程度会急剧上升,几乎是多一次推理,问题的复杂度就要变大一倍。

  靠如此烦琐的推理是不能很好解决问题的。原因在于有大量的“思维嵌套”。即:在C的脑海中要考虑B是如何思考A的想法。此外,这种方法不能够推导出有普遍意义的结论。让我们换一种思路来解决问题。

  下面我们用第一位、第二位、第三位学生分别表示A,B,C三人。

  经推论,无论三个数如何变化,无论从谁开始提问,必然是头上数最大的人最先猜出自己头上的数。

  由上述结论,对于,(a1,a2,a3,k)可以定义f(a1,a2,a3,k)的递推式:

  当k=1时

  当a2=a3时,f(a1,a2,a3,1)=1

  当a2>a3时,f(a1,a2,a3,1)=f(a2-a3,a2,a3,2)+2

  当a2<a3时,f(a1,a2,a3,1)=f(a3-a2,a2,a3,3)+1

  当k=2时

  当a1=a3时,f(a1,a2,a3,2)=2

  当a2>a3时,f(a1,a2,a3,2)=f(a1,a1-a3,a3,1)+1

  当a2<a3时,f(a1,a2,a3,2)=f(a1,a3-a1,a3,3)+2

  当k=3时

  当a1=a2时,f(a1,a2,a3,3)=3

  当a1>a2时,f(al,a2,a3,3)=f(a1,a2,a1-a2,1)+2

  当al<a2时,f(a1,a2,a3,3)=f(a1,a2,a2-a1,2)+1

  由于我们只考虑(a1,a2,a3,k)∈= S3,因此k可由a1,a2,a3三个数直接确定,因此f(a1,a2,a3,k)可以简化为f(a1,a2,a3)。

  利用上面的公式,通过计算机编程来辅助解决问题。

  由于建立了线性的递推关系,因此避免了问题规模随着提问次数呈指数型增长,有效地解决了问题,其解决方法是建立在对问题的深入分析之上的。现在让我们总结解决问题中思路的主线:

  提炼重要的前提条件→考虑何种情形为“终结情形” →对非“终结情形"建立推理的等价关系→考虑何种情形能归结到“终结情形”→分情况讨论并加以证明→得出结论并改写等价关系→得出公式。

  整个过程是从分析问题的本质入手,而非一味单纯地从每个人思想出发,并推导出普遍意义的结论。从全局的角度分析问题,避免了最烦琐的“思维嵌套",并且使得问题规模从指数型转变为线性。

  二、第一种推广

一位逻辑学教授有n(n≥3)名非常善于推理且精于心算的学生。有一天,教授给他们出了一道题:教授在每个人脑门上贴了一张纸条并告诉他们,每个人的纸条上都写了一个大于0的整数,且某个数等于其余n-1个数的和。于是,每个学生都能看见贴在另外n-1个同学头上的整数,但却看不见自己的数。

  教授轮流向学生发问:是否能够猜出自己头上的数。经过若干次的提问之后,当教授再次询问某人时,此人突然露出了得意的笑容,把贴在自己头上的那个数准确无误地报了出来。

  我们的问题就是:证明是否有人能够猜出自己头上的数,若有人能够猜出,则计算最早在第几次提问时有人先猜出头上的数,分析整个推理的过程,并总结出结论。

  经推论,无论n个数如何变化,无论从谁开始提问,必然是头上数最大的人最先猜出自己头上的数。

  由上述结论,对于(a1,a2…,an,k),可以定义f((a1,a2…,an,k)的递推式:

  当2W-M≤0时,f((a1,a2…,an,k)=k,

  当2W-M>O时

  设ai’=ai,其中,i≠k,ak’=2W-M

  当v<k时,f(a1,a2…,an,k)=f(a1’,a2’…,an’,v)+k-v

  当v>k时,f(a1,a2…,an,k)=f(a1’,a2’…,an’,v)+n-k+v

  由于我们只考虑(a1,a2…,an,k)∈=S3,因此k可由n个数直接确定,因此f(a1,a2…,an,k)可以简化为f(a1,a2…,an)。

  利用上面的公式,通过计算机编程来辅助解决问题。

  至此,第一种推广情形就解决了。可以发现n=3时情形的证明,对解决一般情形提供了很好的对比,使得我们能够较为轻松地解决问题,这其实也是建立在对n=3时的情形的分析之上的。

  三、第二种推广

一位逻辑学教授有n(n≥3)名非常善于推理且精于心算的学生。有一天,教授给他们出了一道题:教授在每个人脑门上贴了一张纸条并告诉他们,每个人的纸条上都写了一个大于0的整数,并将他们分成了两组(一组学生有m人,(m≥n/2),且学生并不知道如何分组),且两组学生头上数的和相等。于是,每个学生都能看见贴在另外n一1个同学头上的整数,但却看不见自己的数。

  教授轮流向学生发问:是否能够猜出自己头上的数。经过若干次的提问之后,当教授再次询问某人时,此人突然露出了得意的笑容,把贴在自己头上的那个数准确无误地报了出来。

  我们的问题就是:证明是否有人能够猜出自己头上的数,若有人能够猜出,则计算最早在第几次提问时有人先猜出头上的数。

  由于当n=3时,m只可能为2,即为问题原形,而对于m=n-1,即第一种推广情形。因此只讨论n>3,m<n-1时的情形。

  对于每个人判断自己头上的数,依据分组情况不同,头上的数就可能不同。

对(A1,A2,…,An,k),第k位学生可以看见除自己外所有学生头上的数,并假设在某种分组情况下,可以计算出与自己不同组的学生头上数的和,由题目条件“两组学生头上数的和相等”,可以计算出自己头上的数。由于有Cmn种分组情况,因此相对应头上的数有Cmn种(其中可能也包括了一部分重复的数及非正整数)。

  经推论,不存在情况使得没有人能够猜出头上的可能,且推理时四个数始终在减小,因此经过有限次推理之后,必然达到“终结情形”。

  而对于第一种推广情形,即n=4,m=3,必然有人能猜出自己头上的数。因此n=4时的一切情况,必然有人能猜出自己头上的数。

  由于现在的推理在加强判定的情况下,依然可能出现多种考虑情况。所以推理已不是线性的推理,整个推理过程将成为树状结构。

  由于分组情况繁多,而且判定方式也比较复杂,因此这时计算f(A1,A2,…,An,k)的值已经非人力能够解决,但是可以利用上述证明的结论,依靠计算机强大的计算功能辅助解决问题。