一个组合问题

Posted Pat

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个组合问题相关的知识,希望对你有一定的参考价值。

今天碰到这样一个问题:考虑 $1, 2, \dots, n$ 的所有排列,共有 $n!$ 个。今指定其中 $k$ 个数的相对顺序,问符合条件的排列有多少个?

分析

不失一般性,指定 $1, 2, \dots, k$ 这 $k$ 个数的相对顺序为 $1, 2, \dots, k$。举例言之,设 $n = 5, k = 2$,则 $(1, 2, 3, 4, 5)$,$(1, 4, 3, 2, 5)$,$(1, 5, 3, 4, 2)$ 都合格,而 $(3, 2, 5, 1, 4)$,$(2, 1, 4, 3, 5)$ 都不合格。

考虑下述构造排列的过程:
先把 $1, 2, \dots, k$ 顺次排好,再把 $k + 1, \dots, n$ 逐一插入到序列中。仍以 $n = 5, k = 2$ 为例,可以把 $(1, 4, 3, 2, 5)$ 这个排列想象成是由如下四个步骤得到的:
$(1, 2) \to (1, 3, 2) \to (1, 4, 3, 2) \to (1, 4, 3, 2, 5)$。

不难证明:如此构造出来的排列都满足条件,且所有满足条件的排列都可以如此构造出来。

插入 $k + 1$ 时有 $k + 1$ 个位置可选,插入 $k + 2$ 时有 $k + 2$ 个位置可选,……,插入 $n$ 时有 $n$ 个位置可选。于是可知满足条件的排列共有 $(k + 1)(k + 2) \dots (n) = n!/k!$ 个。

扩展

$1, 2, \dots, n$ 这 $n$ 个数的所有排列,满足 $x$($k < x \le n$) 排在 $1, 2, \dots, k$ 之前的排列有多少个?

沿用上述构造排列的思路,不难得出共有 $k!n!/(k+1)! = n! /(k+1)$。

还可以用另一种思路来表示所要求的量:枚举 $x$ 在排列中的位置,有
$n!/(k+1) = \sum_{i = 1}^{n - k}\binom{n - i}{k}k! (n - k - 1)!$,即
$\sum_{i = 1}^{n - k} \binom{n - i}{k} = n!/((k+ 1)!(n-k-1)!) = \binom{n}{k + 1}$。
做指标代换,令 $j = n - i$,$m = n - 1$,得
$\sum_{j = k}^{m} \binom{j}{k} = \binom{m + 1}{k + 1}$。

$$ \sum_{i = k}^{n} \binom{i}{k} = \binom{n + 1}{k + 1} $$
是一个经典的组合恒等式,另有证明如下:
只需要注意到 $\binom{k}{k} + \binom{k + 1}{k} = \binom{k + 1}{k+1} + \binom{k+1}{k} = \binom{k + 2}{k+1}$。

以上是关于一个组合问题的主要内容,如果未能解决你的问题,请参考以下文章

更新另一个组合框后的组合框重新查询

组合框依赖于另一个组合框 - JavaFX

在 aspxgridview 中绑定与另一个组合框关联的组合框

改变一个组合框的值会导致另一个组合框的值改变

使用组合框过滤记录并填充第二个组合框

如何解构一个可组合的?