算法系统学习-最最简单递归算法分析和迭代法

简介: 系列是基于有一定语言基础(C,C++,Java等等)和基本的数据结构基础进行的算法学习专栏,如果觉得有点吃力 😥 ,建议先了解前提知识再学习喔!本个专栏会将用更容易理解的表达去学习算法,如果在一些表述上存在问题还请各位多多指点

递归算法分析


Case1:求n!

构造算法中的两个步骤:

  1. n!=n*(n-1)!
  2. 0!=1,1!=1

递归算法如下(以n=3为例) 调用过程为:

f(3)--f(2)--f(1)--f(2)---f(3)

---- 递归 -->-------回溯------->

递归调用其实是一个降低规模的过程,和一般算法一样,算法的起始模块通常也是终止模块。

当规模降为1 时,即递归到f(1)时,满足停止条件停止递归,开始回溯并计算。

  1. 从fact(1)=1返回到f(2);
  2. 计算2*f(1)=2返回到f(3);
  3. 计算3*f(2)=6;
  4. 结束递归。

拓展:

为了更好理解,可以把不同次递归调用当作调用了不同的模块(但实际上每次递归调用都是同一个算法模块,在每一次递归调用都是用一个特殊的结构“栈”,记录当前算法的执行状态,特别设置地址栈,用来记录当前算法的执行位置,以备回溯时正常返回,递归模块中的形式参数和局部变量虽然是定义为简单的变量,每次递归调用得到的值都是不同的,它们都是由“栈”来存储的)


递归算法效率分析法--迭代法


基本步骤:

先将递归算法简化成对应的递归方程,然后通过反复迭代,将递归方程的右端变换成一个级数,最后求级数的和。再估计和的渐近阶,或者,不求级数的和耐而直接估计级数的渐近阶,从而达到对递归方程解的渐近阶的估计。


拓展:

用迭代方法的估计递归算法的解,就是充分利用递归算法中递归关系,通过一定的代数,运算和数学分析的级数知识,得到问题的复杂度。


例如Case1:n!

算法的递归方程:

T(n)=T(n-1)+O(1)

其中O(1)为一次乘法操作,迭代求解过程如下:

T(n) =T(n-2)+O(1)+O(1)

=T(n-3)+O(1)+O(1)+O(1)

......

=O(1)+......+O(1)+O(1)

=n*O(1)

=O(n)


现在常用算法简介:


压缩算法:

  1. 无损压缩算法:文本数据压缩都是无损压缩,即还原后的文件和源文件完全相同。常见有:哈夫曼编码,算术编码,字节压缩算法和字典压缩算法。(各个具体就不详细说明,感兴趣的可以自己百度一下)
  2. 有损压缩算法:以音频数据的压缩技术为例,为了更高的编码效率,都允许一定程度的精度损失。


加密算法(内容较多,不具体详细讲解):


  1. 对称加密
  2. 非对称加密

人工智能算法

并行算法

目录
相关文章
|
1月前
|
数据采集 边缘计算 算法
遗传算法+多目标规划算法+自适应神经模糊系统(Matlab代码实现)
遗传算法+多目标规划算法+自适应神经模糊系统(Matlab代码实现)
|
2月前
|
机器学习/深度学习 算法 数据挖掘
没发论文的注意啦!重磅更新!GWO-BP-AdaBoost预测!灰狼优化、人工神经网络与AdaBoost集成学习算法预测研究(Matlab代码实现)
没发论文的注意啦!重磅更新!GWO-BP-AdaBoost预测!灰狼优化、人工神经网络与AdaBoost集成学习算法预测研究(Matlab代码实现)
|
5天前
|
运维 监控 JavaScript
基于 Node.js 图结构的局域网设备拓扑分析算法在局域网内监控软件中的应用研究
本文探讨图结构在局域网监控系统中的应用,通过Node.js实现设备拓扑建模、路径分析与故障定位,提升网络可视化、可追溯性与运维效率,结合模拟实验验证其高效性与准确性。
59 3
|
8天前
|
机器学习/深度学习 运维 算法
【微电网多目标优化调度】多目标学习者行为优化算法MOLPB求解微电网多目标优化调度研究(Matlab代码实现)
【微电网多目标优化调度】多目标学习者行为优化算法MOLPB求解微电网多目标优化调度研究(Matlab代码实现)
|
4月前
|
机器学习/深度学习 边缘计算 算法
NOMA和OFDMA优化算法分析
NOMA和OFDMA优化算法分析
244 127
|
16天前
|
机器学习/深度学习 自然语言处理 算法
基于改进鲸鱼优化算法的微网系统能量优化管理研究(Matlab代码实现)
基于改进鲸鱼优化算法的微网系统能量优化管理研究(Matlab代码实现)
|
27天前
|
机器学习/深度学习 算法 算法框架/工具
256KB内存约束下的设备端训练:算法与系统协同设计——论文解读
MIT与MIT-IBM Watson AI Lab团队提出一种创新方法,在仅256KB SRAM和1MB Flash的微控制器上实现深度神经网络训练。该研究通过量化感知缩放(QAS)、稀疏层/张量更新及算子重排序等技术,将内存占用降至141KB,较传统框架减少2300倍,首次突破设备端训练的内存瓶颈,推动边缘智能发展。
114 6
|
2月前
|
机器学习/深度学习 边缘计算 算法
【状态估计】基于LMS类自适应滤波算法、NLMS 和 LMF 进行系统识别比较研究(Matlab代码实现)
【状态估计】基于LMS类自适应滤波算法、NLMS 和 LMF 进行系统识别比较研究(Matlab代码实现)
101 3
|
16天前
|
机器学习/深度学习 存储 算法
基于模型预测算法的混合储能微电网双层能量管理系统研究(Matlab代码实现)
基于模型预测算法的混合储能微电网双层能量管理系统研究(Matlab代码实现)
|
2月前
|
机器学习/深度学习 人工智能 算法
【多智能体编队】基于自适应控制算法非线性输入的多智能体系统编队控制研究(Matlab代码复现)
【多智能体编队】基于自适应控制算法非线性输入的多智能体系统编队控制研究(Matlab代码复现)

热门文章

最新文章