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

简介: 系列是基于有一定语言基础(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. 非对称加密

人工智能算法

并行算法

目录
相关文章
|
8天前
|
存储 算法 安全
2024重生之回溯数据结构与算法系列学习之串(12)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丟脸好嘛?】
数据结构与算法系列学习之串的定义和基本操作、串的储存结构、基本操作的实现、朴素模式匹配算法、KMP算法等代码举例及图解说明;【含常见的报错问题及其对应的解决方法】你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
2024重生之回溯数据结构与算法系列学习之串(12)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丟脸好嘛?】
|
1天前
|
机器学习/深度学习 算法 5G
基于MIMO系统的SDR-AltMin混合预编码算法matlab性能仿真
基于MIMO系统的SDR-AltMin混合预编码算法通过结合半定松弛和交替最小化技术,优化大规模MIMO系统的预编码矩阵,提高信号质量。Matlab 2022a仿真结果显示,该算法能有效提升系统性能并降低计算复杂度。核心程序包括预编码和接收矩阵的设计,以及不同信噪比下的性能评估。
10 3
|
5天前
|
机器学习/深度学习 人工智能 自然语言处理
【EMNLP2024】基于多轮课程学习的大语言模型蒸馏算法 TAPIR
阿里云人工智能平台 PAI 与复旦大学王鹏教授团队合作,在自然语言处理顶级会议 EMNLP 2024 上发表论文《Distilling Instruction-following Abilities of Large Language Models with Task-aware Curriculum Planning》。
|
8天前
|
算法 安全 搜索推荐
2024重生之回溯数据结构与算法系列学习(8)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第2.3章之IKUN和I原达人之数据结构与算法系列学习x单双链表精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
8天前
|
算法 安全 搜索推荐
2024重生之回溯数据结构与算法系列学习之单双链表精题详解(9)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第2.3章之IKUN和I原达人之数据结构与算法系列学习x单双链表精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
8天前
|
算法 安全 NoSQL
2024重生之回溯数据结构与算法系列学习之栈和队列精题汇总(10)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第3章之IKUN和I原达人之数据结构与算法系列学习栈与队列精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
15天前
|
算法 安全 数据安全/隐私保护
基于game-based算法的动态频谱访问matlab仿真
本算法展示了在认知无线电网络中,通过游戏理论优化动态频谱访问,提高频谱利用率和物理层安全性。程序运行效果包括负载因子、传输功率、信噪比对用户效用和保密率的影响分析。软件版本:Matlab 2022a。完整代码包含详细中文注释和操作视频。
|
1天前
|
算法 调度
基于遗传模拟退火混合优化算法的车间作业最优调度matlab仿真,输出甘特图
车间作业调度问题(JSSP)通过遗传算法(GA)和模拟退火算法(SA)优化多个作业在并行工作中心上的加工顺序和时间,以最小化总完成时间和机器闲置时间。MATLAB2022a版本运行测试,展示了有效性和可行性。核心程序采用作业列表表示法,结合遗传操作和模拟退火过程,提高算法性能。
|
2天前
|
存储 算法 决策智能
基于免疫算法的TSP问题求解matlab仿真
旅行商问题(TSP)是一个经典的组合优化问题,目标是寻找经过每个城市恰好一次并返回起点的最短回路。本文介绍了一种基于免疫算法(IA)的解决方案,该算法模拟生物免疫系统的运作机制,通过克隆选择、变异和免疫记忆等步骤,有效解决了TSP问题。程序使用MATLAB 2022a版本运行,展示了良好的优化效果。
|
1天前
|
机器学习/深度学习 算法 芯片
基于GSP工具箱的NILM算法matlab仿真
基于GSP工具箱的NILM算法Matlab仿真,利用图信号处理技术解析家庭或建筑内各电器的独立功耗。GSPBox通过图的节点、边和权重矩阵表示电气系统,实现对未知数据的有效分类。系统使用MATLAB2022a版本,通过滤波或分解技术从全局能耗信号中提取子设备的功耗信息。