主定理速记
主定理用于分析分治复杂度。
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) 的大小。有下面三种情况。
-
若存在实数 ε>0 ,使得 f(n)=O(nlogba−ε)。则 T(n)=O(nlogba)。
-
若 f(n)=O(nlogba) ,则 T(n)=O(logba logn)。
-
若存在实数 ε>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博客_主定理
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)