时间复杂度主定理分析及练习

article/2025/9/19 2:44:50

本文主要分析主定理,时间复杂度详细分析请移步至此。主定理是一种现在常用分析时间复杂度的方法,它主要适用于递归形式如下:

T\left ( n \right ) = aT\left ( n/b \right ) + f\left ( n \right )

a \geqslant 1 和 b > 1 为常量且f\left ( n \right )是一个渐进正函数时有以下三种情况:

  1. 如果f\left ( n \right ) < O\left ( n^{log_ba} \right ),则T\left ( n \right ) = \Theta \left ( n^{log_ba} \right )
  2. 如果f\left ( n \right ) = \Theta \left ( n^{log_ba}log^{k}n \right ),则T\left ( n \right ) = \Theta \left ( n^{log_ba} log^{k+1}n \right )
  3. 如果f\left ( n \right ) > \Omega \left ( n^{log_ba} \right ),则T\left ( n \right ) = \Theta \left (f\left ( n \right ) \right )

在这里为了简单起见,我们不考虑O \Theta \Omega之间的区别。

练习题:

1、T\left ( n \right ) = 3T\left ( n/2 \right ) + n^{2} 解a = 3 b = 2 f\left ( n \right ) = n^{2} 那么log_ba = log_23 ,那么f\left ( n \right ) > n^{2},根据主定理有T\left ( n \right ) = O\left ( n^{2} \right )

2、T\left ( n \right ) = 4T\left ( n/2 \right ) + n^{2}a = 4 b = 3 f\left ( n \right ) = n^{2}那么log_ba = log_24,那么f\left ( n \right ) = n^{2},根据主定理有T\left ( n \right ) = O\left ( n^{2}log_2n \right )

3、T\left ( n \right ) = T\left ( n/2 \right ) + 2^{n},解a = 1 b = 2 f\left ( n \right ) = 2^{n}那么log_ba = log_21,那么f\left ( n \right ) > n^{0},根据主定理有T\left ( n \right ) = O\left ( 2^{n} \right )

4、T\left ( n \right ) = 2^{n}T\left ( n/2 \right ) + n^{n},解a = 2^{n} b = 2 f\left ( n \right ) = n^{n}那么因为a不是常数,所以不适用于主定理

5、T\left ( n \right ) = 16T\left ( n/4 \right ) + n,解a=16 b = 4 f\left ( n \right ) = n那么log_ba = log_416,那么f\left ( n \right ) < n^{2},根据主定理有T\left ( n \right ) = O\left ( n^{2} \right )

这5道题基本涵盖了以上所有的情况,更多的习题和答案请参考pdf文档。


http://chatgpt.dhexx.cn/article/DGGlkg2F.shtml

相关文章

【算法导论-主定理】用主方法求解递归式 学练结合版

问题&#xff1a;若某算法的计算时间表示为递推关系式&#xff1a;T(N)2T(N/2)NlogN 且 T(1)1 则该算法的时间复杂度为( )。 O(Nsqrt(N)) O(NlogN) O(N(logN)^2) O(N^2logN) O(N^2) 解析&#xff1a; 应该是 O(N(logN)^2) 参考网址&#xff1a;主定理和《算法导论》 但是博…

【算法设计与分析】12 主定理及其应用

主定理是一个非常有用的定理&#xff0c;前面我们学习的所有知识都可以用主定理来求解&#xff0c;而不必要使用复杂的计算方法来求解 文章目录 1. 主定理1.1 主定理的应用背景1.2 主定理内容 2. 主定理的应用2.1 求解递推方程 例12.2 求解递推方程 例22.3 求解递推方程 例3 3.…

主定理 Master Theorem

分治法主定理 主定理的证明 假设有递归式&#xff1a; T ( n ) a T ( n b ) f ( n ) T(n) aT(\frac{n}{b}) f(n) T(n)aT(bn​)f(n) 证明&#xff1a; T ( n ) a T ( n / b ) f ( n ) T(n) aT(n/b) f(n) T(n)aT(n/b)f(n) a [ a T ( n / b 2 ) f ( n / b ) ] f ( n…

基于主定理以及递推树求解递归算法的时间复杂度

非递归算法的时间复杂度可以通过找到执行次数最多的代码&#xff0c;计算其执行次数即可。但是递归算法的时间复杂度则无法通过这种方式求得。有一种最简单的求递归算法的方式&#xff0c;即利用递推方法求解时间复杂度。如下所示&#xff1a; 这种方法求时间复杂度很简单&…

时间复杂度-主定理分析

目录 1.定理 2.举例 1.定理 主定理分析是一种时间复杂度的计算方式&#xff0c;当时间复杂度推根据实际情况推算出来是下面T(n)的形式的时候&#xff0c;可以通过主定理分析计算它的时间复杂度。 其实就是根据前半部分的a,b&#xff0c;计算出一个结果&#xff0c;再和后面的…

递归式求解-主定理

1.主定理:设a>1和b>1为常数,设f(n)为一函数,T(n)由递归式 对非负整数定义,其中n/b指下取整或上取整.那么T(n)可能有如下的渐进界: (1)若对于某常数 ε>0,有,则; (2)若.则; (3)若对于某常数 ε>0,有,且某常数 c<1与所有足够大的n,有,则 2.主定理的使用方法. 由主…

使用主定理求时间复杂度

