Skip to content

时间复杂度

Time complexity · Running time

在固定计算模型与输入编码后,算法运行步骤数随输入规模增长的量级。

条目类型
定义

形式陈述

时间界必须连同三项约定给出:输入怎样编码、规模怎样取、计算模型把哪些操作计作一步。复杂度理论通常固定有限字母表 Σ,以编码长度 n=|x| 为规模;若研究图算法时另写 n=|V|,m=|E|,就必须说明图的编码以及两个参数如何进入上界。

对算法或机器 A,令

timeA(x)N{+}

表示它从读入 x 到停机所执行的步数,不停机时取 +。逐长度的最坏运行时间为

tA(n)=maxxΣntimeA(x).

因为 Σn 有限,只要 A 对所有输入停机,这个最大值就存在。若只把一部分字串视为合法实例,算法仍应规定如何处理非法编码;否则“只对合法输入取最大值”必须作为承诺问题的一部分明说。

逐长度最坏时间

tAO(T) 时,称 A 的最坏时间为 O(T(n))。这里的渐近记号只比较已经定义好的成本函数;它既不选择单步操作,也不保证上界紧确。若要声称 tAΘ(T),还需证明匹配的 Ω(T) 下界。

“运行时间”还有几种量词不同的版本:

保证 先固定什么,再聚合什么
最坏时间 固定长度 n,对该长度的全部输入取最大值
平均时间 先给定输入分布,再对输入取期望
期望时间 固定输入,对算法内部随机币取期望
摊还时间 对一串操作的总成本作上界,再除以操作数

平均时间与期望时间可以同时出现,此时有两个概率空间;摊还界则允许某一次操作远慢于平均值。没有写出量词和分布,就不能把这些保证互相替换。

直觉

时间复杂度是一份计费契约,不是墙钟秒数的预测。编码决定“输入有多长”,模型决定“走一步要付多少”,最坏情况量词决定“要为哪些输入负责”。三者固定后,增长率才可跨实现比较。渐近分析可以忽略固定倍率,却不能把任意精度乘法当作常数操作,也不能用数值 N 冒充写下 N 所需的位数。

时间与空间复杂度衡量的资源不同:运行一步会永久增加时间计数,工作格却能擦除并复用。因此一个算法可能运行指数多步而只保留多项式数量的信息,也可能用额外存储换取更少步骤。

例子与边界

可复算的二分搜索界

设有序数组可随机访问,一次索引和一次关键字比较都按常数计费。比较中点后,尚待搜索的元素至多为原来的一半,因此最坏比较次数满足

C(0)=0,C(n)1+C(n/2).

展开递推得到 C(n)log2(n+1);例如 n=8 时最多比较 4 次。若输入只能顺序读取,定位中点本身就不再是常数操作,这个界不能原样搬过去。

编码长度与伪多项式时间

若正整数 N 用二进制编码,其长度为 m=log2N+1。执行 N 次循环是 O(N),但用输入长度表示就是 O(2m)。因此“关于 N 是多项式”并不等于“关于输入编码长度是多项式”;背包动态规划的 O(nW) 界在容量 W 以二进制给出时也是同一种风险。

模型边界

单位代价 RAM 若允许对任意长整数一次完成乘法,会把位运算成本藏进一个步骤。位复杂度模型则让加法、乘法随操作数长度收费。一次 benchmark、最好情况或“典型输入很快”也都不能推出最坏渐近界;随机算法的高概率界还须给出失败概率如何随 n 变化。

推论与应用

具体任务会换用更贴近瓶颈的模型。Word-RAM按机器字操作计费,外存模型统计块传输,数据流模型同时约束遍数与存储,Work–Depth 模型把总工作和关键路径分开。相同算法在这些模型中的数字不可脱离模型名称解释。

粗粒度复杂度理论常以图灵机统一编码与步数,再由预算函数定义确定性时间类。合理模型之间通常存在多项式开销的模拟,所以 P、EXP 等多项式或指数尺度的类别较稳定;线性、近线性和常数因子结论则仍然依赖具体模型。

参考资料
  • Sanjeev Arora and Boaz Barak, Computational Complexity: A Modern Approach, Cambridge University Press, 2009, §1.2.
  • Michael Sipser, Introduction to the Theory of Computation, 3rd ed., Cengage, 2013, §7.1.
  • Thomas H. Cormen et al., Introduction to Algorithms, 4th ed., MIT Press, 2022, Chapters 2–3.
关系图谱78 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
类型化关系