主定理的证明及应用举例

主定理的证明及应用举例主定理主定理最早出现在 算法导论 中 提供了分治方法带来的递归表达式的渐近复杂度分析 规模为 n 的问题通过分治 得到 a 个规模为 n b 的问题 每次递归带来的额外计算为 c n d T n aT n b c n d 那么就可以得到问题的复杂度为

主定理

  • T(n) = O(n^d log(n)), if a = b^d
  • T(n) = O(n^d ), if a < b^d
  • T(n) = O(n^logb(a))), if a > b^d

证明方法

本来使用主定理是可以免去画递归树的,但为了证明主定理,还是需要画树。

主定理的证明及应用举例

可见,每次递归把问题分为a个规模为n/b的子问题。从根节点开始,共有logb(n)+1层,叶子节点数为a^(logb(n))。那么,第j层共有a^j个子问题,每个问题规模为n/b^j,每个子问题运算量为c*(n/b^j)^d需要完成的计算量为:

主定理的证明及应用举例

求和得到整个问题的运算量:

主定理的证明及应用举例

那么,根据a与b^d的关系,很容易得到主定理。

应用

二分搜索

  • 每次问题规模减半,a=1,b=2,d=0
  • 复杂度为n^0 log(n) = log(n)。

快速排序

  • 随机选择待排序序列中的一个数字作为划分字问题的标准,划分是否平均影响算法复杂度
  • 每次问题规模减半,a=2,b=2,d=1
  • 复杂度为n^2 log(n)
  • 最差情况下,复杂度为O(n^2)

归并排序

  • 数据列均分为两部分,分别排序,之后以O(n)的复杂度进行合并,空间复杂度O(n)
  • 每次问题规模减半,a=2,b=2,d=1
  • 复杂度为n log(n)

基数排序(Radix sort)

  • 对于待排序的整数序列,从最低位到最高位每次按照相应的位排序一次
  • 每次递归问题规模变为原来的1/10,但需要求解10个子问题,额外运算为O(n)的,a=10,b=10,d=1
  • 复杂度为n^1 log(n) = n log(n),近似为O(kN),k为整数的位数

快速傅里叶变换:FFT

  • 每次问题规模减半,a=2,b=2,d=1
  • 复杂度为n log(n)

Karatsuba快速乘法

  • 正常两个n位数乘法为n^2
  • 算法把两个乘数各分为高低位两部分,如X*Y = (a+b) * (c+d) = ac+bd + (bc+ad) = ac+bd+(ac+bd – (a-b)(c-d))
  • 只需要ac,bd,(a-b)(c-d)三次乘法
  • 每次问题规模减半,但需要解3个子问题,加法是O(n)的,a=3,b=2,d=1
  • 复杂度为n^log2(3)


转载请注明作者:Focustc,博客地址为 http://blog.csdn.net/caozhk,原文链接为 点击打开

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/232242.html原文链接:https://javaforall.net

(0)
上一篇 2025年10月23日 下午4:01
下一篇 2025年10月23日 下午4:22


相关推荐

  • Java高并发解决方案

    Java高并发解决方案电商的秒杀和抢购,对我们来说,都不是一个陌生的东西。然而,从技术的角度来说,这对于Web系统是一个巨大的考验。当一个Web系统,在一秒钟内收到数以万计甚至更多请求时,系统的优化和稳定至关重要。这次我们会关注秒杀和抢购的技术实现和优化,同时,从技术层面揭开,为什么我们总是不容易抢到火车票的原因?一、大规模并发带来的挑战在过去的工作中,我曾经面对过5w每秒的高并发秒杀功能,在这个过程中,整个W…

    2022年5月31日
    32
  • 什么是数据库实例

    什么是数据库实例什么是数据库实例 一 通俗解释首先说说 数据库是做什么 数据库是用来长久存储数据的 而我们大家都知道内存只能临时存储 磁盘等才能真正存储数据 那数据库会放那里呢 肯定是存放在磁盘上 其实数据库就是磁盘上的一个文件 从上面我们得出结论 数据库 磁盘上的文件 既然数据库可以看成磁盘上文件 我们怎么使用数据库呢 如果说我们可以直

    2026年3月26日
    2
  • 实体关系抽取实战_知识图谱实体关系抽取

    实体关系抽取实战_知识图谱实体关系抽取前言本篇博客主要讲NLP中的关系抽取,聚焦点中文,没有过多理论,侧重实践(监督学习)。关于实体关系抽取的技术发展脉络,感兴趣的可以看一下:https://www.cnblogs.com/theodoric008/p/7874373.html关系抽取有限定关系抽取和开放关系抽取,这里主要说限定关系抽取即分类问题其过程常常又有监督学习和半监督学习,这里主要讲利用深度学习进行的监督学…

    2025年8月1日
    5
  • 搭建私人邮件服务器

    搭建私人邮件服务器怎样使用本地服务器搭建一个邮箱,这样就可以脱离qq或者其他企业邮箱的限制,即可以做到节省成本,又可以得到收发邮件的一个保密性。这里我们先展示一下本地搭建邮箱服务器后的成功例子:可以看到,这里qq邮箱收到我这边发送的一个测试邮件例子(特别说明一下,这里的wordcap.top是我自己购买的一个域名)同样qq也可以向我发送邮件:怎样搭建一个属于自己的私人邮箱服务器了,我这里演示一遍:准…

    2022年5月20日
    247
  • 计算机组成原理知识点梳理(一)

    计算机组成原理知识点梳理(一)注:所学教材为《计算机组成原理(第二版)》唐朔飞编著;本次梳理涵盖内容为:第一章计算机系统概论1.1计算机系统简介1.2计算机的基本组成参考内容以及图片来源为书本和csdn博文第一章计算机系统概论1.1计算机系统简介计算机系统结构:主要研究软硬件功能的分配和对软硬件界面的确定。计算机组成是计算机系统结构的逻辑实现。计算机实现是对计

    2022年5月31日
    35
  • clientheight什么意思_汇编中offset是什么意思

    clientheight什么意思_汇编中offset是什么意思许多文章已经介绍了clientHeight和offsetHeight的区别,就是clientHeight的值不包括scrollbar的高度,而offsetHeight的值包括了scrollbar的高度。然而,clientHeight和offsetHeight的值到底由什么组成的呢?如何计算这两个数的值?1.clientHeight和offsetHeight的值由什么决定?假如我们…

    2025年10月19日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号