营业日志 2020.8.30 平凡推导 Binomial Sums

本文深入探讨了Min25算法的变形方法,提供了一种不同于常规的推导路径,通过斯特林数和组合数学技巧,展示了如何在Θ(k+logn)的时间复杂度内计算特定组合公式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

众所周知 Min25 给出了这一问题的一个可以 Θ ( k + log ⁡ n ) \Theta(k + \log n) Θ(k+logn) 计算的式子。但是其变形方法有点匪夷所思,故经尝试给出一种比较平凡的推导方法:

∑ i ( n i ) i k = ∑ i ( n i ) ∑ j ≤ k j ! ( i j ) { k j } = ∑ j ≤ k j ! { k j } ( n j ) 2 n − j = ∑ j ≤ k ( ∑ s ( j s ) s k ( − 1 ) j − s ) ( n j ) 2 n − j = ∑ s + t ≤ k ( s + t s ) s k ( − 1 ) t ( n s + t ) 2 n − s − t = ∑ s s k 2 n − s ∑ t ≤ k − s ( s + t s ) ( − 1 ) t ( n s + t ) 2 − t = ∑ s s k 2 n − s ∑ t ≤ k − s ( n s ) ( − 1 ) t ( n − s t ) 2 − t = ∑ s ( n s ) s k 2 n − s ∑ t ≤ k − s ( n − s t ) ( − 1 2 ) t \begin{aligned} &\quad \sum_i \binom n i i^k \\ &= \sum_i \binom n i \sum_{\color{red}j\le k} j!\binom ij {k\brace j}\\ &= \sum_{j\le k} j!{k\brace j} \binom nj 2^{n-j}\\ &= \sum_{j\le k} \left(\sum_s \binom js s^k (-1)^{j-s}\right) \binom nj 2^{n-j}\\ &= \sum_{s+t\le k} \binom {s+t} s s^k (-1)^t \binom n{s+t} 2^{n-s-t}\\ &= \sum_{s} s^k 2^{n-s} \sum_{t\le k-s} \binom{s+t}s (-1)^t \binom n{s+t} 2^{-t}\\ &= \sum_{s} s^k 2^{n-s} \sum_{t\le k-s} \binom{n}s (-1)^t \binom {n-s}{t} 2^{-t}\\ &= \sum_{s} \binom{n}ss^k 2^{n-s} \sum_{t\le k-s} \binom {n-s}{t} \left(-\frac 12\right)^{t} \end{aligned} i(in)ik=i(in)jkj!(ji){jk}=jkj!{jk}(jn)2nj=jk(s(sj)sk(1)js)(jn)2nj=s+tk(ss+t)sk(1)t(s+tn)2nst=ssk2nstks(ss+t)(1)t(s+tn)2t=ssk2nstks(sn)(1)t(tns)2t=s(sn)sk2nstks(tns)(21)t

这里重要的是 f ( i , j ) = ∑ t ≤ i ( j t ) r t f(i,j) = \sum_{t\le i}\binom j t r^t f(i,j)=ti(tj)rt 在一条斜线上,而这个式子的上下左右移动都是可以 Θ ( 1 ) \Theta(1) Θ(1) 计算的。

而另一个重要的事情是:一切的起点在于斯特林数的表示本身带入任何值都是可以计算的,但是去掉等于零的部分就让计算量减小了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值