1. 组合数的等价转换

  • 递推关系(降低规模):

{(nk)=nk(n1k1)(nk)=nnk(n1k)

  • 拆分成两项

    (nk)=(n1k)+(n1k1)

    有如下两种形式的证明:

    • 根据组合数的定义((nk)=n!k!(nk)!),各自展开进行证明;
    • 《算法导论》提供了另外的思路,从实际意义出发,(nk) 表示 n 个对象中选择 k 个。考虑全体 n 个对象中的任意一个(是否被选中),根据其是否在最终选择的 k 个之中,可将 (nk) 拆分成两项,

      • k 中,即从余下的 n1 个对象中选择 k1 个对象:(n1k1)
      • 不在 k 中,即从余下的 n1 个对象中选择 k 个对象:(n1k)

      因此有:(nk)=(n1k)+(n1k1)

posted on 2018-07-26 20:37  未雨愁眸  阅读(326)  评论(0编辑  收藏  举报