机器学习相关算法:回溯算法 贪心算法 回归算法(线性回归) 算法超参数 多项式时间 朴素贝叶斯分类算法

整理了一张**"机器学习相关算法与概念速览表"** ,既包含定义,也配上了容易记住的例子,让大家一眼就能抓住它们的特点:

🤖 机器学习与相关算法&概念

算法名称 核心定义 常用分析方法 说明
回溯算法(递归算法) 通过不断尝试和回退寻找解法,遇到死胡同时回溯重试 递归分析、最坏情况分析 递归树求解复杂度;常需分析最坏分支遍历数
贪心算法 每一步都做当前看似最优的选择 渐进分析、最坏情况/平均情况分析 常结合证明贪心选择性质的正确性
回归算法(线性回归) 用直线或超平面拟合数据,预测连续变量 渐进分析、概率分析 在机器学习中结合统计假设和误差分析
算法超参数 训练前设定、不随数据更新的参数 无固定算法分析法 偏重实验调优,不是算法运行分析
多项式时间算法 运行时间为输入规模 n 的多项式函数 渐进分析 关注阶数与可扩展性
朴素贝叶斯分类算法 基于贝叶斯定理,假设特征独立的分类方法 概率分析、平均情况分析 分析特征独立性假设下的计算复杂度
迭代算法 重复执行指令直至条件满足 摊还分析法、渐进分析 特别适合分析动态数据结构的均摊成本
分治算法 将问题分解成子问题,递归求解后合并结果 递归分析、主定理分析 多用主定理直接得时间复杂度

💡 Tips

  • 如果算法是递归型 → 优先考虑 递归分析 / 主定理

  • 如果涉及动态数据结构 → 看看能否用 摊还分析 简化评估。

  • 如果算法有随机性或输入分布已知 → 用 概率分析

  • 想快速比较复杂度量级 → 上 渐进分析

  • 整理 by Moshow郑锴@https://zhengkai.blog.csdn.net/

📌算法分析方法速查表

分析方法 定义与核心思想 适用场景 典型算法示例
摊还分析法 通过将偶尔发生的大开销均摊到多次操作中,得到每次操作的平均成本 动态数据结构的操作 动态数组扩容、栈/队列的入出队、哈希表扩容
递归分析 通过建立递归关系,分析递归调用的运行时间 递归算法、分治算法 归并排序、快速排序、汉诺塔问题
主定理分析 用主定理直接求解常见形式的递归式 分治法复杂度分析 归并排序、快速排序、矩阵乘法分治
概率分析 根据输入的概率分布计算算法的平均运行时间或性能 随机化算法、输入分布可知的算法 快速排序(随机主元)、跳表
最坏情况分析 分析在最不利输入下的运行时间或性能 安全性与可预期性要求高的算法 选择排序、冒泡排序
平均情况分析 在假设输入均匀分布时,计算算法的期望性能 一般性能评估 哈希查找、快速排序
渐进分析 分析算法的增长阶,忽略常数和低阶项 算法复杂度整体评估 任意算法的时间/空间复杂度分析
空间复杂度分析 评估算法所需的额外存储空间 内存优化、嵌入式系统 深度优先搜索(DFS)、动态规划
摊销-势能法 通过设计势能函数,衡量数据结构状态的"能量",推导摊销成本 数据结构优化分析 斐波那契堆操作、伸展树

📜题目实战

解析:A. 递归算法:递归算法通常通过递归树或主定理(Master Theorem)来分析时间复杂度。虽然摊还分析法可以用于分析递归算法中的某些操作,但它不是递归算法分析的首选方法。

B. 迭代算法:摊还分析法 常用于分析迭代算法,尤其是那些涉及动态数据结构(如动态数组、栈、队列和哈希表)的算法。这些数据结构在迭代过程中可能会进行动态调整,摊还分析法可以有效地评估这些调整的平均代价。

C. 分治算法:分治算法通常通过递归 关系来分析时间复杂度,使用主定理来得出最终的时间复杂度。摊还分析法不是分析分治算法的常规方法。

D. 贪心算法:贪心算法的分析通常关注局部最优解是否能得到全局最优解,以及算法的每一步操作的时间复杂度。摊还分析法不是专门用于贪心算法分析的。

综上所述,摊还分析法最常用于分析迭代算法,尤其是那些涉及动态数据结构调整的算法。

相关推荐
天上的光15 分钟前
17.迁移学习
人工智能·机器学习·迁移学习
Xの哲學27 分钟前
Perf使用详解
linux·网络·网络协议·算法·架构
想不明白的过度思考者37 分钟前
数据结构(排序篇)——七大排序算法奇幻之旅:从扑克牌到百亿数据的魔法整理术
数据结构·算法·排序算法
小七rrrrr43 分钟前
动态规划法 - 53. 最大子数组和
java·算法·动态规划
code小毛孩1 小时前
leetcodehot100 矩阵置零
算法
何妨重温wdys1 小时前
矩阵链相乘的最少乘法次数(动态规划解法)
c++·算法·矩阵·动态规划
数据智能老司机1 小时前
面向企业的图学习扩展——图简介
人工智能·机器学习·ai编程
姜不吃葱1 小时前
【力扣热题100】双指针—— 接雨水
数据结构·算法·leetcode·力扣热题100
PineappleCoder1 小时前
大小写 + 标点全搞定!JS 如何精准统计单词频率?
前端·javascript·算法
tanyongxi662 小时前
C++ 特殊类设计与单例模式解析
java·开发语言·数据结构·c++·算法·单例模式