【组合数学】错排问题 ( 递推公式 | 通项公式 | 推导过程 ) ★





一、错排问题



n n n 封不同的信 与 n n n 个不同的信封 , 将 n n n 封信都装错信封的方案个数 ;



错排 ( Derangement ) , 因此错排公式中使用 D ( n ) D(n) D(n) 表示 n n n 个元素的错排 ;

假如有 1 1 1 封信 , n = 1 n= 1 n=1 , 此时不能错排 , D ( 1 ) = 0 D(1) = 0 D(1)=0 ;

假如有 2 2 2 封信 , n = 2 n= 2 n=2 , 此时交换一下即可完成错排, 有 1 1 1 种方案 , D ( 2 ) = 1 D(2) = 1 D(2)=1 ;

在这里插入图片描述

假如有 3 3 3 封信 , 1 , 2 , 3 1,2,3 1,2,3 三封信与三个信封 ,

  • 如果 1 1 1 放到 3 3 3 信封中 , 此时将 2 2 2 放到 1 1 1 信封中 , 将 3 3 3 放到 2 2 2 信封中 ,
    1 , 2 , 3 1,2,3 1,2,3
    3 , 1 , 2 3,1,2 3,1,2
  • 如果 1 1 1 放到 2 2 2 信封中 , 此时将 2 2 2 放到 3 3 3 信封中 , 将 3 3 3 放到 1 1 1 信封中 ,
    1 , 2 , 3 1,2,3 1,2,3
    2 , 3 , 1 2,3,1 2,3,1
  • D ( 3 ) = 2 D(3) = 2 D(3)=2

如果有 4 4 4 封信 , 此时就不好计算 , 9 9 9 种方法 , D ( 4 ) = 9 D(4) = 9 D(4)=9

如果有 5 5 5 封信 ⋯ \cdots , D ( 5 ) = 44 D(5) = 44 D(5)=44

⋮ \vdots

如果有 n n n 封信 ⋯ \cdots , D ( n ) = n ! ( ( − 1 ) 0 0 ! + ( − 1 ) 1 1 ! + ( − 1 ) 2 2 ! + ( − 1 ) 3 3 ! + ⋯ + ( − 1 ) n n ! ) = n ! ∑ k = 0 n ( − 1 ) k k ! D(n) = n! ( \cfrac{(-1)^0}{0!} + \cfrac{(-1)^1}{1!} + \cfrac{(-1)^2}{2!} + \cfrac{(-1)^3}{3!} + \cdots + \cfrac{(-1)^n}{n!} ) = n! \sum\limits_{k=0}^{n}\cfrac{(-1)^k}{k!} D(n)=n!(0!(1)0+1!(1)1+2!(1)2+3!(1)3++n!(1)n)=n!k=0nk!(1)k





二、错排问题递推公式推导



观察上述规律 , 推导出递推公式 ;

假如有 n n n 封信 , 任何一封信都需要错位 , 错排方案数是 D ( n ) D(n) D(n) ;


1 . 分步计数原理 : 使用 分步计数原理 , 先统计 第一封信的排列方法 , 然后再讨论 其余信的排列方法数 ;

( 1 ) 第一步 : 首先找出一封信 a a a 出来 , 这封信不能排在其本身位置 , 只能放在其余 n − 1 n-1 n1 个位置上 , 因此有 n − 1 n-1 n1 种排法 ;

( 2 ) 第二步 : 现在讨论其余除 a a a 之外的其余信的位置的错排问题 ;



2 . 分类计数原理

假设第一封信 a a a 占据了 b b b 的位置 , 那么此时 b b b 放在哪个信封分两种情况 , b b b 放在 a a a 位置 , b b b 不放在 a a a 位置 ;


( 1 ) 第一类 : 第一种情况是放在 a a a 位置 , 此时 b b b 放在 a a a 位置 , 剩下 n − 2 n-2 n2 封信进行错排 , 方案数是 D ( n − 2 ) D(n-2) D(n2)

( 2 ) 第二类 : 第二种情况是 b b b 没有去 a a a 的位置 , 那么 b b b 可能出现在除 a a a 之外的任何位置 , b b b n − 2 n-2 n2 个位置可以去 , 不能去 a , b a,b a,b 位置 , 其余所有元素都有 n − 2 n-2 n2 个位置可以去 ( a , b a,b a,b 位置不能去 ) , 这种情况下 相当于除 a a a 之外的其它元素的错排问题 , 即 n − 1 n-1 n1 个元素的错排问题 , 方案数是 D ( n − 1 ) D(n-1) D(n1) ; ★ ( 核心推导逻辑 ) ★

( 3 ) 加法法则 : 汇总上述分类计数原理 , 使用 加法法则 , 计算结果是 D ( n − 1 ) + D ( n − 2 ) D(n -1) + D(n-2) D(n1)+D(n2)



3 . 乘法法则 : 汇总上述分步计数原理 , 使用 乘法法则 , 计算结果是

D ( n ) = ( n − 1 ) ( D ( n − 1 ) + D ( n − 2 ) ) D(n) = (n-1) (D(n -1) + D(n-2)) D(n)=(n1)(D(n1)+D(n2))





三、推导错排公式



递推公式 : D ( n ) = ( n − 1 ) ( D ( n − 1 ) + D ( n − 2 ) ) D(n) = (n-1) (D(n -1) + D(n-2)) D(n)=(n1)(D(n1)+D(n2))

初值 : D ( 1 ) = 0 , D ( 2 ) = 1 D(1) = 0 , D(2) = 1 D(1)=0,D(2)=1


使用 递推方程 , 生成函数求解递推方程 , 容斥原理 , 可以推导出如下公式 :


D ( n ) = n ! ( ( − 1 ) 0 0 ! + ( − 1 ) 1 1 ! + ( − 1 ) 2 2 ! + ( − 1 ) 3 3 ! + ⋯ + ( − 1 ) n n ! ) = n ! ∑ k = 0 n ( − 1 ) k k ! D(n) = n! ( \cfrac{(-1)^0}{0!} + \cfrac{(-1)^1}{1!} + \cfrac{(-1)^2}{2!} + \cfrac{(-1)^3}{3!} + \cdots + \cfrac{(-1)^n}{n!} ) = n! \sum\limits_{k=0}^{n}\cfrac{(-1)^k}{k!} D(n)=n!(0!(1)0+1!(1)1+2!(1)2+3!(1)3++n!(1)n)=n!k=0nk!(1)k


参考 :

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值