zoukankan      html  css  js  c++  java
  • 一个组合问题

    今天遇到一个题目,经过一番分析,归结为这样一个问题:考虑 $1, 2, dots, n$ 这 $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) o (1, 3, 2) o (1, 4, 3, 2) o (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}inom{n - i}{k}k! (n - k - 1)!$,即
    $sum_{i = 1}^{n - k} inom{n - i}{k} = n!/((k+ 1)!(n-k-1)!) = inom{n}{k + 1}$。
    做指标代换,令 $j = n - i$,$m = n - 1$,得
    $sum_{j = k}^{m} inom{j}{k} = inom{m + 1}{k + 1}$。

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

    形象地说,这个证明就像燃爆竹,点燃了一头,就会顺次炸到末尾。

    2020/3/10 补:上式亦可写成
    $$ inom{n}{0} + inom{n + 1}{1} + dots + inom{n + k}{k} = inom{n + k + 1}{k} $$
    证明:只需注意到 $inom{n}{0} + inom{n + 1}{1} = inom{n + 1}{0} + inom{n+1}{1} = inom{n + 2}{1}$。

  • 相关阅读:
    数据库之表与表之间的关系
    数据库之完整性约束条件
    基本数据类型
    数据库
    Django ajax 发送post请求 前端报错解决
    Django数据库建立注意事项
    编程单词汇总
    程序员必掌握600单词
    python思维导图
    用jQuery模拟hover选择效果
  • 原文地址:https://www.cnblogs.com/Patt/p/12181307.html
Copyright © 2011-2022 走看看