zoukankan      html  css  js  c++  java
  • 一些比较特殊的计数序列

    主要来源于教材《组合数学及其应用》

    鸽笼原理

    定理5.1

    如果把(n+1)个物体加入到 (n) 个盒子中,则至少有一个盒子放有两个或者更多的物体。

    定理5.2

    (q_i) 是正整数((i=1,2,···,n))(q geq q_1 + q_2 + ··· + q_n - n + 1),如果把 (q) 个物体放入 (n) 个盒子中,则必存在一个 (i) ,使得第 (i) 个盒子至少有 (q_i) 个物体。

    • 推论1: 如果把(n(r-1)+1)个物体放入 (n) 个盒子中,则至少存在一个盒子放有不少于 (r) 个物体。

    • 推论2:对于正整数(m_i(i=1,2,···,n)),如果

      [frac{sum_{i=1}^nm_i}{n} > r-1 ]

      则至少存在一个 (i),使得 (m_i geq r)


    (Ramsey)

    定义5.1

    (a)(b) 为正整数,令 (R(a,b)) 是保证有 (a) 个人彼此相识或者有 (b) 个人彼此不相识所需要的最少人数,则称 (R(a,b))(Ramsey)数。

    定理5.8

    (a,bgeq 2) 时,(R(a,b)) 是一个有限数,并且有 (R(a,b) leq R(a-1,b) + R(a,b-1))


    (Stirling)

    1. 第一类(stirling)

      ([x]_n = x*(x-1)*···*(x-n+1))

      定义4.8

      ([x]_n = sum_{k=0}^nS_1(n,k)x^k),则称(S_1(n,k))为第一类(stirling)数。显然,(S_1(n,k))就是多项式([x]_n)的系数。

      定理4.7

      第一类(stirling)数满足如下递归关系式:

      [egin{cases} S_1(n+1,k)=S_1(n,k-1)-nS_1(n,k) & ngeq 0,k>0 \ S_1(0,0) = 1,S_1(n,0)=0 end{cases} ]

      证明:

      [[x]_{n+1} = sum_{k=0}^{n+1}S_1(n+1,k)x^k ]

      [[x]_{n+1} = x*(x-1)*···*(x-n) = [x]_n*(x-n) =sum_{k=0}^nS_1(n,k)x^{k+1} - nsum_{k=0}^nS_1(n,k)x^k ]

      [sum_{k=0}^{n+1}S_1(n+1,k)x^k = sum_{k=0}^nS_1(n,k)x^{k+1} - nsum_{k=0}^nS_1(n,k)x^k ]

      比较上式两端 (x^k) 的系数得:

      [S_1(n+1,k) = S_1(n,k-1) -nS_1(n,k) ]

      定理4.8

      第一类(Stirling)数的其它定义:若([x]_n = sum_{k=0}^n(-1)^{n-k}S'(n,k)x^k),则(S'(n,k))为第一类(Stirling)数。且有递归关系式

      [egin{cases} S'(n+1,k) = S'(n,k-1) + nS'(n,k) & n geq 1, k>0 \ S'(0,0) = 0,S'(n,0)=0 & n>0 end{cases} ]

      (S'(n,k))就是 (n) 个元素排成 (k) 个非空循环排列的方法数。

      证明:

      假设(A(n,k))表示把 (n) 个元素排成 (k) 个非空循环排列的方法数。于是有(A(n,n)=1(n geq 0)),因为 (n) 个元素排成 (n) 个非空循环排列,则每个非空循环排列只有一个元素,故方法唯一。窝们还有(A(n,0)=0(n geq 1)),因为如果至少有一个元素,那么任何安排都至少包含一个非空循环排列。因此,(A(n,k))(S'(n,k))满足相同的初始条件。假设这 (n) 个元素分别为(a_1,a_2,···,a_n)。将这些元素排成 (k) 个非空循环排列,可分为互不相容得两种情况:

      • (a_n) 单独成一个循环排列,于是把(a_1,a_2,···,a_{n-1})排成(k-1)个非空循环排列的方法数为(A(n-1,k-1))
      • 如果 (a_n) 不单独成为一个循环排列,则 (a_n) 至少和另一个元素 (a_i) 在一个循环排列中。首先将 (a_1,a_2,···,a_{n-1})排成 (k) 个非空循环排列,然后再把 (a_n) 放在(a_1,a_2,···,a_{n-1})的左边,共有(A(n-1,k)*(n-1))种方式。

      根据加法原则,可知(a_1,a_2,···,a_n)排成 (k) 个非空循环的排列方法数为(A(n-1,k-1) + (n-1)A(n-1,k)),因此有

      [A(n,k) = A(n-1,k-1) + (n-1)A(n-1,k) ]

      [A(n+1,k) = A(n,k-1) + nA(n,k) ]

      显然,(A(n,k))满足(S'(n,k))的递归关系式且初始条件相同,故(S'(n,k) = A(n,k))

    2. 第二类(Stirling)

      定义4.9

      (x^n = sum_{k=0}^nS_2(n,k)[x]_n),则称(S_2(n,k))为第二类(Stirling)数。

      第二类(Stirling)数向窝们展示了如何用([x]_0,[x]_1,···,[x]_n)写出 (x^n),而第一类(Stirling)数告诉窝们如何用(x^0,x^1,···,x^n)写出([x]_n)

      定理4.8

      第二类(stirling)数满足如下递归关系式:

      [egin{cases} S_2(n+1,k) = S_2(n,k-1) + kS_2(n,k) & ngeq 0,k>0 \ S_2(0,0)=1,S_2(n,0)=0 end{cases} ]

      证明:

      [x^{n+1} = sum_{k=0}^{n+1}S_2(n+1,k)[x]_k ]

      [x^{n+1} = x^n * x = sum_{k=0}^nS_2(n,k)[x]_k(x-k+k)=sum_{k=0}^nS_2(n,k)([x]_{k+1} + k[x]_k) ]

      [x^{n+1} = sum_{k=0}^{n+1}S_2(n+1,k)[x]_k = sum_{k=0}^nS_2(n,k)[x]_{k+1} + ksum_{k=0}^nS_2(n,k)[x]_k ]

      比较上式两端的([x]_{k})的系数得:

      [S_2(n+1,k) = S_2(n,k-1) + kS_2(n,k) ]

      定理4.10

      第二类(Stirling)(S_2(n,k))就是 (n) 个元素得集合划分成 (k) 个不相交得非空子集的方式数。

      证明:

      (A(n,k))(n) 个元素划分成 (k) 个不相交的非空子集的方式数,下面证明(A(n,k))满足上述递归关系式。

      给定一个(n+1)元集合({a_1,a_2,···,a_{n+1}}),将这个(n+1)元集合划分成 (k) 个不相交的非空子集,可分为互不相容的两种情况:

      • ({a_{n+1}})(k) 个子集合中的一个子集,于是把({a_1,a_2,···,a_n})划分为(k-1)个子集有(A(n,k-1))种划分方式。
      • 如果({a_{n+1}})不是 (k) 个子集合中的一个,则(a_{n+1})必与其它元素构成一个子集。首先把({a_1,a_2,···,a_n})划分成 (k) 个子集,这共有(A(n,k))种方式。然后再把(a_{n+1})插入到这 (k) 个子集中的一个,共有 (k) 种可能。因此划分方式数共有(kA(n,k))种。

      根据加法原则,可知({a_1,a_2,···,a_n,a_{n+1}})划分为 (k) 个子集的方式数一共有:(A(n,k-1) + kA(n,k)) 种。

      因此有

      [A(n+1,k) = A(n,k-1) + kA(n,k) ]

      显然,(A(n,k))满足第二类(Stirling)数的递归关系式,故(A(n,k) = S_2(n,k)),定理得证。

      定理4.11

      (m,n) 均为正整数且(m leq n)(S_2(n,m) = frac{1}{m!}sum_{i=0}^m(-1)^iC_m^i(m-i)^n)

      证明:

      考虑这样一个问题,(n) 个不同的球放进 (m) 个不同编号的盒子中,使得没有一个盒子为空的方式数。首先,不考虑盒子的编号,也就是说假设这 (m) 个盒子是相同的。这样以来,把 (n) 个不同的球放进 (m) 个相同的盒子而且无一盒为空 等价于 把一个 (n) 元集合({a_1,a_2,···,a_n})划分为 (m) 个不相交的非空子集。由定理4.9可知,这共有(S_2(n,m))种方式。其次再对盒子编号,易知,(m) 个盒子共有 (m!) 种编号方式,于是由乘法规则可得:共有

      [m!S_2(n,m) ]

      种方式把 (n) 个不同的球放进 (m) 个不同的盒子中,且无一盒为空。实际上窝们也可以用容斥原理解决这个问题。令 (S) 表示把 (n) 个不同的球任意放进 (m) 个不同的盒子中的所有放法所组成的集合,显然有(|S| = m^n)。令 (p_i(i=1,2,···,m)) 表示第 (i) 个盒子为空这一性质,(A_i(i=1,2,···,m)) 表示 (S) 中具有性质 (p_i) 的元素所组成的集合,则 (overline{A_1} cap overline{A_2} cap ··· cap overline{A_m}) 表示没有一个盒子为空的元素所组成的集合。由容斥原理可知,

      [|overline{A_1} cap overline{A_2} cap ··· cap overline{A_m}| = |S| - sum_{i=1}^m|A_i| + sum_{i eq j}|A_i cap A_j| - sum_{i eq j eq k}|A_i cap A_j cap A_k| + ··· +(-1)^m|A_1 cap A_2 cap ··· cap A_m| ]

      一般的,对于 (m) 个盒子让 (k) 个盒子为空的放球方法数为 (C_m^k(m-k)^n),故

      [|overline{A_1} cap overline{A_2} cap ··· cap overline{A_m}| = m^n - C_m^1(m-1)^n + C_m^2(m-2)^n - C_m^3(m-3)^n + ··· + (-1)^mC_m^m(m-m)^n \ = sum_{i=0}^m(-1)^iC_m^i(m-i)^n ]

      所以

      [m!S_2(n,m) = sum_{i=0}^m(-1)^iC_m^i(m-i)^n ]

      [S_2(n,m) = frac{1}{m!}sum_{i=0}^m(-1)^iC_m^i(m-i)^n ]

      例题

      (m,n) 均为正整数,证明 (sum_{i=1}^mi^n = sum_{k=0}^nk! * S_2(n,k)*C_{m+1}^{k+1})

      证明:

      使用下题的结论,有

      [egin{align} sum_{i=1}^mi^n =& sum_{i=1}^m(sum_{k=1}^iC_i^k*S_2(n,k)*k!) \ =&sum_{i=1}^m(sum_{k=1}^nC_i^k*S_2(n,k)*k!) \ =&sum_{k=1}^n(sum_{i=1}^mC_i^k*S_2(n,k)*k!) \ =&sum_{k=1}^nk!*S_2(n,k)*(sum_{i=1}^mC_i^k) end{align} ]

      对于正整数 (n)(k),有

      [sum_{i=1}^mC_i^k = C_{m+1}^{k+1} ]

      可根据归纳法证明上述等式,又(S_2(n,0)=0​),所以

      [sum_{i=1}^mi^n = sum_{k=1}^nk!*S_2(n,k)*C_{m+1}^{k+1} = sum_{k=0}^nk!*S_2(n,k)*C_{m+1}^{k+1} ]

      例题

      (m,n) 均为正整数且(m leq n),证明 (m^n = sum_{k=1}^mC_m^k*S_2(n,k)*k!)

      证明:

      注意到这样一个问题,(n) 个 不同的球放入到 (m) 个不同的盒子中且允许有空盒的方法数为 (m^n) 种。由定理4.10知,(n) 个不同的球放入到 (m) 个不同的盒子中且无一盒为空的方法数为 (m!S_2(n,m))。而从 (m) 个盒子中选取 (k) 个盒子的方法数为(C_m^k),故枚举所有的放法中可能出现的非空盒(k(k=1,2,···,m)),根据加法原则,有:

      [m^n = C_m^1*S_2(n,1) + C_m^2*S_2(n,2)*2! + ··· + C_m^m*S_2(n,m)*m! = sum_{k=1}^mC_m^k*S_2(n,k)*k! ]


    (Bell)

    定义4.10

    (B_n = sum_{k=0}^nS_2(n,k)),则称 (B_n)(Bell)数。显然(B_0 = 1)

    定理4.12

    (Bell)(B_n)(n) 个元素的集合划分为不相交的非空子集的方式数,且满足如下递归关系式:

    [B_{n+1} = sum_{k=0}^nC_n^kB_k ]

    证明:

    给定一个(n+1)元集合({a_1,a_2,···,a_n,a_{n+1}}),将其划分为不相交的非空子集。首先,假设第 (n+1) 个元素 (a_{n+1}) 所在子集的元素个数有 (k+1(k=1,2,···,n)) 个,既从({a_1,a_2,···,a_n})中挑选 (k) 个元素和 (a_{n+1}) 组成一个子集。显然,挑选的方式数有(C_n^k)种,而剩下的 (n-k) 个元素划分为不相交的非空子集的方式数为 (B_{n-k}),故

    [B_{n+1} = C_n^0*B_n + C_n^1 * B_{n-1} + C_n^2B_{n-2} + ··· + C_n^nB_0 ]

    (C_n^k = C_n^{n-k}),所以

    [B_{n+1} = C_n^nB_n + C_n^{n-1}B_{n-1} + C_n^{n-2}B_{n-2} + ··· + C_n^0B_0 = sum_{k=0}^nC_n^kB_k ]

    和定理4.9用到了相似的证明思路。

  • 相关阅读:
    maven 创建web项目出错
    poj1699--Best Sequence(dfs+剪枝)
    HDU-1042-N!(Java大法好 && HDU大数水题)
    “XXX.Index”不扩展类“System.Web.UI.Page”,因此此处不同意的问题
    scala模式匹配
    scala匿名函数
    scala特质
    group by的使用
    liux之我用过的zip解压命令
    liunx之zip格式的解压命令
  • 原文地址:https://www.cnblogs.com/zgglj-com/p/14078542.html
Copyright © 2011-2022 走看看