很多人都知道高中 combinatorics (组合数学)主要掌握一下几个定理,全排列,排列和组合。
全排列就是从指定 n 个元素中取出 n 个,按照给出的顺序排成一排,有 n! 种不同的取法;
排列就像全排列一样,唯一的区别是不要求排列满 n 个元素,只需从这 n 个元素中选择 k(k≤n)个元素,按给定顺序排列它们就好了,有Ank种不同的取法;
组合就是从给定 n 个元素中选择 k 个元素,不按给定的顺序排列,有Cnk 种不同的取法。
在学习排列组合问题时,大多数人只能掌握基础的思想,但是当问题极为复杂时,如何才能做到快速、准确地处理复杂问题呢?这就需要基于组合的算法来解决问题,如密码列表生成、穷举搜索、图像处理、语音生成等等。
这里介绍一个基于组合的高效算法领域 - 基于字典序的全排列生成算法。
以上仅仅是排列组合问题的皮毛,组合数学的应用十分广泛,需要学习和掌握。而在操作中,如何高效地解决组合数学问题,使用精准算法非常重要。