闲话 24.6.29

闲话

鰰这个提交在干啥啊?\(O(\sqrt n \log n)\) 自动机吗?
nb 这是整式递推板子。

推歌:我 正 下 坠 by Evalia feat. 星尘
好听就完了!

推歌:春暁、思索に耽て君を恋ふ by 桶本ガク feat. 初音ミク
有点 yoasobi 风味,也有一些说不上来的熟悉感。

而我正下坠
跌穿地底仍下坠
我将我视为宇宙或蜉蝣
便无需被他人拯救

Gosper 求和法

Gosper-Zeilberger 明天(或以后)就来!

这个技术的前置是离散微积分

\(\Delta g(x) = f(x)\),记 \(\sum_a^{b + 1} f(k)\delta k = \sum_{k = a}^b f(k) = g(x) \big\rvert_a^{b + 1} = g(b + 1) - g(a)\),并记离散积分 \(\sum f(k)\delta k = g(k) + C\)。没错,这也要 \(+C\)

和求微分相对求积分要简单一样,求离散积分相对求差分而言要更难。这一点也可以从求和比求离散积分简单,但 Binomial Sums 问题难以有封闭形式的现状看出。那么,是否存在一个方法,可以帮助我们解决一部分求离散积分问题呢?

R. W. Gosper 提出了一种方法,可以在 \(f(k), g(k)\) 都属于超几何函数某一项时由 \(f(k)\) 求出 \(g(k)\),或判断其不存在。我们记超几何函数 \(F\) 的第 \(k\) 项为

\[F \left( \left. \begin{aligned} a_1, &\dots, a_p \\ b_1, &\dots, b_q \end{aligned} \right \rvert z \right)_k = \frac{a_1^{\overline k} \cdots a_p^{\overline k}}{b_1^{\overline k} \cdots b_q^{\overline k}} \frac{z^k}{k!} \]

这是一个关于 \(k\) 的函数/数列。大多数时候,存在这样的 \(c, A_1, \dots, A_m, B_1, \dots, B_n\) 使得断言

\[\sum F \left( \left. \begin{aligned} a_1, &\dots, a_p \\ b_1, &\dots, b_q \end{aligned} \right \rvert z \right)_k \delta k = c F \left( \left. \begin{aligned} A_1, &\dots, A_m \\ B_1, &\dots, B_n \end{aligned} \right \rvert z \right)_k + C \]

成立。若成立,我们称函数 \(f(k) = F(a_1, \dots, a_p ;b_1, \dots, b_q;z)_k\) 是可超几何求和的。接下来介绍的 Gosper 求和法可以找到这些未知的常数,或证明它们不存在。

一般地,我们称 \(t(k)\) 为一个超几何项,当且仅当 \(t(k + 1) / t(k)\) 为一个关于 \(k\) 的有理分式,且不恒为 \(0\)。这要求就导出了 \(\dfrac{a_1^{\overline k} \cdots a_m^{\overline k}}{b_1^{\overline k} \cdots b_n^{\overline k}} \dfrac{z^k}{k!}\) 的形式。然而,我们希望 \(t(k)\)\(k\) 为负整数时和分母上存在一个或多个 \(b\)\(0\) 时都有意义,因此 \(t(k)\) 的一般形式还要乘以某个非零常数以及一个 \(0\) 的幂,从而把分母上的 \(0\) 消掉。

假设我们现在已经获得了一个超几何项函数 \(t(k)\),希望通过 Gosper 方法找到 \(\sum t(k)\delta k\) 或证明其不满足超几何项形式,我们要分两步走。

第一步:分解

构造三个多项式 \(p(x), q(x), r(x)\),满足

  1. \(\dfrac{t(k + 1)}{t(k)} = \dfrac{p(k + 1)}{p(k)} \dfrac{q(k)}{r(k + 1)}\)
  2. \(q(\alpha) = 0, r(\beta) = 0\),则 \(\beta - \alpha\) 不为正整数。

容易找到这三个多项式。我们只需要执行以下的程序:

  1. \(p(k) = 1, \dfrac{q(k)}{r(k + 1)} = \dfrac{t(k + 1)}{t(k)}\)。由于 RHS 为一个有理分式,一定存在这样的多项式 \(q(k), r(k + 1)\)
  2. 分解 \(q(k)\)\(r(k)\)。分解得到 \(q(k) = (k - \alpha_1)\cdots(k - \alpha_m) z\)\(r(k) = (k - 1 - \beta_1)\cdots(k - 1 - \beta_n) k\),随后检查条件 \(2.\) 是否满足。
  3. 如果满足,结束程序。
  4. 如果不满足,不妨令 \(\alpha_1, \beta_1\) 破坏了这条件,那么知道 \(\beta_1 + 1 - \alpha_1 = N\) 为某正整数,则 \(N \ge 1\)。随后执行

    \[\begin{aligned} &p(k)\leftarrow p(k)(k - \alpha_1 - 1)\cdots(k - \beta_1) \\ &q(k)\leftarrow q(k) / (k - \alpha_1) \\ &r(k)\leftarrow r(k) / (k - \beta_1 - 1) \end{aligned}\]

    容易知道

    \[\frac{p(k + 1)(k - \alpha_1)(k - \alpha_1 - 1)\cdots(k - \beta_1 + 1)}{p(k)(k - \alpha_1 - 1)\cdots(k - \beta_1 + 1)(k - \beta_1)} \frac{q(k)}{k - \alpha_1} \frac{k - \beta_1}{r(k + 1)} = \dfrac{p(k + 1)}{p(k)} \dfrac{q(k)}{r(k + 1)} \]

    满足条件。随后回到第 \(2.\) 步。

