算法系统学习-正的麻烦反着来呗!(迭代算法-倒推法)

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

倒推法


所谓的倒推法,是对某些特殊问题所采用的违反通常习惯的,从后向前推解问题的方法,正向推理比较麻烦时,反而在逆向推理中更加巧妙地解决问题。


Case1猴子吃桃问题


一只小猴子摘了若干个桃子,每天吃总数的一半多一个,到第十天的时候就剩一个桃子,请问原来有多少桃子?

建立数学模型:

每天的桃子总数为

a10=1, a9=(1+a10)*2, a8=(1+a9)*2, .....

算法设计:

由于每天的桃子数只依赖前一天的桃子数,所以用一个迭代变量代表桃子个数就可以了

ai=(1+ai)*2 i 取值为9,8,7,6,5,4....1

main(){
  int i,a;
    a=1;
    for(i=9;i>=1;i--){
    a=(a+1)*2;
        cout<<a;
    }
}
复制代码


由一个简单的小case对倒推法有一个简单的了解,让我们来看一个比较有趣的数学问题--“杨辉三角”


Case2杨辉三角(使用一维数组):


网络异常,图片无法展示
|

关于杨辉三角问题,具体我就不进行过多的阐述了,因为想必你们的体育老师应该也讲过吧。

算法分析:

第i层有i列需要求解的i个数据,若从第一列开向后计算求i行时,由于用一个一维数组存储,每求出一个数将覆盖掉第i-1行对应的存储的值。这 将导致下一个数无法计算。而倒推法却不会,因此迭代表达式为:

A[1]= A[i]=1

A[j]=A[j]+A[j-1] j=i-1 ,i-2, i-3.....2

i行 i-1行 i-1行

为输出方便可以转化一下格式:

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1


算法如下:

main(){
  int n,i,j, a[100];
    cin>>n;
    cout<<"1";cout<<"/n";
    a[1]=a[2]=1;
    cout<<a[1]<<a[2];
    for(i=3;i<=n;i++){
    a[1]=a[i]=1;
       for(j=i-1;j>1;j--){
       a[j]=a[j]+a[j-1];
       }
        for(j=1;j<=i;j++){
            cout<<a[j];
        }
    }
  cout<<"/n";
}
复制代码


迭代法解方程


Case1:求ax^3+bx^2+cx+d=0方程根的算法,系数a,b,c,d的值依次是1,2,3,4,由主函数输入。求x在1附近的一个实根并输出。

拓展:牛顿迭代法

牛顿迭代法又称切线法,它比一般的迭代法有更高的收敛速度。首先选择一个接近的函数f(x)零点的x0,计算对应的f(x0)和切线斜率f'(x) (f'(x)表示是函数的导数,求导是高数的内容不具体详细讲解,不懂的可以百度)然后计算穿过点(x0,f(x0))且斜率f'(x)的直线方程:

y=f(x0)+f'(x)(x-x0)

和x轴的交点的x坐标,也就是求如下方程的解:

0=f(x0)+f'(x)(x-x0)


迭代公式可以简化成:xn+1=xn-f(xn)/f'(n)

这就是有名的牛顿迭代公式,已经证明了,如果f'连续的,并且待求的零点x是孤立的,那么在零点x周围存在一个区域,只要初始值x0位于这个临近区域内,那么牛顿法必定收敛(关于收敛性也是高数的内容,就不详细讲解)

因此看完关于牛顿迭代,可得出算法如下:

main(){
  float a,b,c,d,fx;
    cout<<'系数a,b,c,d:'
    cout>>a>>b>>c>>d;
    fx=f(a,b,c,d);
    cout<<'方程的根'<<fx;
}
float a,b,c,d;
fx=f(a,b,c,d);
{
float x1=1,x0,f0,f1;
    do{
    x0=x1;
        f0=((a*x0+b)*x0+c)*x0+d;
        f1=(3*a*x0+2*b)*x0+c;
        x1=x0-f0/f1;
    }while(fabs(x1-x0)>=1e-4){
    return(x1);
    }
}


