组合数学的核心是解决计数问题,其中很重要的即为n个元素的排列方案的计数。
一个常见的将排列问题抽象的方法就是将其抽象为棋盘多项式。
首先看一个的棋盘,n个元素的排列可以看成在这个棋盘上落下n个棋子,其中每一个横行、每一个竖列只允许有一个棋子。
而其中棋盘的格子是可以任意的的棋盘的子集,这对应了存在一定限制的排列方案。
每一个棋盘对应着一个母函数代表该棋盘中描述无法攻击的棋子排列数。
这个母函数即为棋盘多项式。
设C为一棋盘,称为C的棋盘多项式,其中表示k个棋子布到棋盘C的方案数[1]。
- 规定
- 设是棋盘C的某一指定格子所在的行与列都去掉后所得的棋盘,是仅去掉该格子后的棋盘,则
- 如果由相互分离的和组成,即的任一格子所在的行和列中都没有的格子,则有
结合容斥原理解决受限排列问题。
设为 i个棋子布入禁区的方案数,i =1,2,3,…,n。有禁区的布子方案数(即禁区内不布棋子的方案数)为
设事件为棋子落入禁区且其余棋子不限定是否落入禁区。
那么布子方案数即可用进行表示。该排列数可以用容斥原理求解。
即
其中,在棋盘上的不受限排列数为,那么有
其中,至少有一个棋子落入禁区的方案数为,至少两个棋子落入进去的方案数为,以此类推,可以得到等式
1.如下图所示,在的棋盘上,打叉的地方为禁区,求棋子无一落入禁区的排列数。
首先通过排列多项式的性质得到禁区的棋盘多项式为。
这样,该棋盘在受限情况下的方案数为。
2.错排问题,即个元素组成的排列中标号为的元素不排在第位的方案数。
该问题即为受限排列问题。
具体到棋盘中,即为在的棋盘上,所有的对角线元素都是禁区。
对于禁区的棋盘多项式的计算,由于该棋盘中所有元素均不在同一行同一列,根据棋盘多项式的性质容易得到为。
那么,根据受限排列的性质,得到错排方案数为。