整理了一张**"机器学习相关算法与概念速览表"** ,既包含定义,也配上了容易记住的例子,让大家一眼就能抓住它们的特点:
🤖 机器学习与相关算法&概念
算法名称 | 核心定义 | 常用分析方法 | 说明 |
---|---|---|---|
回溯算法(递归算法) | 通过不断尝试和回退寻找解法,遇到死胡同时回溯重试 | 递归分析、最坏情况分析 | 递归树求解复杂度;常需分析最坏分支遍历数 |
贪心算法 | 每一步都做当前看似最优的选择 | 渐进分析、最坏情况/平均情况分析 | 常结合证明贪心选择性质的正确性 |
回归算法(线性回归) | 用直线或超平面拟合数据,预测连续变量 | 渐进分析、概率分析 | 在机器学习中结合统计假设和误差分析 |
算法超参数 | 训练前设定、不随数据更新的参数 | 无固定算法分析法 | 偏重实验调优,不是算法运行分析 |
多项式时间算法 | 运行时间为输入规模 n 的多项式函数 | 渐进分析 | 关注阶数与可扩展性 |
朴素贝叶斯分类算法 | 基于贝叶斯定理,假设特征独立的分类方法 | 概率分析、平均情况分析 | 分析特征独立性假设下的计算复杂度 |
迭代算法 | 重复执行指令直至条件满足 | 摊还分析法、渐进分析 | 特别适合分析动态数据结构的均摊成本 |
分治算法 | 将问题分解成子问题,递归求解后合并结果 | 递归分析、主定理分析 | 多用主定理直接得时间复杂度 |
💡 Tips
-
如果算法是递归型 → 优先考虑 递归分析 / 主定理。
-
如果涉及动态数据结构 → 看看能否用 摊还分析 简化评估。
-
如果算法有随机性或输入分布已知 → 用 概率分析。
-
想快速比较复杂度量级 → 上 渐进分析。
📌算法分析方法速查表
分析方法 | 定义与核心思想 | 适用场景 | 典型算法示例 |
---|---|---|---|
摊还分析法 | 通过将偶尔发生的大开销均摊到多次操作中,得到每次操作的平均成本 | 动态数据结构的操作 | 动态数组扩容、栈/队列的入出队、哈希表扩容 |
递归分析 | 通过建立递归关系,分析递归调用的运行时间 | 递归算法、分治算法 | 归并排序、快速排序、汉诺塔问题 |
主定理分析 | 用主定理直接求解常见形式的递归式 | 分治法复杂度分析 | 归并排序、快速排序、矩阵乘法分治 |
概率分析 | 根据输入的概率分布计算算法的平均运行时间或性能 | 随机化算法、输入分布可知的算法 | 快速排序(随机主元)、跳表 |
最坏情况分析 | 分析在最不利输入下的运行时间或性能 | 安全性与可预期性要求高的算法 | 选择排序、冒泡排序 |
平均情况分析 | 在假设输入均匀分布时,计算算法的期望性能 | 一般性能评估 | 哈希查找、快速排序 |
渐进分析 | 分析算法的增长阶,忽略常数和低阶项 | 算法复杂度整体评估 | 任意算法的时间/空间复杂度分析 |
空间复杂度分析 | 评估算法所需的额外存储空间 | 内存优化、嵌入式系统 | 深度优先搜索(DFS)、动态规划 |
摊销-势能法 | 通过设计势能函数,衡量数据结构状态的"能量",推导摊销成本 | 数据结构优化分析 | 斐波那契堆操作、伸展树 |
📜题目实战

解析:A. 递归算法:递归算法通常通过递归树或主定理(Master Theorem)来分析时间复杂度。虽然摊还分析法可以用于分析递归算法中的某些操作,但它不是递归算法分析的首选方法。
B. 迭代算法:摊还分析法 常用于分析迭代算法,尤其是那些涉及动态数据结构(如动态数组、栈、队列和哈希表)的算法。这些数据结构在迭代过程中可能会进行动态调整,摊还分析法可以有效地评估这些调整的平均代价。
C. 分治算法:分治算法通常通过递归 关系来分析时间复杂度,使用主定理来得出最终的时间复杂度。摊还分析法不是分析分治算法的常规方法。
D. 贪心算法:贪心算法的分析通常关注局部最优解是否能得到全局最优解,以及算法的每一步操作的时间复杂度。摊还分析法不是专门用于贪心算法分析的。
综上所述,摊还分析法最常用于分析迭代算法,尤其是那些涉及动态数据结构调整的算法。