zoukankan      html  css  js  c++  java
  • 差分序列(学习中……持续更新)

    差分序列

    差分序列

    定义:

    (f(x) = h_1, h_2, h_3...h_n...)是一个序列,那么定义一阶差分序列为:

    [Delta h_0, Delta h_1...Delta h_n... ]

    其中$$Delta h_n = h_{n + 1} - h_n$$
    我们递归的定义$$Delta^ph_0, Delta^ph_1, Delta^ph_2...Delta^ph_n...(p ge 1)$$为(f(x))(p)阶差分序列,其中(Delta^ph_n = Delta(Delta^{p - 1}h_n))
    特别的,一个序列的(0)阶差分序列是它自己。

    性质与相关定理

    定理1 设序列的通项是n的p次多项式,即:

    [h_n = a_pn^p + a_{p - 1}n^{p - 1}... + a_1n + a_0(n ge 0) ]

    则对所有的(n ge 0,Delta^{p + 1}h_n = 0)

    可以用归纳法证明:

    差分的线性性 :定义序列:(h_n = f_n + g_n)
    那么显然有(Delta h_n = Delta g_n + Delta f_n)
    进一步归纳可以得到:

    [Delta^p(cg_n + df_n) = cDelta^p g_n + dDelta^p f_n ]

    利用差分的线性性和差分表第0条对角线(最左边那个右下方向的),可以确定整个序列,因此可以引申出如下定理:

    定理2 假设差分表第0条对角线为:(c_0, c_1, c_2, c_3...c_p,0,0,0...),其中(c_p != 0)
    那么我们有:

    [h_n = c_0 inom{n}{0} + c_1 inom{n}{1} + ... + c_p inom{n}{p} ]

    所以:

    [sum_{k = 1}^n h_k = c_0 sum_{k = 0}^n inom{k}{0} + c_2 sum_{k = 0}^n inom{k}{1} + ... + c_p sum_{k = 0}^n inom{k}{p} ]

    因为组合数性质:(大概可以用杨辉三角理解一下)

    [sum_{k = 1}^{n} inom{k}{p} = inom{n + 1}{p + 1} ]

    可以得到:

    [sum_{k = 0}^{n}h_k = c_0 inom{n + 1}{1} + c_1 inom{n + 1}{2} + ... + c_p inom{n + 1}{p + 1} ]

    (Delta) 一个复杂度(O(次数))的求部分和的公式

    组合意义

    出现在差分表第0条对角线上的那些数具有其组合意义。

    讨论(未完成,瞎写的,不要看)

    [h_n = n^p ]

    那么差分表的第0条对角线有如下形式:

    [c(p, 0), c(p, 1), c(p, 2)...c(p, p), 0, 0... ]

    因此有

    [n^p = c(p, 0) inom{n}{0} + c(p, 1) inom{n}{1} + ... + c(p, p) inom{n}{p} ]

    记为1式。
    如果p = 0, 则h_n = 1,它是一个常数,因此上式变为:

    [n^0 = 1 = 1 inom{n}{0} = 1 ]

    特别的,

    [c(0, 0) = 1 ]

    因为若(p geq 1),则作为(n)的多项式,(n^p)有一个等于0的常数项,所以:

    [c(p, 0) = 0 (q geq 1) ]

    为了方便表示,我们用更加简洁的符号来表示排列数,即([n]_k = P(n, k)),表示(n)个不同对象的(k)排列数。
    我们通过引入新的表达式来改写1式。则1式可以被表示为:

    [[n]_k = begin{cases} n(n - 1)...(n - k + 1) quad (k geq 1) \ 1 quad (k = 0) end{cases}]

    同时注意到:

    [[n]_{k + 1} = (n - k)[n]_k ]

    因为

    [inom{n}{k} = frac{n(n - 1)...(n - k + 1)}{k!} = frac{[n]_k}{k!} ]

    由此得到:

    [[n]_k = k! inom{n}{k} ]

    因此,我们可以将1式进一步的改写为:

    [n^p = c(p, 0)frac{[n]_0}{0!} + c(p, 1)frac{[n]_1}{1!} + ... +c(p, p)frac{[n]_p}{p!} ]

    [= sum_{k = 0}^p c(p, k)frac{[n]_k}{k!} = sum_{k = 0}^pfrac{c(p, k)}{k!}[n]_k ]

    我们引入第二类斯特林数。记:

    [S(p, k) = frac{c(p, k)}{k!} quad (0 le k le p) ]

    因此改写后的1式可以更进一步变为:

    [n^p = S(p, 0)[n]_0 + S(p, 1)[n]_1 + ... + S(p, p)[n]_p = sum_{k = 0}^{p}S(p, k)[n]_k ]

    因为

    [S(p, 0) = frac{c(p, 0)}{0!} = c(p, 0)$$. 因此: $$S(p, 0) = egin{cases} 1 quad (p = 0)\ 0 quad (p geq 1) end{cases}]

    (没写完……)

  • 相关阅读:
    SPOJ 694 (后缀数组) Distinct Substrings
    POJ 2774 (后缀数组 最长公共字串) Long Long Message
    POJ 3693 (后缀数组) Maximum repetition substring
    POJ 3261 (后缀数组 二分) Milk Patterns
    UVa 1149 (贪心) Bin Packing
    UVa 12206 (字符串哈希) Stammering Aliens
    UVa 11210 (DFS) Chinese Mahjong
    UVa (BFS) The Monocycle
    UVa 11624 (BFS) Fire!
    HDU 3032 (Nim博弈变形) Nim or not Nim?
  • 原文地址:https://www.cnblogs.com/ww3113306/p/10232278.html
Copyright © 2011-2022 走看看