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

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

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

设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)。

原文地址:https://www.cnblogs.com/Jeffrey-Y/p/10301648.html

时间: 2024-10-04 00:55:38

算法分析基础——差消法求解高阶递推方程的相关文章

递推方程的求解

递推方程的求解 其实这是本人<算法设计与分析>课程回顾的内容整理,用来测试一下cnblogs上的markdown和数学公式支持...... 什么是递推方程? 对于序列\(a_0,a_1,a_2, -,a_n\),简记为\({a_n }\),一个把\(a_n\)与若干个\(a_i (i<n)\)联系在一起的等式叫做关于序列\({a_n}\)的递推方程. 为什么要学习求解递推方程? 因为对递归算法的分析离不开递推方程的求解 例如,Hanoi塔问题递归算法为: Hanoi(A, C, n):

hdu2045 不容易系列三——LELE的RPG难题 (递推方程)

本文出自:blog.csdn.net/svitter 原题:http://acm.hdu.edu.cn/showproblem.php?pid=2045 题意:中文不用我说了吧. 这个题目的关键就在于递推方程--以及错误的测试数据 首先这个题目就是简单的置换群着色问题-- 去除了反转的问题,难一点的大家可以看P197(离散数学,高等教育出版社) 我在做这个题目的时候首先被f [ 1 ]  = 3 困扰了..拜托,根本不符合题意好吗- =一个格子能说是首尾颜色不同吗? 后来写错了递推方程--f [

hdu1465 不容易系列之一 (递推方程)

本文出自:http://blog.csdn.net/svitter 题意:错排情况的数量,打表求错排数即可. 错排数公式:f [ n ] = ( n - 1 ) * ( f [ n - 1 ] + f [ n - 2] ); 也可以这么想; (1).f [ 1 ] = 0 ; f [ 2 ] = 1; (2).如果确定f [ n - 1 ] 和 f [ n - 2 ] 的话. .f [ n ] 中必然包含 f [ n - 1] * ( n - 1 )种情况. 即把新加入的一封和之前的任一一封交换

【基础练习】【贪心】【递推】NOIP2013提高组第五题 积木大赛题解

还是先把题目放上吧: 春春幼儿园举办了一年一度的"积木大赛".今年比赛的内容是搭建一座宽度为n的大厦,大厦可以看成由n块宽度为1的积木组成,第n块积木的最终高度需要是hi. 在搭建开始之前,没有任何积木(可以看成n块高度为 0 的积木).接下来每次操作,小朋友们可以选择一段连续区间[L,R],然后将第L块到第R块之间(含第 L 块和第 R 块)所有积木的高度分别增加1. 小M是个聪明的小朋友,她很快想出了建造大厦的最佳策略,使得建造所需的操作次数最少.但她不是一个勤于动手的孩子,所以想

uva live 4123 Glenbow Museum 数学递推

// uva live 4123 Glenbow Museum 数学递推 // // 题目大意: // // 对于一个边平行于坐标轴的多边形,我们可以用一个序列来描述,R和O,R表示 // 该顶点的角度为90度,O表示该定点的角度为270.给定序列的长度.问能由这些RO序 // 列组成的星型多边形(内部存在一个点可以看到所有的节点的多边形)的方法数有多少. // // 解题思路: // // 顶点数一定是序列的长度.n小于4无法组成多边形.n为奇数的时候也不行.设R的个数有 // x个,O的个数

递推专题笔记

递推说白了就是找规律,然后写出他的递推方程,有的还可以写出通项公式,然后准确预测出第n项的值.因为这种规律存在着前因后果的关系,即是说,后一项的结果往往和前一项或前几项有着某种联系.这种联系不仅仅存在于数字之中,世间万物亦是如此. 由于,递推是深入理解动态规划的基础,就我目前的水平,看到动态规划就如看到tiger一般,完全不知所以,所以为了找回在动态规划前的自信,我打算在回家之前,找一个递推专题练练手.现记录如下: 心得: 1. 既然是递推题,那么肯定有递推方程,那么同样有规律可循,既然有规律.

算法--递推策略

本文地址:http://www.cnblogs.com/archimedes/p/4265019.html,转载请注明源地址. 递推法是一种重要的数学方法,在数学的各个领域中都有广泛的运用,也是计算机用于数值计算的一个重要算法.这种算法特点是:一个问题的求解需一系列的计算,在已知条件和所求问题之间总存在着某种相互联系的关系,在计算时,如果可以找到前后过程之间的数量关系(即递推式),那么,从问题出发逐步推到已知条件,此种方法叫逆推.无论顺推还是逆推,其关键是要找到递推式.这种处理问题的方法能使复杂

递推(一):递推法的基本思想

所谓递推,是指从已知的初始条件出发,依据某种递推关系,逐次推出所要求的各中间结果及最后结果.其中初始条件或是问题本身已经给定,或是通过对问题的分析与化简后确定. 利用递推算法求问题规模为n的解的基本思想是:当n=1时,解或为已知,或能非常方便地求得:通过采用递推法构造算法的递推性质,能从已求得的规模为1.2.….i−1的一系列解,构造出问题规模为i的解.这样,程序可从i=0或i=1出发,重复地由已知至i−1规模的解,通过递推,获得规模为i的解,直至获得规模为n的解. 可用递推算法求解的问题一般有

递推(二):递推法的应用

下面通过一些典型实例及其扩展来讨论递推法的应用. [例2]骨牌铺方格 在2×n的一个长方形方格中,用一种2×1的骨牌铺满方格.输入n(n<=40),输出铺放方案的总数. 例如n=3时,为2×3方格,骨牌的铺放方案有三种,如下图1所示. 图1  2×3方格的骨牌铺放方案 (1)编程思路. 设f[i]为铺满2*n方格的方案数,则有    f[i]=f[i-1]+f[i-2]. 其中,f[i-1]为铺满2*(n-1)方格的方案数(既然前面的2*(n-1)的方格已经铺满,那么最后一个只能是竖着放).f[