zoukankan      html  css  js  c++  java
  • 第二类斯特林数小记

    第一类斯特林数没弄懂,先咕了。

    对于第二类斯特林数记做 (egin{Bmatrix}n\ mend{Bmatrix}),也可记做 (S(n,m)),表示将 (n) 个两两不同的元素,划分到 (m) 个互不区分的非空集合的方案数。

    递推式

    [egin{Bmatrix}n\ mend{Bmatrix}=egin{Bmatrix}n-1\ m-1end{Bmatrix}+m×egin{Bmatrix}n-1\ mend{Bmatrix} ]

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

    证明:

    新插入一个元素时,有两种方案:

    • 将新元素放进一个新集合里,方案数为 (egin{Bmatrix}n-1\ m-1end{Bmatrix})
    • 将新元素放进一个原来有的集合里,方案数为 (m×egin{Bmatrix}n-1\ mend{Bmatrix})

    最后用加法原理相加即可。

    通项公式

    (egin{Bmatrix}n\ mend{Bmatrix}=frac{1}{m!}sum_{i=0}^m(-1)^{m-i} binom{m}{i}i^n)

    简单理解就是每次钦定有多少个集合有元素,再容斥一下解决,最后因为无序,再除以个 (frac{1}{m!})

    证明:

    证明采取二项式反演,设 (f(i)) 为将 (n) 个元素划分成 (i) 个两两不同的集合的方案数(允许有空集),(g(i)) 为将 (n) 个元素划分成 (i) 个两两不同的非空集合的方案数(不允许有空集)

    易得

    [f(i)=i^n\ f(i)=sum_{j=0}^i binom{i}{j}g(j) ]

    那么反演一下:

    [g(i)=sum_{j=0}^i(-1)^{i-j} binom{i}{j}f(j)\ g(i)=sum_{j=0}^i(-1)^{i-j} binom{i}{j}j^n ]

    根据定义可得 (frac{1}{m!}g(m)=egin{Bmatrix}n\ mend{Bmatrix})

    那么更常用的一种写法是

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

    一种技巧就是设 (f_i=frac{(-1)^i}{i!})(g_i=frac{i^n}{i!}),然后

    [egin{Bmatrix}n\ mend{Bmatrix}=sum_{i=0}^mf_i*g_{m-i} ]

    (NTT) 优化一下。

    有一个应用:

    [m^n=sum_{i=0}^{min(n,m)}egin{Bmatrix}n\ iend{Bmatrix}inom{m}{i}i! ]

    证明:(m^n) 可以理解为 (n) 个物品放到 (m) 个不同的盒子里,而后面的式子意思就是枚举 (i) 个盒子有数,然后从 (m) 个盒子中选出 (i) 个进行全排列,意思是等价的。

  • 相关阅读:
    C/S和B/S结构区别整理
    JavaScript特点、优缺点及常用框架
    ExtJs特点、优缺点及注意事项
    Oracle SQL 脚本跟踪
    解决 C#中 SQL脚本执行超时 问题
    oracle 时间转化函数及常见函数 .
    Spring.NET 1.3.2 集成 NHibernate 3.2 1 下载软件
    SQL Server 跨服务器 不同数据库之间复制表的数据的方法:
    spring.net nhibernate 分布布式事务(上)
    set xact_abort ON 你懂的, 在分布式数据库事务中,用到. 在事务中,若出现错误,系统即默认回滚事务
  • 原文地址:https://www.cnblogs.com/nanfeng-blog/p/15233181.html
Copyright © 2011-2022 走看看