递推方程的求解

文章目录

  • 先修知识
    • 常见序列的求和公式
    • 求和例子
    • 估计和式上界的放大法
    • 二分检索算法的平均时间复杂度分析实例
  • 递推方程的几种求法
    • 迭代法
    • 换元迭代
    • 差消法化简高阶递推方程
    • 递归树方法
      • 递归树的概念
      • 迭代在递归树中的表示方法
      • 递归树的生成规则
      • 递归树生成实例
      • 生成的递归树
      • 对递归树上的量求和
      • 递归树的应用实例
    • 主定理
      • 主定理的应用背景
      • 主定理概念
      • 主定理证明过程
      • 主定理的应用
      • 不能使用主定理的例子

先修知识

常见序列的求和公式

递推方程的求解_第1张图片

求和例子

递推方程的求解_第2张图片
上面的例子同等比数列的差别在于从首项的常数变成了未知数,利用2的巧妙拆分去求和,下面的例子里将会用到这一公式。

估计和式上界的放大法

递推方程的求解_第3张图片
递推方程的求解_第4张图片

二分检索算法的平均时间复杂度分析实例

二分检索算法伪代码表示
递推方程的求解_第5张图片


假设待检索数列T的长度为n,下面的左图表示x(待查找的数)在数列T中的各个位置,而右边则表示x不在数列中的各个情况。那么输入的所有情况便是两种的总和2n+1
递推方程的求解_第6张图片


对于上图的所有输入情况,每种情况的输入个数如下图所示,尤其值得注意的是比较k次的(因为上面假设了n同k的特殊关系)输入个数,后面的n+1便是上图中所有不在数列T中的情况。
那么总的输入次数便是对每个输入乘以次数并求和

递推方程的求解_第7张图片


总的输入次数除以总的输入情况便是我们的要求的平均时间复杂度。如果觉得理解有困难的话,你可以类比一下,上面各种情况的输入次数表示每个人各有的不等的苹果数量,而输入情况的总数便是人的数量,那我们要求每个人平均的苹果数便是如此求。
值得一提的是,虽然我们求的平均时间复杂度,却没有出现时间,因为我们这里求得是平均输入次数,那么自然也可以类似等价于平均时间复杂度。

递推方程的求解_第8张图片

递推方程的几种求法

迭代法

先引入例子
递推方程的求解_第9张图片
操作方法

  • 不断用递推方程的右部替代左部
  • 每次替代随着n的降低,在和式中多出至少一项
  • 直到出现初值则迭代停止
  • 将初值代入并用常用的序列求和进行求和
  • 可用数学归纳法验证解的正确性

换元迭代

利用二分归并排序来举例
递推方程的求解_第10张图片
读者可以尝试用不换元进行直接迭代,将会比较不直观。
因为问题的复杂度是成倍的减小的,但通过换元我们可以将其化简为类似问题复杂度-1的情况

递推方程的求解_第11张图片
下面是迭代的求解过程
递推方程的求解_第12张图片

差消法化简高阶递推方程

1. 采用快速排序的例子引入
递推方程的求解_第13张图片
2. 下面是输入的总的n种情况
递推方程的求解_第14张图片
3. 工作量总和
递推方程的求解_第15张图片
4. 那么快速排序的平均工作量如下,将会非常不好求。那么我们的目标是去化简中间的求和序列,考虑其能否转化成我们上面的递推式(只同问题规模-1的下一项相关而言)
递推方程的求解_第16张图片
5. 考虑等比数列的差消化简得方式
递推方程的求解_第17张图片
递推方程的求解_第18张图片
6. 利用上面常规得迭代求法,最后式子中得符号可以看我的另一篇文章关于函数渐近的界。
递推方程的求解_第19张图片

递归树方法

递归树的概念

递推方程的求解_第20张图片

迭代在递归树中的表示方法

递推方程的求解_第21张图片
递推方程的求解_第22张图片

递归树的生成规则

递推方程的求解_第23张图片

递归树生成实例

递推方程的求解_第24张图片
递推方程的求解_第25张图片

生成的递归树

递推方程的求解_第26张图片

对递归树上的量求和

递推方程的求解_第27张图片

递归树的应用实例

递推方程的求解_第28张图片
递推方程的求解_第29张图片

主定理

主定理的应用背景

递推方程的求解_第30张图片

主定理概念

注:对下下面等式中的O符号等有疑问的,可以参考我的另一篇关于函数渐近的界的文章。
递推方程的求解_第31张图片
递推方程的求解_第32张图片
递推方程的求解_第33张图片

主定理证明过程

递推方程的求解_第34张图片
递推方程的求解_第35张图片
递推方程的求解_第36张图片
递推方程的求解_第37张图片
递推方程的求解_第38张图片

主定理的应用

递推方程的求解_第39张图片
递推方程的求解_第40张图片
递推方程的求解_第41张图片
递推方程的求解_第42张图片
递推方程的求解_第43张图片

不能使用主定理的例子

递推方程的求解_第44张图片
上面的反例我们可以采用递归树的方法去求解
递推方程的求解_第45张图片
递推方程的求解_第46张图片

文章的主体内容为北京大学屈婉玲老师的网课内容的整理

你可能感兴趣的:(算法设计与分析)