• 【转】数列


    原文地址(跪gty orz):http://gaotianyu1350.gitcafe.io/2015/03/08/%E6%95%B0%E5%88%97/

    //ps:已修正原文部分格式问题= =

    //upd:有适当补充

    卡特兰数

    前20项(从0开始)

    1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190

    公式

    • 递推式 令$C_0=1$,卡特兰数满足递推式:
      $$ C_n=sum_{0<=i<n}C_iC_{n-i-1}, n ge 1 $$
      也满足:
      $$ C_n=frac{2(2n-1)}{n+1}C_{n-1} $$

    • 一般公式
      $$
      C_n=frac{1}{n+1}inom{2n}{n}=frac{(2n)!}{(n+1)!n!}
      $$

    • 另一种公式
      $$ C_n=inom{2n}{n}-inom{2n}{n+1},nge 1 $$

    增长

    $$ C_nsim frac{4^n}{n^{3/2}sqrt pi} $$

    应用

    • 括号匹配 $n$对括号匹配的方案为$C_n$。分析同出栈序列

    • 出栈序列 一个栈的进展序列为$1,2,3,…,n$,有多少个不同的出栈序列?有$C_n$种。
      分析:设$n$个数字的时候的方案数为$f_n$。令最后一个出栈的数字为$k$,对于这一种情况,方案为$f_{k-1}f_{n-k}$。如果把所有$k$都枚举一遍再加起来,就会发现和卡特兰数的递推公式是一样的。

    • 凸多边形三角划分 在一个凸多边形中(边数为$n$),通过若干条互不相交的对角线,把这个多边形划分成了若干个三角形。方案数为$C_{n-2}$。
      分析:设边数为$n$的方案数为$f_n$。对点从$1$到$n$标号,然后选择一个点$k$($1<k<n$),$1,k,n$三个点构成一个三角形,这个三角形把多边形分成了两个部分——一个部分有$k$个点,一个部分有$n-k+1$,方案数为$f_kf_{n-k+1}$。发现$f_n$和$C_{n-2}$是相同的。

    • 二叉树构成 给定$n$个节点,能构成多少种不同的二叉树?$C_n$个。

    • 所有在$n imes n$格点中不越过对角线的单调路径的个数为$C_n$。(可以把向上走理解为左括号,向右走理解为右括号,不能越过对角线理解为括号序列合法)。

    • 在圆上选择$2n$个点,将这些点成对连接起来使得所得到的$n$条线段不相交的方案数为$C_n$(和括号匹配是一个意思)。

    更多例子见Wiki百科-卡特兰数

    扩展问题

    • $n$个左括号$m$个右括号($n>m$),合法的括号序列个数,任意时刻必须保证左括号剩余的个数大于$0$。(从$(0,0)$走到$(n,m)$不穿过对角线$x=y$)
      分两种情况:
      ①走$(1,0)$,一定不合法。方案数$inom{n+m-1}{m-1}$。
      ②走$(0,1)$,有两种情况:A.合法。B.不合法。其中不合法的方案,将它穿过对角线之前的路线关于对角线翻折,一定能和某一个①中的方案重合,所以方案数为$inom{n+m-1}{m-1}$。
      总方案数为$inom{n+m}{m}-2inom{n+m-1}{m-1}$。

    • $n$个左括号$m$个右括号($n>m$),合法的括号序列个数。(从$(0,0)$走到$(n,m)$不穿过对角线$x=y$(可以经过对角线))
      将上面那个问题中的$n$加上一就可以了。
      总方案数$ inom{n+m+1}{m}-2inom{n+m}{m-1}$

    斯特林数(一)

    定义

    $s(n,k)$或$left[ n,k ight]$的绝对值表示$n$个人分成$k$组,每组内再进行环上排列(也就是说通过旋转一样的方案算作相同方案)的方案数。

    递推

    $s(n,0)=0,s(1,1)=1$,有递推关系
    $$ left|s(n,k) ight|=left|s(n-1,k-1) ight|+(n-1)left|s(n-1,k) ight| $$

    关于符号:
    $$ s(n,k)=(-1)^{n+k}left|s(n,k) ight| $$

    $s(n,k)$是递降阶乘多项式的系数:

    $$x^{underline{n}} = x(x-1)(x-2)ldots(x-n+1) = sum_{k=1}^n s(n,k)x^k$$

    特殊情况:

    • $ left|s(n,1) ight| = (n-1)! $
    • $ s(n,n-1)=-inom{n}{2} $

    斯特林数(二)

    定义

    $S(n,k)$或${ n,k }$表示$n$个人分成$k$组的方案数(每个组必须有人)。

    递推

    $S(n,n)=S(n,1)=1$,有递推关系:
    $$ S(n,k)=S(n-1,k-1)+kS(n-1,k) $$

    几个公式:

    • $ S(n,n-1)=inom{n}{2}=n(n-1)/2 $
    • $ S(n,2)=2^{n-1}-1 $
    • $ S(n,k)=frac{1}{k!}sum_{j=1}^k(-1)^{k-j}inom{k}{j}j^n $
    • $ B_n=sum_{k=1}^nS(n,k) $($B_n$为贝尔数)

    更多见Wiki百科-斯特灵数

    贝尔数

    定义

    $B_n$为$n$个元素的集合划分方案数。($B_0=1$)

    前7项(从0开始)

    1,1,2,5,15,52,203……

    递推

    $$ B_n=sum_{k=0}^{n-1}inom{n-1}{k}B_k $$
    和斯特林数(二)的关系:
    $$ B_n=sum_{i=1}^{n}S(n,i) $$

    贝尔三角形

    • 第一行第一项是$1(a_{1,1} = 1)$
    • 对于$n>1$,第$n$行第一项等同第$n-1$行最后一项。$(a_{n,1} = a_{n-1,n-1})$
    • 对于$m,n>1$,第$n$行第$m$项等于它左边和左上方的两个数之和。$(a_{n,m} = a_{n,m-1} + a_{n-1,m-1})$
    • 每行首项是贝尔数。每行末项是第二类Stirling数之和(即$sum_{i=1}^{n} S(n, i)$。

      $$
      egin{array}{cccccccccccccccccc}
      1 \
      1 & & 2 & & & & & & &\
      2 & & 3 & & 5 & & & & & &\
      5 & & 7 & & 10 & & 15 & & & & &\
      15 & & 20 & & 27 & & 37 & & 52 & & & &\
      52 & & 67 & & 87 & & 114 & & 151 & & 203 & & &\
      203 & & 255 & & 322 & & 409 & & 523 & & 674 & & 877 & &\
      877 & & 1080 & & 1335 & & 1657 & & 2066 & & 2589 & & 3263 & & 4140 &\
      & & & & &vdots & & & & vdots & & & & vdots& & & & \
      end{array}
      $$

    更多见Wiki百科-贝尔数

  • 相关阅读:
    Ubuntu18.04通过网线共享网络
    [转载]PyTorch上的contiguous
    [转载]集线器、交换机、路由器和全双工、半双工
    如何在交换机上组建局域网
    [转载]PyTorch中permute的用法
    Pytorch报错:cuda runtime error (59) : device-side assert triggered at /pytorch/aten/src/THC/generic/THCTensorMath.cu:26
    org.apache.commons.httpclient工具类(封装的HttpUtil)
    org.apache.commons.httpclient工具类
    kali下ll命令无法使用
    Kali Linux 下载、引导、安装
  • 原文地址:https://www.cnblogs.com/iwtwiioi/p/4335916.html
Copyright © 2020-2023  润新知