在学生找我面试时,我经常出下面的题目:一个国际象棋8×8的棋盘上面有多少个长方形?有的学生很聪敏,马上回答9条直线里选2条的组合的平方。这就涉及长方形的定义:“两对互相垂直的平行线构成一个长方形。”有了这个通俗、明确、严格的定义,导出这样漂亮的计算公式就非常自然了。当然对这样的学生,我会说正方形不算长方形。因为我关心的不是问题的答案,而是你考虑、分析、解决问题的思想与步骤。
首先应该是长方形的定义。在我还没有说出这个长方形定义时,你是怎么定义长方形的?
有的学生会在给出题目时立即问我,正方形算不算长方形?很好,你已经注意到了在这个题目中长方形定义的重要性。如果这是高考的题目,你会说这个题目的条件有歧义,因为你害怕与标准答案不符,你不知道出题人有没有把正方形算成长方形。说实话,我不太喜欢这样的学生,他们只关心这次考试可以得到多少分。你注意到了条件有歧义当然是好事,但你不能把问题退回去。你就应该对不同的歧义给出不同的答案。在实际问题中,你是碰不到高考类的题目的。高考类题目条件通常是充分且必要的,如果解了半天题目中有的条件一直没用到,你就会怀疑解法有问题;解一定是存在且简洁的,如果出现小数以后的4位,你就会怀疑是不是算错了。而对绝大多数实际问题,条件是模糊的,也就是说,哪些可以作为条件,哪些不可以作为条件,是需要你自己去整理、发掘的,甚至解的存在性都是需要证明的,答案可能也不是简洁的、明确的、唯一的。
回到原来的题目,在中学里老师教我们的第一步是审题,也就是定义。你先要理清题目中的什么是什么。任何科学问题,第一步都是要审题,通常就是问题中那些名词的定义以及这些名词间的关系。数学类的研究论文通常都是从定义及假设开始的。
对于我们的题目,我通常要求学生假想自己是一个幼儿园的老师,要教给幼儿园的孩子解这样的题目。你要把问题分成一小步一小步的,幼儿园孩子才能够理解。这时长方形的定义可能只能举例说明。小孩子也没有学过排列组合,就是要找到一种科学的数数的步骤,可以不犯错地把长方形的个数数清楚。(www.daowen.com)
有了长方形定义、说明或者只是理解后,就要开始数了,怎么数呢?数数就是排序,要对棋盘里所有的长方形进行排序,让它们与自然数做一一对应。因为长方形有各种形状的,有各种位置的,好像一个一个地数清楚也并不容易。对待科学问题,一个大问题不会做,那就要分解成一些小问题,也就是要对长方形进行分类,一种类型一种类型地数,这在中学时老师已经教过。分类应该是一个完全的分类,要求每个元素属于一类,且只属于一类,每类有明确的特性特征说明。这样你才可以一类一类地数,然后对类中一个一个的长方形进行数数或者排序。首先是类的排序,有的学生会以面积分类。面积分类是容易排序的,但是某种面积(如11)是否一定有长方形也是一个问题,以面积排序会缺了一些类,要搞清缺了哪些类,又有一番周折。同一面积的长方形也可以有不同的形状,譬如,2×2与1×4,这样同类中的元素也不容易排序。这给以后数这一类型的长方形带来困难,好像不是一个好的分类。
对于这个问题,可能用长方形的长乘以宽(即j×k)分类较好。找到好的分类方法是每个领导必须学会的领导艺术,这样你才可以把一个大问题分解成一些小问题,再分配给不同的下级部门去做。这也是计算机并行算法的核心所在。长乘以宽(即j×k)同时也是这类长方形的特性说明,而且还可以排序,叫做字典排列法。把j小的排在前面,当j相等时,再用k决定前后。这样的分类还有一个好处,就是类中的元素也可以用它的左下角的坐标进行字典排列,这样的序还是一个全序,不会跳过或漏数某个长方形。有了这些思想以后,幼儿园的小孩就会数出棋盘中有多少个长方形,而且你换成一个更大的棋盘,他也会数出来。如果那个小朋友更加聪明一些,有些领导天赋,他还可以将不同的类交给其他小朋友去数,当然他自己要学会加法,能够总结或者集成其他小朋友的计算结果。一个系统工程就可以这样用并行算法完成了。
复旦大学数学科学学院 吴宗敏
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。