易错:上面求出的 \(r\) 应当为 \(r(k + 1)\),但下面使用的均为 \(r(k)\),需要做好区分。

第二步:尝试

假设我们要寻找的离散积分为 \(T(k)\),即 \(t(k) = T(k + 1) - T(k)\)

Gosper 注意到,存在一个“神秘函数” \(s(k)\),使得 \(T(k) = \dfrac{r(k)s(k)t(k)}{p(k)}\) 成立。带入上式得到

\[t(k) = \dfrac{r(k + 1)s(k + 1)t(k + 1)}{p(k + 1)} - \dfrac{r(k)s(k)t(k)}{p(k)} \]

条件 \(1.\) 变形得到 \(\dfrac{r(k + 1)t(k + 1)}{p(k + 1)} = \dfrac{t(k)q(k)}{p(k)}\),带入得到

\[t(k) = \dfrac{q(k)s(k + 1)t(k)}{p(k)} - \dfrac{r(k)s(k)t(k)}{p(k)} \]

化简得到 \(p(k) = q(k)s(k + 1) - r(k)s(k)\)。如果 \(s(k)\) 存在,我们就能找到 \(T(k)\)。反之,不存在合法的 \(T(k)\)

我们假定 \(T(k)\) 是超几何项,因此 \(T(k + 1) / T(k)\) 为有理分式。因此,\(\dfrac{T(k)}{ T(k + 1) - T(k)} =\dfrac{r(k)s(k)}{p(k)}\) 是有理分式。因此 \(s(k)\) 是有理分式。可以证明 \(s(k)\) 是多项式。

pf.

反之,设 \(s(k) = \dfrac{f(k)}{g(k)}\),并令 \(f(k)\)\(g(k)\) 没有公因子。这样带入化简后的式子得到

\[t(k) g(k) g(k + 1) = q(k) f(k + 1) g(k) - r(k) f(k) g(k + 1) \]

最大的整数 \(N\) 使得 \(\exists\beta \in \mathbb C, g(\beta) = 0 \ \land \ g(\beta - N + 1) = 0\)\(N\) 必定存在,由于 \(N = 1\) 成立。

向上式带入 \(k = \beta\)\(k = \beta - N\)(LHS 的根,\(g(\beta) = g((\beta - N) + 1) = 0\))得到

\[-r(\beta) f(\beta) g(\beta + 1) = q(\beta - N) f(\beta - N + 1) g(\beta - N) = 0 \]

由于 \(\beta\)\(\beta - N + 1\)\(g(k)\) 的根,它们定不为 \(f(k)\) 的根,因此 \(f(\beta) \neq 0, f(\beta - N - 1) \neq 0\)
由于 \(g(\beta + 1) = 0\) 时存在 \(N + 1\) 满足 \(\exists \beta + 1 \in \mathbb C, g(\beta + 1) = 0 \ \land \ g((\beta + 1) - (N + 1) + 1) = 0\),与 \(N\) 的最大性矛盾,\(g(\beta + 1) \neq 0\)。同理有 \(g(\beta - N) \neq 0\)

因此仅有可能 \(r(\beta) = q(\beta + N)\),而这与条件 \(2.\) 矛盾。故 \(s(k)\) 为多项式。\(\square\)

接下来只需要找到多项式 \(s(k)\),或说明其不存在。如果确定了 \(s(k)\) 的度数 \(d\),那么直接设 \(d + 1\) 个变量,并比对 \(p(k) = q(k)s(k + 1) - r(k)s(k)\) 两侧每个 \(k^i\) 的系数,列出线性方程组,解其即可。那么如何确定 \(\text{deg }s(k)\) 呢?

