错排问题推导

文章探讨了错位排列的概念,利用容斥原理给出了错排数的公式,并通过递推关系展示了如何从较小规模的排列计算出更大规模的错位排列数量。
摘要由CSDN通过智能技术生成

1. 问题引入

对于一个排列,其中每个数字都不在它对应的位置上。这样的排列叫做错位排列。

定义长度为 n n n的一个排列

P = A 1 A 2 A 3 . . . A n ∀ A i ∈ { 1 , 2 , 3... n } ∀ i ≠ j , 1 ≤ i , j ≤ n , A i ≠ A j P=A_1A_2A_3...A_n\\ \forall A_i \in \{1,2,3...n\} \\ \forall i \ne j,1 \le i,j \le n,A_i \ne A_j P=A1A2A3...AnAi{1,2,3...n}i=j,1i,jn,Ai=Aj

而错排就是在排列基础上,对于任意位置 j , A j ≠ j j,A_j \ne j j,Aj=j

2. 容斥原理

对于错排问题,考虑性质 q : A j = j , j ∈ { 1 , 2 , 3... , n } q: A_j = j, j \in \{1,2,3...,n\} q:Aj=j,j{1,2,3...,n}

错排数则为
D n = n ! − ∑ j = 1 n ( − 1 ) j − 1 ∣ q j ∣ D_n= n!- \sum_{j=1}^{n}(-1)^{j-1}\left\vert q_j\right\vert Dn=n!j=1n(1)j1qj
对于指定 k k k个位置排列正确 的排列总数为
( n k ) ( n − k ) ! = n ∗ ( n − 1 ) ∗ ( n − 2 ) ∗ . . . ∗ ( n − k + 1 ) k ! ∗ ( n − k ) ∗ ( n − k − 1 ) ∗ . . . ∗ 1 = n ! k ! {n \choose k}(n-k)!=\\ \frac{n*(n-1)*(n-2)*...*(n-k+1)}{k!}*(n-k)*(n-k-1)*...*1=\frac{n!}{k!} (kn)(nk)!=k!n(n1)(n2)...(nk+1)(nk)(nk1)...1=k!n!

对于至少有一个位置正确的排列数为
( − 1 ) k n ! k ! (-1)^{k} \frac{n!}{k!} (1)kk!n!

错排公式
D n = n ! − ( − 1 ) k n ! k ! ( k > 0 ) = ∑ k = 0 n ( − 1 ) k n ! k ! = n ! ∑ k = 0 n ( − 1 ) k 1 k ! \begin{align} D_n&=n!-(-1)^{k}\frac{n!}{k!}(k \gt 0)\nonumber\\&= \sum_{k=0}^{n}(-1)^{k}\frac{n!}{k!} \nonumber \\ &=n!\sum_{k=0}^{n}(-1)^{k}\frac{1}{k!} \nonumber \end{align} Dn=n!(1)kk!n!(k>0)=k=0n(1)kk!n!=n!k=0n(1)kk!1

3. 递推

将第 n n n暂时放入位置 n n n

考虑情况

  • n − 1 n-1 n1个位置错排
  • n − 1 n-1 n1个位置只有一个位置正确

对于第一种情况,和任意前 n − 1 n-1 n1个位置交换即可: ( n − 1 ) D n − 1 (n-1)D_{n-1} (n1)Dn1
对于第二种情况,只需要和那个正确的位置互换即可。而那个正确的位置可能处于 1 到 n − 1 1到 n-1 1n1任意一个位置: ( n − 1 ) D n − 2 (n-1)D_{n-2} (n1)Dn2

因此错排递推式
D n = ( n − 1 ) ( D n − 1 + D n − 2 ) D_n=(n-1)(D_{n-1} + D_{n-2}) Dn=(n1)(Dn1+Dn2)

4. 原文

oi_wiki

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值