主定理速记

主定理速记

主定理用于分析分治复杂度。

T(n)=aT(nb))+f(n)

T(n) 表示时间复杂度

n 表示问题规模

a 表示划分后子问题个数

nb 表示子问题规模,上下取整不影响复杂度分析

f(n) 表示分治过程中“分”和“合并”这两步的时间开销

f(n) 的举例:

比如归并排序,合并需要扫整个数组,所以 f(n)=O(n)

而二分,合并仅需要对两个元素比较,所以 f(n)=O(1)


基于上式,引入 基准函数 Θ(nlogba) 。比较和 f(n) 的大小。有下面三种情况。

  1. 若存在实数 ε>0 ,使得 f(n)=O(nlogbaε)。则 T(n)=O(nlogba)

  2. f(n)=O(nlogba) ,则 T(n)=O(logba logn)

  3. 若存在实数 ε>0 ,使得 f(n)=O(nlogba+ε),且 af(nb)cf(n),c<1 。则 T(n)=O(f(n))

这三种情况实际上就是和基准函数在渐进意义上的比大小。

case3需要额外判断 af(nb)cf(n)c<1

具体算例和详细表述参考(112条消息) 主定理_Debroon的博客-CSDN博客_主定理

posted @   Mxrurush  阅读(38)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示