相信很多人都听说过著名的“鸡兔同笼”问题。对于无忧无虑的小学生来说,心理阴影还不够,但绝对是巨大的挑战。问题是这样的:在一个笼子里,有两种动物,鸡和兔子。这两种
相信很多人都听说过著名的“鸡兔同笼”问题。对于无忧无虑的小学生来说,心理阴影还不够,但绝对是巨大的挑战。问题是这样的:在一个笼子里,有两种动物,鸡和兔子。这两种动物有35个头和94只脚。那么鸡和兔子分别有多少只呢?
当然,题目中的鸡和兔子都是正常的,没有残疾和三头六臂。基于此,我们如何在诚实的思考后得出答案?
《孙子算经》的解法
其实这个问题最早出现在《孙子兵法》中,并给出了解决方法:
所有动物的脚数除以2,得47;每只鸡有一对脚,兔子有两对脚。假设笼子里全部是鸡的话,脑袋35个,脚也应该是35对,而事实上有47对脚。如果把一只鸡换成一只兔子的话,47-35=12,说明需要12只鸡被替换为兔子,于是得到兔子的数目。鸡的数目自然就是35-12=23只了。
对于上面的解决方案,就不是那么容易理解了,尤其是小学生。我想很多人看了这个回答后都暗暗佩服这个方案:这个方案真是“孙子”!
有趣的算法
你一声令下,让每只鸡都自立,每只兔子都会自立。此时落地脚47只,头35只。一个鸡头对应一个头,一个兔头对应两只脚;那么脚的数量减去头的数量就是兔子的数量。知道了兔子的数量,自然就知道了鸡的数量。所以有12只兔子和23只鸡。
有人质疑这个顺序,说如果鸡可以单脚落地,为什么不直接让鸡数?好吧,友善点。让我们把这个问题留给我们敬爱的伟大生物学家。什么都做不了,还得给别人一碗饭吃。
但无论是《孙子兵法》的算法,还是与小动物交流的能力,都结合了这个特定的背景,给出了具体的解决方案。如果把几条蜈蚣放在笼子里,还是按照上面的算法算,估计谁算谁就要挨骂了。数学的使命是抛开具体事物,只研究它们的数量关系,寻找通用算法。
机械地尝试
如果我换个标题:在一个笼子里,养着一只鸡和一只兔子。这两只动物有两个头和六只脚。有多少只鸡和兔子?
相信很多人瞬间就得到答案。如果改成共3头8脚呢?也应该有更多的小学生能得到答案。而这个思考过程其实很简单:尝试!如果笼子里的小动物数量少,试一两次就能得到答案;如果数量很大,懒人会忽略这个算法。
仍然考虑原问题中的笼子,通过尝试,无疑需要多尝试几次:
假如是1只鸡,34只兔子,那么脚一共是1×2+34×4=138>94,不对;假如是2只鸡,33只兔子,那么脚一共是2×2+33×4=136>94,不对;假如是3只鸡,32只兔子,那么脚一共是3×2+32×4=134>94,不对;……
于是我试了23只鸡和12只兔子,问题解决了。当然,如果从兔子开始,尝试的次数会少很多。如果,在上述尝试的过程中,keen法检测到脚数在减少,你可能会尝试跳,比如在尝试5只鸡之后,直接尝试10只鸡...,这样可以更快的得到答案。
有些人会鄙视它。这种算法也叫算法。我甚至没有动摇我的精神。没错,这个算法比上面两个算法更通用。不管笼子里是什么小动物,都可以这样算;当然,这种方法是非常机械的,随着笼子里动物数量的增加,计算量也在迅速增加。
如果原问题有67个笼子,把这67个笼子里的鸡和兔子都放在一个大笼子里,你会得到:鸡和兔子有2345头,6298脚,那么鸡和兔子分别有多少只?
此时“尝试”算法仍然有效,但计算量明显增加。有什么好的方法处理机械计算?是啊!善良的计算机登场了,它能毫无怨言地按照“试错”算法快速计算出鸡和兔子的数量。当然,这种机械的“尝试”算法还可以改进,这是另一个话题。
方程
问题远未结束。如果把笼子换成农场,农场里除了鸡和兔子,还有鸭、鹅、肥猪和羊羔...同样,也考虑了寻找每种动物的数量的问题。即使动物总数不多,问题也明显更复杂。那么,有没有更通用的方法来解决这类问题呢?这就是方程或方程组的意义!
对于鸡兔同笼问题,转化为二元线性方程组,问题转化为解方程组问题,不考虑笼子里是鸡还是狗。
有了方程的解,我们自然不会采用上面那些具体的、烧脑的算法,包括机械试算法。即使是计算机也不应该有更高效的算法。不要!当然,原来的算法,计算量大,而且是机械的,可能不太适合实际使用,但是它的逻辑合理性和用于逻辑论证是没有问题的!
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。
作者:美站资讯,如若转载,请注明出处:https://www.meizw.com/n/337723.html