1. 引言
组合数学,又称为离散数学,是研究离散结构的一门学科,主要包括代数组合学、图论、组合设计、组合优化等研究方向。这门学科与数论、密码学、代数学、概率论等多个数学分支有着密切而重要的联系,在计算机科学、数学物理、生物、化学等学科有着广泛的应用。比如复杂电路的设计、科学实验的最优方案设计等课题都要用到组合数学知识。该课题吸引了包括大数学家欧拉在内的众多知名学者的研究兴趣。近年来,随着计算机科学的兴起,组合数学快速发展,国内的组合数学研究队伍不断壮大,科研水平不断提高。但是,与科研水平相比,国内组合数学的教学研究和课程改革相对滞后[1],有很大的提升空间。目前,国内高校对组合数学的教学还没有引起足够的重视,大多数高校将组合数学设置为选修课,课时也较少,通常设置为32学时。许多从事组合数学教学工作的老师面临的一个问题是:如何加强组合数学教学过程中的内涵建设,在短学时内培养学生学习组合数学的兴趣,激发学生的自主学习热情,提高学习效率。众多学者在组合数学的教学改革方面做了很多研究工作,有兴趣的读者见[2]-[6]。在本文中,基于长期的科研教学实践和授课经验,笔者给出关于组合数学教学过程中的教学方法的几点建议,以期发挥学生的主观能动性,提升学生的逻辑推理能力 、创新思维能力及自主学习能力,改进教学方法,提升教学效果。
2. 善用数学软件、培养学生的编程能力
数学软件(比如Maple或Mathematica)在组合数学的教学和科研中常常发挥着重要作用。在组合数学教学过程中,可以使用数学软件,培养学生编写程序、发现问题、解决问题的能力。比如,笔者在讲授完排列及排列统计量的时候,要求学生编写如下程序:输入任意的正整数n,输出n的所有排列。进一步,根据排列统计量的定义,要求学生输出满足一定限制条件下的排列统计量的计数,从而发现规律,研究排列统计量的同分布问题。又比如,讲解整数分拆的时候,笔者要求学生编写如下程序:输入n,输出n的所有普通整数分拆。进一步,基于普通整数分拆的生成函数,学生可以利用Maple编写程序,给出普通整数分拆前1000项的泰勒展开式:
基于上述泰勒展开式,通过观察引导学生发现由著名数学家Ramanujan发现的同余关系:
其中p(n)表示普通分拆函数。学生发现上述同余关系后,可以引导学生探求上述同余关系的证明。同时,笔者还引导学生研究带约束条件的整数分拆的同余性质,比如t-正则分拆的性质。这不但培养了学生的编程能力,观察能力,还让学生获得成就感,增强自信心。
另一方面,随着人工智能的发展,利用机器证明方法证明组合数学恒等式的研究受到广泛关注,因此在介绍和证明组合恒等式的过程中,可以尝试让学生利用一些方法给出某些简单的组合恒等式的机器证明,比如WZ方法。
3. 结合实例和需求,培养学生的兴趣
孔子有云“知之者不如好之者,好之者不如乐之者”。因此,在教学过程中培养学生对组合数学的学习兴趣至关重要。由于组合数学涉及的概念和理论非常多,非常杂,如果直接向学生讲解组合数学的概念和理论,常常会使学生感到枯燥,丧失对组合数学的学习兴趣[7]。因此笔者建议老师在讲授这门课程时,可以结合身边的事例和需求,培养学生的学习兴趣。让学生不但知其然,而且知其所以然。事实上,组合数学这门学科与实际生活密切联系。比如,可以通过介绍著名的哥尼斯堡七桥问题引入讲解图论问题;可以以大规模复杂电路的设计和国家重大战略需求为背景,讲解组合优化问题;也可以通过介绍寇克曼女生问题引入讲解区组设计问题;可以通过介绍欧拉36军官问题的背景知识引入讲解正交拉丁方问题[1] [8];可以通过“杨辉三角”和机器证明方法介绍二项式系数与组合恒等式。通过上述这些实例和需求,不仅让学生体会到了组合数学的趣味性,调动学生的学习积极性,而且体会到了组合数学在现实生活中的广泛应用,为学生后续学习并研究更深刻的组合问题打下坚实的基础。
4. 加强组合数学与分析学、数论、群论等数学分支的联系
组合数学这门课程的一个特点是内容繁多,初学者短时间内难以把这些知识统一起来并与其它数学分支产生联系。针对上述问题,笔者建议在教学过程中有意识地把数学的其它分支与组合数学的相关内容融合起来。比如在讲解二项式系数和组合恒等式的证明的时候,老师可以引导学生利用数学分析中的知识来证明下面的组合恒等式:
在讲解鸽巢原理的时候,可以把初等数论知识融合进来,比如可以引导学生利用鸽巢原理证明或求解与中国剩余定理相关的数论问题。在讲解幻方时,老师可以提出如下问题:如何构造三阶幻方?老师可以讲解如何利用解线性方程组的相关知识构造三阶幻方,这样可以有机地把组合数学和高等代数结合起来。进一步,老师还可以追问:已知下面这个三阶幻方,如何利用群论知识构造更多的幻方?
在讲解容斥原理时,老师可以引导学生利用容斥原理计算对称群中的错位排列数。
老师引导学生把组合数学与其它数学分支的相关知识联系起来,融会贯通,不仅能促进学生对组合数学相关内容的学习和理解,而且能够培养学生的大局观,从更高的维度学习和理解组合数学。
5. 构造组合证明,培养学生的构造性思维
构造性强是组合数学这门学科的一个重要特点。在教学过程中,笔者建议老师应该有意识地培养学生的构造思维,解决组合问题。在讲解鸽巢原理时,老师可以引导学生将需要解决的实际问题转换成数学模型,通过构造合适“鸽子”和“巢”来证明相关问题;在讲解组合恒等式的证明时,可以尝试让学生构造恒等式的组合证明。比如,可以让学生通过构造数学模型,给出下面范德蒙卷积公式的组合证明:
在讲解整数分拆时,老师可以让学生构造下面由欧拉最早发现的关于整数分拆的等式:n的奇分拆的个数等于n的互异分拆的个数[3]。让学生学习构造组合证明,不仅能增加学习的趣味性,增强学生的自主学习性,而且能加深学生对研究的组合对象的结构的理解,探索隐藏在恒等式背后的数学原理。
6. 做好课程思政,培养学生的奉献科研的精神和家国情怀
在组合数学的教学过程中,笔者建议老师可以通过实例做好课程思政,培养学生热爱科学,奉献科学的精神和家国情怀。老师可以通过“河图洛书”、“杨辉三角”、“中国剩余定理”和“朱世杰恒等式”等历史事实向学生讲解在古代,我国学者在组合数学方面做出了杰出的贡献,增强学生的“文化自信”。可以通过讲解陆家羲先生在艰苦环境下解决了组合数学领域中重大的“斯坦纳系列”和“寇克曼系列”问题,从而获得国家自然科学一等奖的故事培养学生的奉献科研的精神。可以通过讲解组合数学在现代工程中的诸多应用,可能帮助国家解决“卡脖子”问题和满足国家战略需求,培养学生的使命感和家国情怀。
7. 结论
组合数学作为一门交叉学科,与多个数学分支联系紧密,并在人工智能、交通规划、战争指挥 、企业管理、金融分析等领域有着重要的应用。近年来,随着国家加大对科研的投入,国内从事组合数学的研究队伍不断壮大,取得了很好的科研成果。但是,对组合数学的教学研究相对薄弱。在本文中,笔者基于长期从事组合数学课程的教学经验和思考,从数学软件在教学中的应用、学习兴趣的培养、组合数学与其它数学分支的交叉融合、构造性思维的培养和课程思政等方面给出了在组合数学教学过程中的一些建议,期望提升教学效果。