错排公式 ( ACM 数论 组合 )

 

MiYu原创, 转帖请注明 : 转载自 ______________白白の屋

错排公式:

错排公式

目录
错排公式的由来
递推的方法推导错排公式
容斥原理
简化公式
 

错排公式的由来

  pala提出的问题: 十本不同的书放在书架上。现重新摆放,使每本书都不在原来放的位置。有几种摆法?
  这个问题推广一下,就是错排问题: n个有序的元素应有n!种不同的排列。如若一个排列式的所有的元素都不在原来的位置上,则称这个排列为错排。
递推的方法推导错排公式

  当n个编号元素放在n个编号位置,元素编号与位置编号各不对应的方法数用M(n)表示,那么M(n
- 1 )就表示n - 1个编号元素放在n - 1个编号位置,各不对应的方法数,其它类推.
  第一步,把第n个元素放在一个位置,比如位置k,一共有n
- 1种方法;
  第二步,放编号为k的元素,这时有两种情况.
1 ,把它放到位置n,那么,对于剩下的n - 2个元素,就有M(n - 2 )种方法; 2 ,不把它放到位置n,这时,对于这n - 1个元素,有M(n - 1 )种方法;
  综上得到
  M(n)
= (n - 1 )[M(n - 2 ) + M(n - 1 )]
  特殊地,M(
1 ) = 0 ,M( 2 ) = 1
  下面通过这个递推关系推导通项公式:
  为方便起见,设M(k)
= k ! N(k), (k = 1 , 2 ,…,n)
  则N(
1 ) = 0 ,N( 2 ) = 1 / 2
  n
>= 3时,n ! N(n) = (n - 1 )(n - 1 ) ! N(n - 1 ) + (n - 1 ) ! N(n - 2 )
  即 nN(n)
= (n - 1 )N(n - 1 ) + N(n - 2 )
  于是有N(n)
- N(n - 1 ) =- [N(n - 1 ) - N(n - 2 )] / n = ( - 1 / n)[ - 1 / (n - 1 )][ - 1 / (n - 2 )]…( - 1 / 3 )[N( 2 ) - N( 1 )] = ( - 1 ) ^ n / n !
  因此
  N(n
- 1 ) - N(n - 2 ) = ( - 1 ) ^ (n - 1 ) / (n - 1 ) !
  N(
2 ) - N( 1 ) = ( - 1 ) ^ 2 / 2 !
  相加,可得
  N(n)
= ( - 1 ) ^ 2 / 2 !+ + ( - 1 ) ^ (n - 1 ) / (n - 1 ) !+ ( - 1 ) ^ n / n !
  因此
  M(n)
= n ! [( - 1 ) ^ 2 / 2 !+ + ( - 1 ) ^ (n - 1 ) / (n - 1 ) !+ ( - 1 ) ^ n / n ! ]
  可以得到
  错排公式为M(n)
= n ! ( 1 / 2 !- 1 / 3 !+ ….. + ( - 1 ) ^ n / n ! )
容斥原理

  正整数1、
2 3 、……、n的全排列有n ! 种,其中第k位是k的排列有(n - 1 ) ! ,当k取1、 2 3 、……、n时,共有n * (n - 1 ) ! 种排列,由于是错排,这些排列应排除,但是此时把同时有两个数不错排的排列多排除了一次,应补上;在补上时,把同时有三个数不错排的排列多补上了一次,应排除;……;继续这一过程,得到错排的排列种数为
  M(n)
= n !- n !/ 1 !+ n !/ 2 !- n !/ 3 !+ + ( - 1 ) ^ n * n !/ n != sigma(k = 2 ~ n) ( - 1 ) ^ k * n !/ k !
  即M(n)
= n ! [ 1 / 0 !- 1 / 1 !+ 1 / 2 !- 1 / 3 !+ 1 / 4 !+ .. + ( - 1 ) ^ n / n ! ]
  注:sigma表示连加符号,(k
= 2 ~ n)是连加的范围
简化公式

  另外:书上的错排公式为Dn
= n ! ( 1 / 0 !- 1 / 1 !+ 1 / 2 !- 1 / 3 !- .. + ( - 1 ) ^ n / n ! ),此公式算n很大时就很不方便.后来发现它可以化简为1个优美的式子Dn = [n !/ e + 0.5 ],[x]为取整函数.
  公式证明较简单.观察一般书上的公式,可以发现e
- 1的前项与之相同,然后作比较可得 / Dn - n ! e - 1 /< 1 / (n + 1 ) < 0.5 ,于是就得到这个简单而优美的公式(此仅供参考)

你可能感兴趣的:(ACM)