文章目录 使用主定理求时间复杂度主定理直接可用主定理转化之后可以利用主定理使用主定理求时间复杂度 很多算法最后都可以写出 T ( n ) = a T ( n b ) + f ( n ) ) ( a ≥ 1 , b ≥ 1 ) T(n)=aT(\frac{n}{b}) + f(n)) (a\ge1,b\ge1) T(n)=aT(bn​)+f(n))(a≥1,b≥1) 的递推式…

主定理学习笔记

主定理用于求递推方程的阶。 设a>1, b>1为常数&#xff0c;f(n)为函数&#xff0c;T(n)为非负整数&#xff0c;且 T(n) aT(n/b) f(n) &#xff08;注意a、b取值范围&#xff09; a代表递归调用子问题的个数(子问题数>小于原问题&#xff0c;故a>1)n / b代表子…

主定理证明

转自GoogleSite算法导论习题解答&#xff0c;先fork一下 算法导论其实已经给出了具体的证明步骤&#xff0c;但是还是有些省略&#xff0c;此文章是对主定理进行了完全的证明&#xff1b; 主定理的证明大致分为两个阶段&#xff1a; (1)假设n为b的整数次幂&#xff0c;如1,b,b^…

主定理(递归式分析)

上图来自《算法导论》 其意思为&#xff1a; 令a≥1&#xff0c;b>1都是常数&#xff0c;f(n)是一个函数 T&#xff08;n&#xff09;是定义在非负整数上的递推式&#xff1a; 1、对某个常数&#xff0c;有&#xff0c;则 2、若&#xff0c;则 3、对某个常数&#xff…

主定理学习及理解

主定理证明 请参考该文章: https://wenku.baidu.com/view/993d716a84868762cbaed522.html 主定理理解运用 看完上面的推导证明, 想必对主定理的推导有了一定理解, 那么又如何理解运用呢? 先晒下公式: 公式大致阐明了三种情况: f(n) < nlogb a, 则取时间复杂度为O(nlogb…

主定理

《目录》 使用主定理求解递归式? 算例 ?证明主定理 使用主定理求解递归式 主定理是分治算法分析中非常重要的定理。 如&#xff0c;我们要处理一个 规模为 的问题通过分治&#xff0c;得到 个规模为 的问题&#xff0c;分解子问题和合并子问题的时间是 &#xff1a; 在上…

主定理(Master Theorem)

主定理是分析分治算法时间复杂度很重要的一个定理。 我们之前对于一个递归类的代码进行时间复杂度分析&#xff0c;一般会采用递归树的方式&#xff0c;下面我们先介绍一下递归树的方式&#xff0c;理解之后&#xff0c;再引入主定理的相关内容。 分治的介绍 分治算法总是将…

主定理(Master Theorem) 及其应用

主定理"Master Theorem" 一、主定理(Master Theorem)二、应用举例 在分析算法的时候&#xff0c;我们经常需要分析递归算法的时间复杂度。 一、主定理(Master Theorem) 主定理适用于求解如下递归式算法的时间复杂度&#xff1a; 其中&#xff1a; n 是问题规模大…

2020.10.27【GWAS】丨使用vcftools绘制pi(θπ) 选择消除分析图

这两天在整理GWAS流程&#xff0c;发现绘制θπ选择消除分析图在网上只能找到计算π的代码&#xff0c;但是没有绘图代码&#xff0c;于是自己搞了一下&#xff0c;供大家参考。 vcftools --vcf AxiomGT1.calls.vcf --window-pi 1000 --window-pi-step 1000 --out GT1_pi 生成…

使用vcftools或者gcta计算群体间固定指数(Fixation index,FST)

下列所用到的数据均为千人基因组数据库 1、通过vcftools计算FST 命令行如下&#xff1a; ./vcftools --vcf input_data.vcf --weir-fst-pop population_1.txt --weir-fst-pop population_2.txt --out pop1_vs_pop2 其中&#xff0c;input_data.vcf就是输入的vcf格式 population…

那些在vcftools安装上踩的坑

[TOC]那些在vcftools上踩的坑 那些在vcftools安装上踩的坑 近期由于学习需要所以需要安装vcftools做基因比对分析。然后的然后就各种问题来了… vcftools在kail linux 系统下安装 老生常谈的话题就直接上代码吧。 // 这个想必大家都很熟悉 tar -zxvf vcftools_0.1.13.tar.…

vcftools如何在Linux系统中安装

这里&#xff0c;记录一下vcftools的安装教程。 1. 下载 https://vcftools.github.io/examples.html 下载到本地&#xff0c;上传到服务器中。 2. 解压缩 unzip vcftools-vcftools-v0.1.16-18-g581c231.zipcd vcftools-vcftools-581c231/3. 安装 bash autogen.sh ./configur…

vcftools 安装 (bash autogen.sh ./configure出问题)

安装可以直接从gitclone安装&#xff0c;省略下载安装包及解压的过程&#xff0c;代码如下 git clone https://github.com/vcftools/vcftools.git 官方的教程步骤接下来是配置环境及安装 bash autogen.sh ./configure make make install 但是我之前一直在这一步卡了很久…

vcftools-linux-conda安装、使用

shell conda命令安装&#xff1a; conda install -c bioconda vcftoolsvcftools文档&#xff1a; OUTPUT FILE OPTIONS--out <output_prefix>This option defines the output filename prefix for all files generated by vcftools. For example, if <prefix> is…