最近看到一道题:
某车站要在检票前若干分钟开始排队,每分钟里的旅客人数一样多。如果同时开放3个检票口,那么40分钟后检票口前的队伍恰好消失;如果同时开放4个检票口,那么25分钟后队伍恰好消失。如果同时开放8个检票口,那么队伍多少分钟后恰好消失?
这道题听说,在奥数里面叫做“牛吃草”问题,就是要考虑在牛开始吃之前已经有一些草了,还要考虑牛在吃草的同时,草也在长。当然,抽象地来说,这样的情景是存在的,这样的考虑是重要的,尤其是吃的同时草也在长的问题。例如,需要消灭细菌或者病毒的时候,没准就需要考虑细菌的繁殖或者病毒的传播复制。但是,就这个牛吃草本身来说,除非这个草场实在非常非常大,草长的速度是远远赶不上牛吃的速度的,因此,先忽略也问题不大。因此,如果真的有必要考虑这个“牛吃草”问题,倒不如改成“传染病医疗”问题。这样情景上来说,更合理一些。
不过,这个不是我举这道题当例子的目的。我们先按照“传染病医疗”问题来求解这道题。在这里先用简单粗暴的办法,实际上可以通过把简单粗暴办法得到的综合算式来给出一个逻辑过程的方式来解读这个计算过程,从而让学生们在不用未知数的条件下也能够计算。这个逻辑过程的细节我就不重复了,愿意看的可以去看所谓的“牛吃草”问题。
假设已经存在的人有z个,假设每分钟来的人是x(这里假设新进来的人的速度一样),假设每一个检票口每分钟处理的人数是y人(这里,假设各个检票口的进度一样,上车的人也均匀分布在这些检票口的队列上,也不存在某一个检票口会在某个时间每人的情况),假设8个检票口的时候需要t分钟,于是
z+40x = 3*40*y
z+25x = 4*25*y
z+t*x = 8*t*y
通过前两项做差,我们得到
15x = 20y (这一个过程是可以构造逻辑过程来解释的,不需要一定用未知数)
也就是,3x=4y。接着用这个关键求出来x,y当做z的函数(这一步也可以通过构造逻辑过程得到,不一定需要解方程),
x = z/50
y = 3z/200
代入到最后的表达式,得到
z+t*z/50 = t*24/200 z (这一步也是可以通过逻辑得到的,不一定需要用未知数)
于是,t=10。
好了,我们看到,求解这道题的关键在于意识到“开始进站之前已经有一些人了,还要考虑在进站的同时,人还在继续来”。我们还看到,我们在假设x和y的时候,实际上忽略和很多实际问题,做了大量的近似。其中非常根本的一条是这个:最终上车的人数,在每一种情况下,都是不同的,等的时间越长上车的人越多!出题人,你来告诉我,谁家的火车是这样开的?哪家的车站的上车人数是这样的?
这完全就是为了做题而出题!
真正的数学藏在如何对进站问题进行数学描述上,也就是那些简化的假设如何才能比较简单还比较合理。其实,这个检票问题是一个很好的问题,但是绝对不能简单套用排队论的知识,或者牛吃草问题。一定要考虑每一个具体问题的特点,从而来做更合适的假设。对实际问题的合理的抽象和简化是数学非常重要的一步,但是,套类型,套知识,绝对不是数学。
如果真的要解决这个问题,我们可以考虑例如需要上车的人数,站台有空的时间,检票口的处理能力(还要加上一些冗余,来对付突发情况,例如有乘客的票就是多次也刷不上之类的),工作人员数量等因素,来决定每一辆车检票的时间点和窗口数量。这些,显然,是可以依靠数学的,但是,不能靠套类型和套知识的数学。
真的,现在的所谓奥数,真让人担心啊。我们那个时候,老师仅仅辅导一下思路,从来不传授技巧,每一道题,都靠学生自己来构造独特的逻辑过程来解决。
废掉奥数教学、奥数辅导,废掉奥数比赛的额外功能(例如升学),让奥数归于纯粹的兴趣和智力挑战,让数学成为学习到抽象化实际问题的能力和习惯,成为学习到构造性解题的能力和习惯,成为创造性地运用甚至创造数学的能力和习惯,的地方吧。