目录
相关文章
|
16天前
|
机器学习/深度学习 算法 TensorFlow
动物识别系统Python+卷积神经网络算法+TensorFlow+人工智能+图像识别+计算机毕业设计项目
动物识别系统。本项目以Python作为主要编程语言,并基于TensorFlow搭建ResNet50卷积神经网络算法模型,通过收集4种常见的动物图像数据集(猫、狗、鸡、马)然后进行模型训练,得到一个识别精度较高的模型文件,然后保存为本地格式的H5格式文件。再基于Django开发Web网页端操作界面,实现用户上传一张动物图片,识别其名称。
46 1
动物识别系统Python+卷积神经网络算法+TensorFlow+人工智能+图像识别+计算机毕业设计项目
|
15天前
|
机器学习/深度学习 人工智能 算法
植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面
植物病害识别系统。本系统使用Python作为主要编程语言,通过收集水稻常见的四种叶片病害图片('细菌性叶枯病', '稻瘟病', '褐斑病', '稻瘟条纹病毒病')作为后面模型训练用到的数据集。然后使用TensorFlow搭建卷积神经网络算法模型,并进行多轮迭代训练,最后得到一个识别精度较高的算法模型,然后将其保存为h5格式的本地模型文件。再使用Django搭建Web网页平台操作界面,实现用户上传一张测试图片识别其名称。
66 21
植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面
|
6天前
|
算法 JavaScript 前端开发
第一个算法项目 | JS实现并查集迷宫算法Demo学习
本文是关于使用JavaScript实现并查集迷宫算法的中国象棋demo的学习记录,包括项目运行方法、知识点梳理、代码赏析以及相关CSS样式表文件的介绍。
第一个算法项目 | JS实现并查集迷宫算法Demo学习
|
15天前
|
机器学习/深度学习 人工智能 算法
鸟类识别系统Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+ResNet50算法模型+图像识别
鸟类识别系统。本系统采用Python作为主要开发语言,通过使用加利福利亚大学开源的200种鸟类图像作为数据集。使用TensorFlow搭建ResNet50卷积神经网络算法模型,然后进行模型的迭代训练,得到一个识别精度较高的模型,然后在保存为本地的H5格式文件。在使用Django开发Web网页端操作界面,实现用户上传一张鸟类图像,识别其名称。
60 12
鸟类识别系统Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+ResNet50算法模型+图像识别
|
15天前
|
机器学习/深度学习 算法 TensorFlow
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
交通标志识别系统。本系统使用Python作为主要编程语言,在交通标志图像识别功能实现中,基于TensorFlow搭建卷积神经网络算法模型,通过对收集到的58种常见的交通标志图像作为数据集,进行迭代训练最后得到一个识别精度较高的模型文件,然后保存为本地的h5格式文件。再使用Django开发Web网页端操作界面,实现用户上传一张交通标志图片,识别其名称。
44 6
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
|
11天前
|
机器学习/深度学习 人工智能 算法
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
文本分类识别系统。本系统使用Python作为主要开发语言,首先收集了10种中文文本数据集("体育类", "财经类", "房产类", "家居类", "教育类", "科技类", "时尚类", "时政类", "游戏类", "娱乐类"),然后基于TensorFlow搭建CNN卷积神经网络算法模型。通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型,并保存为本地的h5格式。然后使用Django开发Web网页端操作界面,实现用户上传一段文本识别其所属的类别。
23 1
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
|
2月前
|
存储 人工智能 自然语言处理
算法、系统和应用,三个视角全面读懂混合专家(MoE)
【8月更文挑战第17天】在AI领域,混合专家(MoE)模型以其独特结构成为推动大型语言模型发展的关键技术。MoE通过动态选择专家网络处理输入,实现条件计算。稀疏型MoE仅激活部分专家以减少计算负担;软MoE则加权合并专家输出提升模型稳定性。系统层面,MoE优化计算、通信与存储,利用并行化策略提高效率。在NLP、CV、推荐系统等领域展现强大应用潜力,但仍面临训练稳定性、可解释性等挑战。[论文链接: https://arxiv.org/pdf/2407.06204]
188 63
|
27天前
|
前端开发 搜索推荐 算法
中草药管理与推荐系统Python+Django网页界面+推荐算法+计算机课设系统+网站开发
中草药管理与推荐系统。本系统使用Python作为主要开发语言,前端使用HTML,CSS,BootStrap等技术和框架搭建前端界面,后端使用Django框架处理应用请求,使用Ajax等技术实现前后端的数据通信。实现了一个综合性的中草药管理与推荐平台。具体功能如下: - 系统分为普通用户和管理员两个角色 - 普通用户可以登录,注册、查看物品信息、收藏物品、发布评论、编辑个人信息、柱状图饼状图可视化物品信息、并依据用户注册时选择的标签进行推荐 和 根据用户对物品的评分 使用协同过滤推荐算法进行推荐 - 管理员可以在后台对用户和物品信息进行管理编辑
57 12
中草药管理与推荐系统Python+Django网页界面+推荐算法+计算机课设系统+网站开发
|
10天前
|
XML JavaScript 前端开发
学习react基础(1)_虚拟dom、diff算法、函数和class创建组件
本文介绍了React的核心概念,包括虚拟DOM、Diff算法以及如何通过函数和类创建React组件。
15 2
|
11天前
|
机器学习/深度学习 人工智能 算法
【果蔬识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
【果蔬识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台。果蔬识别系统,本系统使用Python作为主要开发语言,通过收集了12种常见的水果和蔬菜('土豆', '圣女果', '大白菜', '大葱', '梨', '胡萝卜', '芒果', '苹果', '西红柿', '韭菜', '香蕉', '黄瓜'),然后基于TensorFlow库搭建CNN卷积神经网络算法模型,然后对数据集进行训练,最后得到一个识别精度较高的算法模型,然后将其保存为h5格式的本地文件方便后期调用。再使用Django框架搭建Web网页平台操作界面,实现用户上传一张果蔬图片识别其名称。
31 0
【果蔬识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
下一篇
无影云桌面