返回博客

错排问题的多种解法

错排问题(Derangement)

错排问题有许多表述

n 个元素进行排列,要求没有任何一个元素出现在原来的位置上,有多少排列方法?

n 封信和对应的 n 个信封,把所有信随机装入信封,要求每封信都不能装进自己的信封。问有多少种装法?

n 对夫妻参加一次聚会,现将所有参会人员任意分成一男一女 n 组,没有任何丈夫匹配到自己的妻子,有多少种匹配?


01 用递推关系推出通项

记错排数为 D(n)n 个元素记为 {1,2,,n}

不妨先考虑元素 1,它可以放在 2,3,,nn1 个位置。不妨设其放在位置 k。则:

(1) 元素 k 放在位置 1,剩下的元素排列的方法数为 D(n2)

(2) 元素 k 不放在位置 1,则现有的 {2,3,,k,,n}n1 个元素需要放在 {1,2,,n}{k}n1 个位置,且其中任意一个元素均有且只有一个位置不允许放入:k 不能放入位置 1,其余元素不能放入原位置。

这与 n1 个元素的错排问题完全相同,因此有 D(n1) 种方法。

综上,

D(n)=(n1)[D(n1)+D(n2)].

接下来推出通项。

两边同时除以 n!,令

an=D(n)n!,

nan=(n1)an1+an2,

n(anan1)=(an1an2).

a2a1=12,

anan1=(1)nn!.

于是

an=12!13!++(1)n1n!.

综上,

D(n)=n!(12!13!++(1)n1n!).

02 容斥原理

什么是容斥原理?

|i=1nAi|=k=1n(1)k+11i1<<ikn|Ai1Aik|.

1n,奇加偶减。

题解

Ai={第 i 个元素仍然在原来的位置}.

D(n)=n!|i=1nAi|.

根据容斥原理,

D(n)=n!((n1)(n1)!(n2)(n2)!++(1)n1(nn)0!).

因此

D(n)=n!(111!+12!13!++(1)n1n!).

由于

111!=0,

所以

D(n)=n!(12!13!++(1)n1n!).