数论 | 渐近符号
大 O 符号:又称为渐进符号,是用于描述函数渐近行为的数学符号。在数学中,它一般用来刻画被截断的无穷级数尤其是渐近级数的剩余项;在计算机科学中,它在分析算法复杂性的方面非常有用。
紧确界记号
- 记法:
- 解释:
的紧确界为 - 形式化定义:
在算法分析中,代表算法运行时间的确界。如
渐进上界记号
- 记法:
- 解释:
的渐近上界为 - 形式化定义:
在算法分析中,代表算法运行时间的上界,也就是最坏情况下的时间复杂度。如
非渐近紧确上界记号
- 记法:
- 解释:
的渐近由 主导 - 形式化定义:
渐近紧确:
非渐近紧确:
渐进下界记号
- 记法:
- 解释:
的渐近下界为 - 形式化定义:
在算法分析中,代表算法运行时间的下界,也就是最好情况下的时间复杂度。如
非渐近紧确下界记号
- 记法:
- 解释:
主导 的渐近 - 形式化定义:
渐近紧确:
非渐近紧确:
几种记号的总结
记号 | 意义 | 理解方式 |
---|---|---|
非渐近紧确上界 | 与 | |
渐近上界 | 与 | |
紧确界 | 与 | |
渐近下界 | 与 | |
非渐近紧确下界 | 与 |
维恩图表示:
由数据范围反推算法复杂度以及算法内容——yxc
- 作者:yxc
- 链接:https://www.acwing.com/blog/content/32/
- 来源:AcWing(本文仅做重排版)
一般 ACM 或者笔试题的时间限制是 1 秒或 2 秒。
在这种情况下,C++ 代码中的操作次数控制在
下面给出在不同数据范围下,代码的时间复杂度和算法该如何选择:
数据范围 | 算法复杂度 | 算法内容 |
---|---|---|
指数级别 | DFS + 剪枝、状态压缩 DP | |
Floyd、DP、高斯消元 | ||
DP、二分、朴素版 Dijkstra、朴素版 Prim、Bellman-Ford | ||
块状链表、分块、莫队 | ||
各种 sort、线段树、树状数组、(STL)set/map、堆、拓扑排序、Dijkstra + 堆、Prim + 堆、Kruskal、SPFA、求凸包、求半平面交、二分、CDQ 分治、整体二分、后缀数组、树链剖分、动态树 | ||
单调队列、 哈希、双指针扫描、并查集、KMP、AC 自动机;sort、树状数组、堆、Dijkstra、SPFA | ||
双指针扫描、KMP、AC 自动机、线性筛素数 | ||
判断质数 | ||
最大公约数、快速幂、数位 DP | ||
高精度加减乘除 | ||
高精度加减、FFT/NTT |
本文采用 CC BY-SA 4.0 许可,本文 Markdown 源码:Haotian-BiJi