具体数学之和式和递归式(SUMS AND RECURRENCES)

具体数学第二章2.1~2.3小节,希望对大家有帮助!交流使你我共同进步^^

引子

我们对下述和式 S n = k = 0 n a k S _ { n } = \sum _ { k = 0 } ^ { n } a _ { k } 应该很熟悉,可以想到高等数学中的级数,用求导之类的方法计算。那么它和递归式有何联系呢?
其实上面的求和表达式可以转化为下述递归表达式:
S 0 = a 0 S _ { 0 } = a _ { 0 }
S n = S n 1 + a n S _ { n } = S _ { n - 1 } + a _ { n }
那么我们就可以用第一章节学到的求解递归式的方法来做了。

试想 a n = β + γ n a _ { n } = \beta + \gamma n \quad for n > 0 n > 0 ,可以转化成求解
R 0 = α R _ { 0 } = \alpha
R n = R n 1 + β + γ n R _ { n } = R _ { n - 1 } + \beta + \gamma n \quad for n > 0 n > 0

那么 R 1 = α + β + γ , R 2 = α + 2 β + 3 γ R _ { 1 } = \alpha + \beta + \gamma , R _ { 2 } = \alpha + 2 \beta + 3 \gamma
对于上述式子,如果用 A ( n ) , B ( n ) , C ( n ) \mathrm { A } ( \mathrm { n } ) , \mathrm { B } ( \mathrm { n } ) , \mathrm { C } ( \mathrm { n } ) 来表示 α , β , γ \alpha , \beta , \gamma 前的系数

R n = A ( n ) α + B ( n ) β + C ( n ) γ R _ { n } = A ( n ) \alpha + B ( n ) \beta + C ( n ) \gamma

记得第一章讲过的成套方法,主要是先寻找一组容易知道的特解,然后将特殊情形组合起来求解一般式。
例如上述例子可以先假设三种情形:
1) R n = 1 R_{n}=1 \Rightarrow α = 1 , β = γ = 0 \alpha=1, \beta=\gamma=0 \Rightarrow A ( n ) = 1 A(n)=1
2) R n = n R_{n}=n \Rightarrow α = 0 , β = 1 , γ = 0 \alpha=0, \beta=1,\gamma=0 \Rightarrow B ( n ) = n B(n)=n
3) R n = n 2 R_{n}=n^{2} \Rightarrow α = 0 , β = 1 , γ = 2 \alpha=0, \beta=-1,\gamma=2 \Rightarrow 2 C ( n ) B ( n ) = n 2 2 \mathrm{C}(\mathrm{n})-\mathrm{B}(\mathrm{n})=\mathrm{n}^{2} \Rightarrow C ( n ) = ( n 2 + n ) / 2 C(n)=\left(n^{2}+n\right) / 2
上述例子巧妙地将和式转化为递归式来求解,当然递归式也可以转化为和式求解。

求和因子(summation factor)

a n T n = b n T n 1 + c n a_{n}T_{n}=b_{n}T_{n-1}+c_{n}