重写上式为 \(2p(k) = Q(k) \left(s(k + 1) + s(k)\right) + R(k) \left(s(k + 1) - s(k)\right)\),其中 \(Q(k) = q(k) - r(k), R(k) = q(k) + r(k)\)。若 \(s(k)\) 的度数为 \(d\),并令 \(s(k) = \alpha_0 + \alpha_1 k + \cdots + \alpha_d k^d\),则(令 \(f(k) = 0\) 的度数为 \(-1\)

\[\begin{aligned} & s(k + 1) + s(k) = 2\alpha_d k^d + \cdots , && \qquad \text{deg} = d \\ & s(k + 1) - s(k) = \Delta s(k) = d\alpha_d k^{d - 1} + \cdots , && \qquad \text{deg} = d - 1 \end{aligned}\]

\(\text{deg }Q \ge \text{deg }R\),则 RHS 的度数为 \(\text{deg }Q + d\) 等于 LHS 的度数 \(\text{deg }p\),得到 \(d = \text{deg }p - \text{deg }Q\)
反之,令 \(\text{deg }Q < \text{deg }R = d'\),并令 \(Q = \lambda' k^{d' - 1} + \cdots\)\(R = \lambda k^{d'} + \cdots(\lambda \neq 0)\),则有 RHS \(= \alpha_d(2\lambda' + \lambda d) k^{d + d' - 1} + \cdots\)。下面分类讨论。第一种可能是 \(2\lambda' + \lambda d \neq 0\),此时 \(d = \text{deg }p - \text{deg }R + 1\)。第二种可能是其 \(=0\),则 \(d > \text{deg }p - \text{deg }R + 1\)。但由于解得 \(d = -2\lambda' / \lambda\),只有这值为整数且在范围内时才需要验证。

综上,我们至多只需要检验两个 \(d\)(即 \(\text{deg }Q < \text{deg }R\) 时的 \(d = \text{deg }p - \text{deg }R + 1\)\(-2\lambda' / \lambda\))。

第二步要执行的程序也变得清晰了:

  1. 计算 \(Q(k) = q(k) - r(k), R(k) = q(k) + r(k)\)
    1. \(\text{deg }Q \ge \text{deg }R\),检验 \(d = \text{deg }p - \text{deg }Q\)
    2. 反之,令 \(\text{deg }R = d'\),记 \(\lambda = [k^{d'}]R(k), \lambda' = [k^{d'-1}] Q(k)\)
      \(2\lambda ' + \lambda (\text{deg }p - \text{deg }R + 1) \neq 0\),检验 \(d = \text{deg }p - \text{deg }R + 1\);若 \(-2\lambda' / \lambda\) 为整数且 \(>\text{deg }p - \text{deg }R + 1\),检验 \(d = -2\lambda' / \lambda\)
  2. 对需要检验的 \(d\),取 \(d + 1\) 个变量 \(\alpha_0, \dots, \alpha_d\) 并令 \(s(k) = \sum_{i = 0}^d \alpha_i k^i\),展开 \(p(k) = q(k)s(k + 1) - r(k)s(k)\) 两侧比对系数,列出方程组求解。
  3. 若存在解,则 \(s(k)\) 存在,这样得到的 \(T(k)\) 即为 \(t(k)\) 的原函数。反之,\(t(k)\) 不可超几何求和。

例题:

朝圣道(碎片)

计算下式的封闭形式:

\[\frac{1}{2} \sum_{i = 0}^{n - 1} \binom{2i}{i} 4^{-i} \]

彩蛋

APJifengc 14:22:22
我的式子
1/2 \sum_{i=0}^{n-1} \binom{2i}{i] / 4^i
哈哈
Lucas拆一下
可以数位 DP!
太厉害了,开始写了!

joke3579 14:23:36
gosper秒了

APJifengc 14:24:04
我听不懂。

joke3579 14:24:13
没关系
我要学习gosper求和法
您这个就是例题了!

sol

最简单的一集。

要求的就是 \(\sum_0^n \binom{2k}{k} 4^{-k}\delta k\),那么

\[t(k) =\frac{1}{4^k} \binom{2k}{k},\quad \frac{t(k + 1)}{t(k)} = \frac{(2k + 2)!}{(k + 1)!(k + 1)!} \frac{1}{4^{k + 1}}\frac{k!k!}{(2k)!} 4^k = \frac{2k+1}{2(k + 1)} \]

初始令 \(p(k) = 1, q(k) = 2k + 1, r(k) = 2k\),知道 \(q\) 的根只有 \(-1/2\)\(r\) 的根只有 \(0\),满足条件 \(2.\),第一步结束。

\(Q(k) = q(k)- r(k) = 1\)\(R(k) = q(k) + r(k) = 4k + 1\)。由于 \(\text{deg } Q = 0 < 1 = \text{deg } R\),进入分支 \(2.\)。此时 \(d' = \text{deg } R = 1\)\(\lambda = R[d'] = 4, \lambda' = Q[d'-1] = 1\)
第一种可能为 \(d = \text{deg } p - \text{deg } R + 1 = 0\),此时 \(2\lambda' + \lambda d = 2 \neq 0\),合法。此时令 \(s(k) = \alpha_0\),我们有 \(1 = (2k + 1) \alpha_0 - 2k \alpha_0\),得到 \(\alpha_0 = 1\)\(s(k) = 1\)
第二种可能为 \(d = -2\lambda' / \lambda = -1/2\) 不为正整数,舍去。

因此 \(s(k) = 1\)\(T(k) = \frac{(2k)(1) 4^{-k} \binom{2k}{k}}{1} = \dfrac{2k}{4^k}\dbinom{2k}{k}\)

\[\frac{1}{2} \sum_{i = 0}^{n - 1} \binom{2i}{i} 4^{-i} = \frac 12(T(n) - T(0)) = \frac{n}{4^n}\binom{2n}{n} \]

Reference:

[1]: Ronald L. Graham et al., Concrete Mathematics.

posted @ 2024-06-29 17:45  joke3579  阅读(40)  评论(1编辑  收藏  举报