形式陈述
在算法分析中,输入规模 取自自然数公理库自然数模型Natural numbers · Peano system由零元、后继和二阶归纳原则范畴性刻画的离散数系模型。集 ;设 是最终非负的资源函数公理库函数Function · Map · Mapping由定义域、陪域和单值图共同组成,并把每个输入送到唯一输出的映射。。定义
对偶地, 表示存在 ,使所有 都有 ;同时属于 与 时记为 。严格渐近关系的量词为
以及
当 最终为正时,二者分别等价于 与 。
若要对可取负值的一般实函数使用 ,则以 为定义,其他关系也须明确符号条件。本库的复杂度语境默认前一种非负资源函数约定。
量词顺序决定了常数可以依赖什么。若 还带有参数 ,写“对每个固定 ,”允许 随 改变;若要求对所有 一致成立,就必须在量化 之前选定同一组 。把一个增长参数吸进常数,往往正是错误复杂度结论的来源。
直觉
常数 吸收机器、语言与实现的固定倍率差异,起点 则忽略有限多个小输入上的反常。这使比较聚焦于输入放大时成本如何增长,得到 这类结构性层次。 只是上界函数类,紧确的同阶结论应写成 。
O、Omega 与 Theta 的边界
例子与边界
:当 时,。换底公式说明 ,所以对数复杂度通常不写底;指数的底则不能忽略,因为 。函数也无须单调。例如 虽有振荡,当 时仍有
因而 。又有 ,因为 。只写 虽正确,却丢失了比值趋零这一更强信息。
为真但不紧,因而上界不能单独证明最优性。“”是常见的历史写法,实质是成员关系 ,不可交换或移项;本库优先使用成员记法。定义也允许 与 大得惊人:常数因子为 的 实现在一切现实规模上都可能输给常数温和的 实现。渐近优势只是“最终”的承诺,现实输入仍受常数、内存层次和实现成本影响。
推论与应用
渐近记号为时间公理库时间复杂度Time complexity · Running time在固定计算模型与输入编码后,算法运行步骤数随输入规模增长的量级。、空间公理库空间复杂度Space complexity计算在输入长度函数下使用的工作存储单元数量。和摊还成本公理库摊还分析Amortized analysis对操作序列的总成本作上界,而非逐次最坏成本。提供统一的增长率语言,但它不会替分析者选择资源模型。最坏、期望、高概率和摊还是不同的量化维度;即使它们都得到 ,结论也不相同。通信位数、oracle 查询次数与机器指令同样不能只因量纲都写成一个整数就直接比较。
多参数界应保留真正会变化的参数,并说明趋近区域。比如
可以表示存在与 均无关的 ,使定理规定范围内的所有 、 都满足该界;也可能只表示固定 后关于 的上界,此时隐藏常数允许依赖 。两种陈述必须用量词、下标或文字区分。类似地,若复杂度还依赖字长、块大小、输出大小或错误概率,省略参数只在它已被明确固定时才安全。
因此,“某问题需要 ”必须同时交代 表示什么、计算单位是什么、其他参数如何量化。对多变量函数也没有唯一的“趋于无穷”:可以要求各坐标独立增长,也可以限定在 之类的区域内。定义域和常数依赖关系都是渐近结论的一部分,而不是排版细节。
参考资料
- Thomas H. Cormen et al., Introduction to Algorithms, 4th ed., MIT Press, 2022, Chapter 3.
- Donald E. Knuth, “Big Omicron and Big Omega and Big Theta,” 1976.