两边同乘 S n S_{n} \Rightarrow S n a n T n = S n b n T n 1 + S n c n S_{n}a_{n}T_{n}=S_{n}b_{n}T_{n-1}+S_{n}c_{n} ,(若要转化为求和递归式,形如:

S n b n = S n 1 a n 1 S_{n}b_{n}=S_{n-1}a_{n-1}

S n = S n a n T n S_{n}'=S_{n}a_{n}T_{n} ,得

S n = S n 1 + S n c n = S 0 a 0 T 0 + k = 1 n S k c k = S 1 b 1 T 0 + k = 1 n S k c k S_{n}'=S_{n-1}'+S_{n}c_{n}=S_{0}a_{0}T_{0}+\sum ^{n}_{k=1}S_{k}c_{k}=S_{1}b_{1}T_{0}+\sum ^{n}_{k=1}S_{k}c_{k}

\Rightarrow T n = 1 s n a n ( s 1 b 1 T 0 + k = 1 n s k c k ) T _ { n } = \frac { 1 } { s _ { n } a _ { n } } \left( s _ { 1 } b _ { 1 } T _ { 0 } + \sum _ { k = 1 } ^ { n } s _ { k } c _ { k } \right)

问题迎刃而解!但是我们怎么才能计算出 S n Sn

再来看这个式子, S n b n = S n 1 a n 1 S_{n}b_{n}=S_{n-1}a_{n-1} ,可以用递推方式转化成 s n = a n 1 a n 2 a 1 b n b n 1 b 2 s _ { n } = \frac { a _ { n - 1 } a _ { n - 2 } \cdots a _ { 1 } } { b _ { n } b _ { n - 1 } \cdots b _ { 2 } }

PS:这里的所有a,b均不为0,否则没有意义啦!
有人会想,这边是不是少了一个 s n s _ { n } ,是的,因此是采用上述 s n s _ { n } 的某个倍数来做乘积,不过没有关系啦,反正两边可以约掉。

例题

例题1:设n个数的快速排序,平均次数满足

C 0 = C 1 = 0 C n = n + 1 + 2 n k = 0 n 1 C k , n > 1 \begin{array} { l } { C _ { 0 } = C _ { 1 } = 0 } \\ { C _ { n } = n + 1 + \frac { 2 } { n } \sum _ { k = 0 } ^ { n - 1 } C _ { k } , \quad n > 1 } \end{array}

首先避免除法,其次想到把求和符号去掉,两边同乘 n n ,去掉分母中的 n n ,得到

n C n = n 2 + n + 2 k = 0 n 1 C k , n > 1 1 n C _ { n } = n ^ { 2 } + n + 2 \sum _ { k = 0 } ^ { n - 1 } C _ { k } , \quad n > 1(1)

n 1 n-1 代替 n n

( n 1 ) C n 1 = ( n 1 ) 2 + ( n 1 ) + 2 k = 0 n 2 C k , n 1 > 1 2 ( n - 1 ) C _ { n - 1 } = ( n - 1 ) ^ { 2 } + ( n - 1 ) + 2 \sum _ { k = 0 } ^ { n - 2 } C _ { k } , \quad n - 1 > 1(2)

(1)-(2)式相减,转化成

C 0 = C 1 = 0 ; C 2 = 3 C _ { 0 } = C _ { 1 } = 0 ; C _ { 2 } = 3
n C n = ( n + 1 ) C n 1 + 2 n , n > 2 n C _ { n } = ( n + 1 ) C _ { n - 1 } + 2 n , \quad n > 2

由上述的求和因子法可以得到 a n = n , b n = n + 1 a _ { n } = n , \quad b _ { n } = n + 1

\Rightarrow s n = a n 1 a n 2 a 1 b n b n 1 b 2 = ( n 1 ) × ( n 2 ) × × 1 ( n + 1 ) × n × × 3 = 2 ( n + 1 ) n s _ { n } = \frac { a _ { n - 1 } a _ { n - 2 } \cdots a _ { 1 } } { b _ { n } b _ { n - 1 } \cdots b _ { 2 } } = \frac { ( n - 1 ) \times ( n - 2 ) \times \cdots \times 1 } { ( n + 1 ) \times n \times \cdots \times 3 } = \frac { 2 } { ( n + 1 ) n }

\Rightarrow C n = 2 ( n + 1 ) k = 1 n 1 k + 1 2 3 ( n + 1 ) , n > 1 C _ { n } = 2 ( n + 1 ) \sum _ { k = 1 } ^ { n } \frac { 1 } { k + 1 } - \frac { 2 } { 3 } ( n + 1 ) , \quad n > 1

\Rightarrow C n = 2 ( n + 1 ) H n 8 3 n 2 3 C _ { n } = 2 ( n + 1 ) H _ { n } - \frac { 8 } { 3 } n - \frac { 2 } { 3 }

顺便提一哈,这边 H n = 1 + 1 2 + + 1 n = k = 1 n 1 k H _ { n } = 1 + \frac { 1 } { 2 } + \dots + \frac { 1 } { n } = \sum _ { k = 1 } ^ { n } \frac { 1 } { k } 称为调和数(harmonic number)

求和三大定律

分配律、结合律、交换律
如下例题:
在这里插入图片描述
所谓扰动法就是把单独一项从和式中分出去。

小故事
肯尼斯·艾弗森在他的程序语言APL中引入了一个奇妙的思想,就是上述表达式的转换,把一个为真或者为假的命题放在括号中
[ p ] = { 1 , p 0 , p [p是素数]=\left\{ \begin{array} { l } { 1 , p是素数 } \\ { 0 , p不是素数 } \end{array} \right.

发布了129 篇原创文章 · 获赞 105 · 访问量 23万+

猜你喜欢

转载自blog.csdn.net/sunshine_lyn/article/details/88384337