算法分析基础——差消法求解高阶递推方程

Posted jeffrey-y

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法分析基础——差消法求解高阶递推方程相关的知识,希望对你有一定的参考价值。

差消法,简单来讲,就是对高阶的递推方程作差,转化为一阶方程后再运用迭代法。有了迭代法的基础后,差消法理解起来就很容易了。这里举出对快速排序的分析加以说明。

对于快排,我们知道选择不同的轴值,会导致不同的算法效率。最坏的情况下,选取的轴值恰好是待排序数组的最值,那么排序的效率就会退化为线性时间。现在我们来估算平均情况下快速排序的时间复杂度。

设T(n)为待排序数组长度为n时,快速排序算法需要的比较次数。那么T(1) = 0,而T(n)的递推方程相对于轴值的选取有如下n种情况:

T(n) = T(0) + T(n - 1) + n - 1

T(n) = T(1) + T(n - 2) + n - 1

...

T(n) = T (n - 1) + T(0) + n - 1

假定选取的轴值在排序后的数组中的每个位置出现的概率相等。那么平均情况下,就可以计算得到T(n)的递推表达式为

技术分享图片

这是n阶的递推方程,不适合直接采用迭代法。接下来即运用差消法来求解:将O(n)用cn来表达,得到

技术分享图片

技术分享图片

两式相减得

技术分享图片

再同除以n(n+1),得到熟悉的一阶递推方程

技术分享图片

于是我们得出T(n) = Θ(nlogn)。

 

以上是关于算法分析基础——差消法求解高阶递推方程的主要内容,如果未能解决你的问题,请参考以下文章

递推方程的求解

算法与程序设计:主定理

3.4.3递归算法的效率分析

递归方程的求解和算法时间复杂度的分析

算法分析中递推式的一般代数解法 张洋

递归算法的时间复杂度分析