zoukankan      html  css  js  c++  java
  • 斯特林数

    考了好几次斯特林数了,该认真学学了

    第二类斯特林数

    • 也叫斯特林子集数 (egin{Bmatrix} n\k end{Bmatrix}),也可记做 (S(n,k)),表示将 n 个两两不同的元素,划分为 k 个互不区分的非空子集的方案数。

    递推式

    [egin{Bmatrix} n\k end{Bmatrix}=egin{Bmatrix} n-1\k-1 end{Bmatrix}+kegin{Bmatrix} n-1\k end{Bmatrix} ]

    • 边界是 (egin{Bmatrix} n\0 end{Bmatrix}=[n=0])

    • 证明:一个新的数可以当作一个新的子集的方案数,加上放进原来有的子集的方案树

    通项公式

    [egin{Bmatrix} n\k end{Bmatrix}=sum_{i=0}^{k}frac{(-1)^{k-i}i^n}{i!(m-i)!} ]

    • 证明一下

    • (G_i) 表示将 n 个两两不同的元素,划分为 i 个两两不同的可空子集的方案数,有 (G_i=i^n)

    • (F_i) 表示将 n 个两两不同的元素,划分为 i 个两两不同的非空子集的方案数,有

    [G_i=sum_{j=0}^{i}inom{i}{j}F_j ]

    • 这个可以看作是枚举有多少个子集是非空的,然后从k个里选i个子集为非空,再乘上 (F_i)

    • 然后根据二项式反演

    [egin{align*} F_i &=sum_{j=0}^{i}(-1)^{i-j}inom{i}{j}G_j \ &= sum_{j=0}^{i}(-1)^{i-j}inom{i}{j}j^n\ &= sum_{j=0}^{i}frac{(-1)^{i-j}j^ni!}{j!(i-j)!} end{align*}]

    • 然后发现 (F_i) 是区分子集,第二类斯特林数是不区分,这样 (F_i) 就是 (egin{Bmatrix} n\i end{Bmatrix})(i!)

    • 所以得到

    [egin{Bmatrix} n\i end{Bmatrix}=sum_{j=0}^{i}frac{(-1)^{i-j}j^n}{j!(i-j)!} ]

    第一类斯特林数

    • 也叫斯特林轮换数 (egin{bmatrix}n\k end{bmatrix}) ,也可记做 (s(n,k)),表示将 n 个两两不同的元素,划分为 k 个互不区分的非空轮换的方案数。

    • 一个轮换就是一个首尾相接的环形排列

    递推式

    [egin{bmatrix}n\k end{bmatrix}=egin{bmatrix}n-1\k-1 end{bmatrix}+(n-1)egin{bmatrix}n-1\k end{bmatrix} ]

    • 证明:第n个元素放到新的轮换的方案数,加上放到前面每个数旁边的方案数

    斯特林反演

    [F_i=sum_{j=0}^{i}egin{Bmatrix}i\ jend{Bmatrix}G_jLeftrightarrow G_i=sum_{j=0}^{i}(-1)^{i-j}egin{bmatrix}i\ jend{bmatrix}F_j ]

    [F_i=sum_{j=0}^{i}egin{bmatrix}i\ jend{bmatrix}G_jLeftrightarrow G_i=sum_{j=0}^{i}(-1)^{i-j}egin{Bmatrix}i\ jend{Bmatrix}F_j ]

    • 跟二项式反演挺像,式子不难记。
  • 相关阅读:
    《命运赋》
    CSS3中的 transform (变形)+Transition(转换) = animation(动画)
    c#进阶之泛型
    正则表达式运用
    查询某时间段的统计数据
    很好用的request转换为实体方法还有判断实体所有参数不能为空的方法
    http 协议集合,超级简单
    今天无意发现jquery的一个以前的误导
    IFRAM随内部长宽高变化
    就最近学习MVC4.0的页面用法学到的东西
  • 原文地址:https://www.cnblogs.com/shawk/p/14507642.html
Copyright © 2011-2022 走看看