错位重排算法公式的理解

错排问题,是组合数学中的问题之一。考虑一个有n个元素的排列,若一个排列中所有的元素都不在自己原来的位置上,那么这样的排列就称为原排列的一个错排。。 研究一个排列错排个数的问题,叫做错排问题或称为更列问题。

公式是

D[n] = (n-1)(D[N-1] + D[n-2])

假设n个数是从1到n,
n个位置(或者说信封)是从p1到pn。

将数字分为两种1~(n-1),和n。
第一种分有(n-1)个数,针对每个数考虑有几种排列,假设当前考虑的是数字k

显然数字k不能放在pk上(否则不符合错位的要求)

公式第一部分

考虑将k放在pn上,将n放在pk上,这样n和k就满足了错位的要求。

那么在这种情况下,有多少种排列呢?因为n个数字中,2个数字固定,所以相当于剩下n-2个数字的错排数量:D[n-2]

公式第二部分

这一部分稍难理解。

同样,k还是放在pn上,但是此时同样也不允许n放在pk上,也就是将n也放入剩下的n-2个数字中进行错排,此时有D[n-1]种组合。

这里的关键点在于,n-1个数错排,所谓错排,就有相应的对排(原位置),除k以外,其他数字原位置就是她们的数字位置,但数字n的原位置在哪呢?

在k。即这种情况下k的位置出现数字n是不允许的。

这有两层含义:

  1. 这种情况下,就完全符合D[n-1]的情况
  2. 这样n不允许在k处,也就和公式第一部分数量不重复。同时又和第一种情况完全互补

合并

由于有n-1个(公式第一部分+公式第二部分),所以最后公式为

D[n] = (n-1)(D[N-1] + D[n-2])
posted @ 2020-03-31 21:11  mosakashaka  阅读(3438)  评论(0编辑  收藏  举报