打印本文 打印本文 关闭窗口 关闭窗口
逻辑推理中猜数问题的研究
作者:佚名  文章来源:本站原创  点击数  更新时间:2008/4/18 8:07:45  文章录入:admin  责任编辑:admin

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

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

  二、第一种推广

  一位逻辑学教授有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)的值已经非人力能够解决,但是可以利用上述证明的结论,依靠计算机强大的计算功能辅助解决问题。

上一页  [1] [2] 

打印本文 打印本文 关闭窗口 关闭窗口