递归式--三种求解时间复杂度的方法

devtools/2024/9/23 2:25:13/

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、代换法
  • 二、递归树法
  • 三.主方法
  • 总结


前言

学无止境,笔勤不辍。很久没有更新算法专栏了…笔者终于找到时间来更新了。今天,笔者给大家分享一下三种求解递归式的时间复杂度的方法,希望能与大家一起学习进步!!!


简单补充一下 递归式的定义,递归式由两部分组成:1.结束条件 2.递归体
在这里插入图片描述
这个递归式的解是 T(n) = O(N *lg N)

一、代换法

先猜测有某个界存在,然后利用数学归纳法,证明猜想的正确性。
步骤:
1.猜测解的形式
2.用数学归纳法找出能让这个时间复杂度解有效的常数
下面给一个例子:

求T(n)=2T(⌊n/2⌋)+n 的时间复杂度
猜其解为T (n) = O(n lg n)
存在常数c使得T (n) ≤ cn lg n
假设⌊n/2⌋时式子成立,即 T(⌊n/2⌋)≤ c ⌊n/2⌋lg(⌊n/2⌋成立
此时,T(n)≤ 2(c ⌊n/2⌋lg(⌊n/2⌋)) + n
≤ cn lg(n/2) + n
=cn lg n - cn lg 2 + n
=cn lg n - cn + n
≤ cn lg n
当1≤ c时,最后一步成立,即证明成功
这里的lg是以2为底的
`不过这里要考虑一下边界条件,n>=2的时候是成立的,但是n=1时,是有问题的 因为 T(1)=1 but cn lg 1 = 0`

这里证明时,可能会遇到:是同一数量级,但是有低阶项多出,方法是:证明猜想时,减去一个低阶项。

二、递归树法

将递归式转换成树形结构,树中的节点代表在不同递归层次付出的代价,最后利用对和式限界的技术来解出递归式(最终求和求解)
递归树是一种得到好猜测的直接方法
通常可以容忍小量的不良量
给出例子:
求解 T (n) = 3T (⌊n/4⌋) + Θ(n2)
在这里插入图片描述
值得注意的是,该树的所有结点的和是T(n)
之后的证明运用代换法(数学归纳法)
递归树法是用来找寻一个近似的合适解的方法

三.主方法

给出递归形式T(n)=aT(n/b)+f(n)的界,其中a≥1,b>1,f(n)是给定的函数。通过定义求解递归式的可靠猜测解

设a ≥ 1 和 b > 1 是常数,设 f (n) 为一函数
T(n) = aT(n/b) + f(n)有这种形式
对非负整数,其中 n/b 指⌊n/b⌋ 或 ⌈n/b⌉。那么 T (n)
可能有如下的渐近界(近似解)

在这里插入图片描述
给出例子:

T (n) = T (2n/3) + 1
a = 1, b = 3/2, f (n) = 1
适合第二种情况,所以T(n) = Θ(lg n)

之后的证明运用代换法(数学归纳法)


总结

以上就是今天要讲的内容,本文粗略介绍了三种求递归式时间复杂度的方法,后续笔者会更改精修。今天的内容就分享到这里了,希望能给大家一些帮助,教室要关门了,笔者再不走就要被关起来了,后续笔者也会定期更新内容,坚持学习… 再重复一遍口号:学无止境,笔勤不辍!


http://www.ppmy.cn/devtools/40492.html

相关文章

【源码+文档+调试教程】基于微信小程序的电子购物系统的设计与实现

摘 要 由于APP软件在开发以及运营上面所需成本较高,而用户手机需要安装各种APP软件,因此占用用户过多的手机存储空间,导致用户手机运行缓慢,体验度比较差,进而导致用户会卸载非必要的APP,倒逼管理者必须改…

thinkphp8 framework和 element plus admin前后端分离系统之PHP安装教程

DIYGW-UI-PHP是一款基于thinkphp8 framework和 element plus admin开发而成的前后端分离系统。目的是结合现有diygw-ui打造一个后台API开发。 实现PHP源码前请先下载小皮面板或者宝塔。 系统已经集成了部分功能 用户管理 后台用户管理部门管理 配置公司的部门结构&#xff0…

Oracle如何实现rsa加密和例子

在Oracle数据库中实现RSA加密通常需要使用Java编写的存储过程,因为Oracle自身并不直接支持RSA加密的原生函数。下面是一个基本的例子,说明如何在Oracle中使用Java存储过程来实现RSA加密。 首先,你需要一个Java类(比如我们称之为R…

整理好的宁夏光伏发电数据集(2007-2020年)

1、包含指标:采样结束时刻、采样起始时刻、时间间隔、气温、方位角、云层不透明度、露点温度、DHI(太阳散射辐射指数)、DNI(太阳直接辐射指数)、GHI(太阳总水平辐射)、GTI(固定倾角辐…

HTML五彩缤纷的爱心

写在前面 小编准备了一个五彩缤纷的爱心,送给各位小美女们~ 在桌面创建一个.txt文本文件,把代码复制进去,将后缀.txt改为.html,然后就可以双击运行啦! HTML简介 HTML(超文本标记语言)是一种…

【数据库原理及应用】期末复习汇总高校期末真题试卷06

试卷 一、选择题 1. ________是长期存储在计算机内的有组织,可共享的数据集合. A.数据库管理系统 B.数据库系统 C.数据库 D.文件组织 1. 有12个实体类型,并且它们之间存在15个不同的二元联系,其中4个是1:1联系类型,5…

MySQL查询篇-聚合函数-窗口函数

文章目录 distinct 关键字聚合函数常见的聚合函数group by和having 分组过滤 窗口函数with as窗口聚合函数排名窗口函数值窗口函数 distinct 关键字 distinct 去重数据,ps:null值也会查出来 select distinct column from table;聚合函数 常见的聚合函数 select …

python跟C++选哪个?

选择使用Python还是C取决于你的具体需求和项目背景。我这里有一套编程入门教程,不仅包含了详细的视频讲解,项目实战。如果你渴望学习编程,不妨点个关注,给个评论222,私信22,我在后台发给你。 在通信工程行业…