zoukankan      html  css  js  c++  java
  • 贝尔数学习笔记

    我们定义贝尔数(Bn)为:(n)个元素划分为任意个集合的方案数。

    根据定义可以知道(B_n=sum_{i=0}^negin{Bmatrix}n\iend{Bmatrix})。根据这个式子计算单个贝尔数是(O(nlogn))

    贝尔数还可以通过递推式计算。假设前(n)个元素已经任意划分,现在加入第(n+1)个元素;枚举新元素与前面i个元素分为一个集合,剩下的(n-i)个元素任意划分,就有:

    [B_{n+1}=sum_{i=0}^n{nchoose i}B_{n-i}=sum_{i=0}^n{nchoose i}B_i ]

    这样可以(O(n^2))计算前(n)个贝尔数的值。

    贝尔数还可以写出生成函数。设(f_n)为n个元素划分为一个集合的方案数,显然(f_n=1)。写出(f_n)的指数型生成函数(F(x))就是:

    [F(x)=sum_{n=1}frac{x^n}{n!}=e^x-1 ]

    那么(n)个数划分为i个集合的方案数就是:

    [[x^n]F^i(x) ]

    枚举划分为多少个集合,那么贝尔数(B)的指数型生成函数(B(x))就可以写成:

    [B(x)=sum_{n=0}frac{F^n(x)}{n!}=e^{F(x)}=e^{e^x-1} ]

    使用多项式exp,就可以(O(nlogn))计算前(n)项贝尔数的值。

    我还在知乎写过贝尔数的一些性质:贝尔数满足Touchard同余

  • 相关阅读:
    盒子的display属性
    html标签默认属性值之margin;padding值
    JS事件
    表单序列化
    2016年最后一天——前端心语
    原生JS--COOKIE
    原生JS--Ajax
    DOM,BOM
    JS面向对象
    RegExp类型,单体内置对象
  • 原文地址:https://www.cnblogs.com/akura/p/12463127.html
Copyright © 2011-2022 走看看