主定理学习及理解

article/2025/9/19 3:59:13

主定理证明

请参考该文章: https://wenku.baidu.com/view/993d716a84868762cbaed522.html

主定理理解运用

看完上面的推导证明, 想必对主定理的推导有了一定理解, 那么又如何理解运用呢?
先晒下公式:
在这里插入图片描述
公式大致阐明了三种情况:

  1. f(n) < nlogb a, 则取时间复杂度为O(nlogb a);
  2. f(n) = nlogb a, 则取时间复杂度为O(nlogb a log k+1 n);
  3. f(n) > nlogb a, 则取时间复杂度为f(n);

大白话就是: 谁的复杂度高, 总的时间复杂度就以谁为准。

接下来看一下具体例子运用:

  1. f(n) < nlogb a的情况:

T(n) = 4T(n/2) + n
这个例子中, a = 4, b = 2, f(n) =n, nlogb a = nlog2 4 = n^2;
那么nlogb a = n^2 > n = f(n) ;
nlogb a 大, 他说了算
所以时间复杂度为: nlogb a = n^2。

  1. f(n) > nlogb a的情况:

T(n) = 2T(n/2) + n^2
这个例子中, a = 2, b = 2, f(n) =n^2, nlogb a = nlog2 2 = n;
那么nlogb a = n < n^2 = f(n) ;
f(n)大, 他说了算
所以时间复杂度为: f(n) = n^2。

  1. f(n) = nlog b a 的情况稍微要注意一下, 结合用例解释一下:

T(n) = 4T(n/2) + n^2
这个例子中, a = 4, b = 2, f(n) =n^2, nlogb a = nlog2 4 = n^2;
那么nlogb a = n^2 = n^2 = f(n) ;
则时间复杂度为: n^2 logn;

再看一个案例:

T(n) = 2T(n/2) + nlogn
先忽略f(n) 中logn
这个例子中, a = 2, b = 2, f(n) =n, nlogb a = nlog2 2 = n;
那么nlogb a = n = n = f(n) ;
这个时候我们重新看f(n) = nlogn=nlog k n, 则k=1
则时间复杂度为: n log 2 n;

继续看一个案例:

T(n) = 2T(n/2) + n/2
f(n) = n/2 = n ------在n足够大, 这两者在时间复杂度上是等效的;
这个例子中, a = 2, b = 2, f(n) =n, nlogb a = nlog2 2 = n;
那么nlogb a = n = n = f(n) ;
这个时候我们重新看f(n) = nlogn=nlog k n, 则k=1
则时间复杂度为: n log 2 n;

通过以上三个案例, 我们可以总结f(n) = nlog b a的情况如下:

  1. 如果f(n) 中存在logn, log2 n …等等, 我们都先忽略, 然后时间复杂度在原来的基础上k+1, 即时间复杂度O(n) = nlog k+1 n;
  2. 如果f(n) 中不存在logn, log2n … 等等, 我们在原来f(n) = n的基础上, 加上logn
    即时间复杂度为O(n) = nlog n;

这两种情况其实本质是一样的, 只要判断nlog b a = f(n), 前提是去掉f(n)的logn项,
那么时间复杂度O(n) = nlog b a log k+1 n
如果k为 0, 即nlog 0 n = n
k 为 1, 即nlog 1 n = nlogn

通过以上学习, 想必你也掌握了主定理的证明理解及运用了吧!


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

相关文章

主定理

《目录》 使用主定理求解递归式? 算例 ?证明主定理 使用主定理求解递归式 主定理是分治算法分析中非常重要的定理。 如&#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…

Chr函数

函数chr&#xff08;&#xff09;的作用是返回其参数所表示的字符&#xff0c;参数是这个字符的ASCII码。 CHR函数&#xff0c;传入一个数值&#xff0c;返回这个数值对应的ascii码字符&#xff0c;比如chr(65)输出的是大写的A 示例&#xff1a; Private Sub Command2_Click…

Python笔记:内置函数chr()用法

chr(i) chr()&#xff1a;输入一个整数【0&#xff0c;255】返回其对应的ascii符号&#xff0c;相反ord&#xff08;&#xff09;函数就是用来返回单个字符的ascii值&#xff08;0-255&#xff09;或者unicode数值&#xff08;&#xff09;参数 i :可以是10进制也可以是16进制的…

python中的chr和ord函数_python chr/ord函数区别和使用

原博文 2020-03-16 10:04 − python中 内置函数 chr 和 内置函数 ord 可以配对使用&#xff1b;chr函数将ascll码转为字符&#xff1b;ord函数将字符转为ascll码; 一.chr函数将ascll码转为字符 chr(65) >>&gt... 相关推荐 2019-12-23 08:11 − day3复习 >…

python中chr函数是什么意思_python函数之chr(i)

chr(i) 中文说明&#xff1a; 返回整数i对应的ASCII字符。与ord()作用相反。 参数x&#xff1a;取值范围[0, 255]之间的正数。 版本&#xff1a;该函数在python2和python3各个版本中都可用。不存在兼容性问题。 英文说明&#xff1a; Return a string of one character w…

python 中chr_python中chr

广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python chr函数最后更新于:2020-03-10 09:26:00在python中 ord函数可以字符作为参数,返回对应的ascll码; 其中内置函数chr 与 ord函数作用相反,chr函数可以…

php chr 反斜杠,PHP chr()函数讲解

PHP chr()函数讲解 PHP chr() 函数 实例 从不同 ASCII 值返回字符&#xff1a; echo chr(52) . ""; // Decimal value echo chr(052) . ""; // Octal value echo chr(0x52) . ""; // Hex value ?> 定义和用法 chr() 函数从指定 ASCII 值返回…

chr php,php chr函数怎么用?

php chr函数用于从指定的ASCII值返回字符。语法是chr(ascii)&#xff0c;参数ascii必需&#xff0c;指ASCII值。ASCII值可被指定为十进制值、八进制值或十六进制值。 php chr函数怎么用&#xff1f; 定义和用法 chr() 函数从指定的 ASCII 值返回字符。 ASCII 值可被指定为十进制…

mysql chr函数_mysql标量函数

几种常用的标量函数&#xff0c;最简单的就是通过类select abs(-123);来使用标量函数。 abs&#xff1a;该函数返回一个数表达式的绝对。如abs(-123); adddate&#xff1a;该函数将一个时间间隔(参数2)添加到时戳或时戳表达式(参数1)中&#xff0c;与此函数同功能的还有date_ad…

Oracle CHR函数

这篇主要说一下这个函数CHR&#xff0c;字符函数&#xff0c;我在项目里常用到的是用这个函数进行换行&#xff0c;刚好有时间就去官网好好了解了一下这个函数的用法和含义&#xff0c;现在分享一下&#xff0c;大家共同学习。 1.CHR返回的字符在数据库字符集中具有与n相等的二…

Python二级考试基础知识(ord,chr函数详解)

目录 前言 一、两个函数的定义 二、函数的具体介绍 1.chr和ord函数的简单展示 2.chr和ord函数的简单应用 总结 前言 chr和ord两个函数&#xff0c;属于Python内置函数&#xff0c;且是一对对应的函数&#xff0c;了解此内置函数很重要的原因是因为这是属于计算机二级Python考试…

python 内置函数ord()和chr()函数用法详解

python 中的ord()函数和chr()函数 需要对字符进行转换时使用 其中ord函数可以将字符转化为你所需要的ASCII码&#xff0c;chr函数可以将0-255中的任一整数转化为你所需要的字符。 通过这样的转化 你可以方便的完成字符与数字之间的转换操作&#xff0c;更好使用for循环以及if判…