错排公式的推导

简介:

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!)


本文转载自海 子博客园博客,原文链接:http://www.cnblogs.com/dolphin0520/archive/2011/04/04/2005093.html如需转载自行联系原作者


相关文章
|
3月前
|
消息中间件 Kubernetes NoSQL
c++中的类型推导
c++中的类型推导
|
25天前
|
编译器 程序员 C++
【C++ 类型推导 】深入探索C++类型推导:从C++11到C++20的进化之路
【C++ 类型推导 】深入探索C++类型推导:从C++11到C++20的进化之路
38 0
|
5月前
23 Landon的推导(1941)
23 Landon的推导(1941)
15 0
|
5月前
22 Herschel(1850)和麦克斯韦(1860)的推导
22 Herschel(1850)和麦克斯韦(1860)的推导
20 0
|
5月前
21 高斯的推导(1809)
21 高斯的推导(1809)
20 0
|
11月前
|
C++
斐波那契数列重要恒等式的简单推导及应用(非严格证明)
斐波那契数列重要恒等式的简单推导及应用(非严格证明)
123 0
|
Python
列表解析(推导)
列表解析(推导)
64 0
|
Java 编译器
轻松理解Lambda表达式(推导过程)
轻松理解Lambda表达式(推导过程)
81 0
|
人工智能 开发者
最小二乘法推导与求解 | 学习笔记
快速学习最小二乘法推导与求解
117 0
最小二乘法推导与求解 | 学习笔记
|
机器学习/深度学习 算法 数据挖掘
线性回归算法推导与实战(一)
本文属于 线性回归算法【AIoT阶段三】(尚未更新),这里截取自其中一段内容,方便读者理解和根据需求快速阅读。本文通过公式推导+代码两个方面同时进行,因为涉及到代码的编译运行,如果你没有NumPy,Pandas,Matplotlib的基础,建议先修文章:数据分析三剑客【AIoT阶段一(下)】(十万字博文 保姆级讲解)
126 0
线性回归算法推导与实战(一)