02 SUMS AND RECURRENCES
如何求和式的值呢?一种是观察和式与递推式之间的关系。和式
等价于递归式
这样利用第一章学习的求递归式的封闭形式的方法来求解。
比如是一个常数加上的常量倍,那么的一般形式就可以具化为
一般地,通解形式是
其中是系数,一般情况下是依赖常数参数的。
现在使用成套方法来求解这个问题。首先令,那么,所以
令,得到,所以
令,得到,所以
那么
如果我们想要计算
那么中,所以
反过来看,很多递推式可以转化成求和式,所以后续学习的计算和式的方法也可以用于求递归式。回顾汉诺塔的例子 两边同除得到 令,那么有 所以 上面式子没有包含,因为而不是。上面的式子本质上是几何级数求和 所以。
此递归式可以用来除,从而这一推导过程中我们将转话成了,这一技巧是一种一般技术的特殊形式。一般技术可以处理任意形式为
的递归式转化为求和的式子。核心思想在于用一个求和因子(summation factor)来乘式子两边:
如果选择的恰当,使得
这样令,得到
从而
那么原递归式的解就是
例如时,那么。
但是,如何找到呢?观察关系式,展开得到
或者是这个值的任何适当的常数倍都可以作为因子。回到汉诺塔问题,,就是一个好的因子。直接应用公式得到的是也可以用的,这时。
这里需要注意的是除数不能为零,只要不全是零,这个方法就能奏效。
现在我们把这种技术应用到分析快排算法的性能分析中。如果是待排的项,那么平均比较次数的递归公式如下:
这个递归式看起来比之前的复杂很多。尝试一些小的数据,,貌似也没有帮助。
我们可以系统性的消除的复杂性,首先消除除法,接着消除。两边同乘得到
使用替代
第一个式子减去第二个式子消除
这样,原来的递归式转化成了一个简单的多的递归式
对应到式子有,且
对于,是显然的。时,,那么;时,。
用前面推导的求和因子公式
根据公式,
现在推导下后面的部分是哪里来的。因为直接套用是没有这个尾巴的,因为。注意这里最后写的是,但是递归的地方写的是,那么可以写作
还是有一个尾巴。前面推导的时候我们认为是一个简单的公式,比如,但是,比公式推导的时候多了2,所以需要加上
最后这个公式中的和式和某个应用中频繁出现的量很像。它就是调和数(harmonic number),定义如下:
之所以这样命名,是因为小提琴第个泛音(harmonic)是弦处产生的基音。
现在考虑用来表示,我们现在处理中的和式,需要修改边界条件使得变成
那么就可以记作
和之前一样,可以验证小的情况